{"version":3,"file":"245.6c31092fd947f390414c.js","mappings":"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","sources":["webpack://shopper-app/./node_modules/@wry/trie/lib/trie.esm.js","webpack://shopper-app/./node_modules/@wry/context/lib/context.esm.js","webpack://shopper-app/./node_modules/optimism/lib/bundle.esm.js","webpack://shopper-app/./node_modules/@apollo/client/cache/core/types/Cache.js","webpack://shopper-app/./node_modules/@apollo/client/cache/core/cache.js","webpack://shopper-app/./node_modules/@apollo/client/cache/core/types/common.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/policies.js","webpack://shopper-app/./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack://shopper-app/./node_modules/@apollo/client/core/LocalState.js","webpack://shopper-app/./node_modules/@apollo/client/core/QueryInfo.js","webpack://shopper-app/./node_modules/@apollo/client/core/QueryManager.js","webpack://shopper-app/./node_modules/@apollo/client/core/ApolloClient.js","webpack://shopper-app/./node_modules/@apollo/client/version.js","webpack://shopper-app/./node_modules/@apollo/client/core/Reobserver.js","webpack://shopper-app/./node_modules/@apollo/client/core/ObservableQuery.js","webpack://shopper-app/./node_modules/@apollo/client/core/index.js","webpack://shopper-app/./node_modules/@apollo/client/core/networkStatus.js","webpack://shopper-app/./node_modules/@apollo/client/errors/index.js","webpack://shopper-app/./node_modules/@apollo/client/link/core/ApolloLink.js","webpack://shopper-app/./node_modules/@apollo/client/link/core/concat.js","webpack://shopper-app/./node_modules/@apollo/client/link/core/empty.js","webpack://shopper-app/./node_modules/@apollo/client/link/core/execute.js","webpack://shopper-app/./node_modules/@apollo/client/link/core/from.js","webpack://shopper-app/./node_modules/@apollo/client/link/core/split.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/createHttpLink.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/checkFetcher.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/selectURI.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/createSignalIfSupported.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack://shopper-app/./node_modules/@apollo/client/link/http/HttpLink.js","webpack://shopper-app/./node_modules/@apollo/client/link/utils/fromError.js","webpack://shopper-app/./node_modules/@apollo/client/link/utils/throwServerError.js","webpack://shopper-app/./node_modules/@apollo/client/link/utils/validateOperation.js","webpack://shopper-app/./node_modules/@apollo/client/link/utils/createOperation.js","webpack://shopper-app/./node_modules/@apollo/client/link/utils/transformOperation.js","webpack://shopper-app/./node_modules/@apollo/client/node_modules/symbol-observable/es/ponyfill.js","webpack://shopper-app/./node_modules/@apollo/client/node_modules/symbol-observable/es/index.js","webpack://shopper-app/./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js","webpack://shopper-app/./node_modules/@apollo/client/react/context/ApolloContext.js","webpack://shopper-app/./node_modules/@apollo/client/react/context/ApolloConsumer.js","webpack://shopper-app/./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack://shopper-app/./node_modules/@apollo/client/react/data/OperationData.js","webpack://shopper-app/./node_modules/@apollo/client/react/data/SubscriptionData.js","webpack://shopper-app/./node_modules/@apollo/client/react/data/MutationData.js","webpack://shopper-app/./node_modules/@apollo/client/react/data/QueryData.js","webpack://shopper-app/./node_modules/@apollo/client/react/hooks/utils/useBaseQuery.js","webpack://shopper-app/./node_modules/@apollo/client/react/hooks/utils/useDeepMemo.js","webpack://shopper-app/./node_modules/@apollo/client/react/hooks/useLazyQuery.js","webpack://shopper-app/./node_modules/@apollo/client/react/hooks/useMutation.js","webpack://shopper-app/./node_modules/@apollo/client/react/hooks/useQuery.js","webpack://shopper-app/./node_modules/@apollo/client/react/parser/index.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/graphql/directives.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/filterInPlace.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/graphql/transform.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/observables/Observable.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/observables/iteration.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/observables/Concast.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/arrays.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/canUse.js","webpack://shopper-app/./node_modules/@apollo/client/utilities/common/compact.js","webpack://shopper-app/./node_modules/@intercom/messenger-js-sdk/dist/constants.js","webpack://shopper-app/./node_modules/@intercom/messenger-js-sdk/dist/index.js","webpack://shopper-app/./node_modules/@intercom/messenger-js-sdk/dist/instance-manager.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/baggage.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/tracing.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/span.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/transaction.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/idletransaction.js","webpack://shopper-app/./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/utils.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/errors.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/hubextensions.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/types.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/request.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/router.js","webpack://shopper-app/./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","webpack://shopper-app/./node_modules/@sentry/core/esm/constants.js","webpack://shopper-app/./node_modules/@sentry/core/esm/exports.js","webpack://shopper-app/./node_modules/@sentry/core/esm/hub.js","webpack://shopper-app/./node_modules/@sentry/core/esm/scope.js","webpack://shopper-app/./node_modules/@sentry/core/esm/session.js","webpack://shopper-app/./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","webpack://shopper-app/./node_modules/@sentry/core/esm/version.js","webpack://shopper-app/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://shopper-app/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://shopper-app/./node_modules/@sentry/core/esm/integration.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/dsn.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/normalize.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/memo.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/envelope.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/error.js","webpack://shopper-app/./node_modules/@sentry/core/esm/api.js","webpack://shopper-app/./node_modules/@sentry/core/esm/envelope.js","webpack://shopper-app/./node_modules/@sentry/core/esm/utils/prepareEvent.js","webpack://shopper-app/./node_modules/@sentry/core/esm/baseclient.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/helpers.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/severity.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/url.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/client.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/userfeedback.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/clientreport.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/aggregate-errors.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://shopper-app/./node_modules/@sentry/core/esm/transports/base.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://shopper-app/./node_modules/@sentry/browser/esm/sdk.js","webpack://shopper-app/./node_modules/@sentry/core/esm/sdk.js","webpack://shopper-app/./node_modules/@sentry/react/esm/sdk.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/browser.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/env.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/vendor/supportsHistory.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/instrument.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/is.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/logger.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/misc.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/node.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/object.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/string.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/supports.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/time.js","webpack://shopper-app/./node_modules/@sentry/utils/esm/worldwide.js","webpack://shopper-app/./node_modules/@sequra/telar/node_modules/classnames/index.js","webpack://shopper-app/./node_modules/@wry/equality/lib/equality.esm.js","webpack://shopper-app/./node_modules/classnames/index.js","webpack://shopper-app/./node_modules/copy-to-clipboard/index.js","webpack://shopper-app/./node_modules/decode-uri-component/index.js","webpack://shopper-app/./node_modules/fast-deep-equal/react.js","webpack://shopper-app/./node_modules/fast-json-stable-stringify/index.js","webpack://shopper-app/./node_modules/filter-obj/index.js","webpack://shopper-app/./node_modules/get-user-locale/dist/esm/index.js","webpack://shopper-app/./node_modules/graphql-tag/lib/index.js","webpack://shopper-app/./node_modules/graphql/error/GraphQLError.js","webpack://shopper-app/./node_modules/graphql/error/syntaxError.js","webpack://shopper-app/./node_modules/graphql/jsutils/defineToJSON.js","webpack://shopper-app/./node_modules/graphql/jsutils/defineToStringTag.js","webpack://shopper-app/./node_modules/graphql/jsutils/devAssert.js","webpack://shopper-app/./node_modules/graphql/jsutils/inspect.js","webpack://shopper-app/./node_modules/graphql/jsutils/isObjectLike.js","webpack://shopper-app/./node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js","webpack://shopper-app/./node_modules/graphql/language/blockString.js","webpack://shopper-app/./node_modules/graphql/language/directiveLocation.js","webpack://shopper-app/./node_modules/graphql/language/index.js","webpack://shopper-app/./node_modules/graphql/language/kinds.js","webpack://shopper-app/./node_modules/graphql/language/lexer.js","webpack://shopper-app/./node_modules/graphql/language/location.js","webpack://shopper-app/./node_modules/graphql/language/parser.js","webpack://shopper-app/./node_modules/graphql/language/predicates.js","webpack://shopper-app/./node_modules/graphql/language/printLocation.js","webpack://shopper-app/./node_modules/graphql/language/printer.js","webpack://shopper-app/./node_modules/graphql/language/source.js","webpack://shopper-app/./node_modules/graphql/language/tokenKind.js","webpack://shopper-app/./node_modules/graphql/language/visitor.js","webpack://shopper-app/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://shopper-app/./node_modules/value-equal/esm/value-equal.js","webpack://shopper-app/./node_modules/history/esm/history.js","webpack://shopper-app/./node_modules/ibantools/jsnext/ibantools.js","webpack://shopper-app/./node_modules/ismobilejs/esm/isMobile.js","webpack://shopper-app/./node_modules/lodash.once/index.js","webpack://shopper-app/./node_modules/mixpanel-browser/dist/mixpanel.cjs.js","webpack://shopper-app/./node_modules/polished/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://shopper-app/./node_modules/polished/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://shopper-app/./node_modules/polished/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://shopper-app/./node_modules/polished/node_modules/@babel/runtime/helpers/esm/construct.js","webpack://shopper-app/./node_modules/polished/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://shopper-app/./node_modules/polished/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://shopper-app/./node_modules/polished/dist/polished.esm.js","webpack://shopper-app/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://shopper-app/./node_modules/prop-types/index.js","webpack://shopper-app/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://shopper-app/./node_modules/query-string/index.js","webpack://shopper-app/./node_modules/react-circular-progressbar/dist/index.esm.js","webpack://shopper-app/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://shopper-app/./node_modules/react-dom/client.js","webpack://shopper-app/./node_modules/react-dom/index.js","webpack://shopper-app/./node_modules/react-ga4/dist/format.js","webpack://shopper-app/./node_modules/react-ga4/dist/ga4.js","webpack://shopper-app/./node_modules/react-ga4/dist/gtag.js","webpack://shopper-app/./node_modules/react-ga4/dist/index.js","webpack://shopper-app/./node_modules/react-hotjar/index.js","webpack://shopper-app/./node_modules/react-hotjar/src/react-hotjar.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/message.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/number.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/relativeTime.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/dateTime.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/plural.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/list.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/displayName.js","webpack://shopper-app/./node_modules/@formatjs/intl/lib/src/create-intl.js","webpack://shopper-app/./node_modules/react-intl/lib/src/components/provider.js","webpack://shopper-app/./node_modules/react-jss/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/react-jss/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://shopper-app/./node_modules/react-jss/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://shopper-app/./node_modules/react-jss/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://shopper-app/./node_modules/theming/dist/theming.esm.js","webpack://shopper-app/./node_modules/jss/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/is-in-browser/dist/module.js","webpack://shopper-app/./node_modules/tiny-warning/dist/tiny-warning.esm.js","webpack://shopper-app/./node_modules/jss/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://shopper-app/./node_modules/jss/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://shopper-app/./node_modules/jss/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://shopper-app/./node_modules/jss/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://shopper-app/./node_modules/jss/dist/jss.esm.js","webpack://shopper-app/./node_modules/jss/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://shopper-app/./node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","webpack://shopper-app/./node_modules/jss-plugin-rule-value-observable/dist/jss-plugin-rule-value-observable.esm.js","webpack://shopper-app/./node_modules/jss-plugin-template/dist/jss-plugin-template.esm.js","webpack://shopper-app/./node_modules/jss-plugin-global/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","webpack://shopper-app/./node_modules/jss-plugin-extend/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/jss-plugin-extend/dist/jss-plugin-extend.esm.js","webpack://shopper-app/./node_modules/jss-plugin-nested/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","webpack://shopper-app/./node_modules/jss-plugin-compose/dist/jss-plugin-compose.esm.js","webpack://shopper-app/./node_modules/hyphenate-style-name/index.js","webpack://shopper-app/./node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","webpack://shopper-app/./node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","webpack://shopper-app/./node_modules/jss-plugin-expand/dist/jss-plugin-expand.esm.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://shopper-app/./node_modules/css-vendor/dist/css-vendor.esm.js","webpack://shopper-app/./node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","webpack://shopper-app/./node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","webpack://shopper-app/./node_modules/jss-preset-default/dist/jss-preset-default.esm.js","webpack://shopper-app/./node_modules/shallow-equal/dist/index.esm.js","webpack://shopper-app/./node_modules/react-jss/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://shopper-app/./node_modules/react-jss/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack://shopper-app/./node_modules/css-jss/dist/css-jss.esm.js","webpack://shopper-app/./node_modules/react-jss/dist/react-jss.esm.js","webpack://shopper-app/./node_modules/react-jss/node_modules/prop-types/factoryWithThrowingShims.js","webpack://shopper-app/./node_modules/react-jss/node_modules/prop-types/index.js","webpack://shopper-app/./node_modules/react-jss/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://shopper-app/./node_modules/react-masonry-css/dist/react-masonry-css.module.js","webpack://shopper-app/./node_modules/react-router-dom/esm/react-router-dom.js","webpack://shopper-app/./node_modules/react-router/node_modules/mini-create-react-context/dist/esm/index.js","webpack://shopper-app/./node_modules/react-router/esm/react-router.js","webpack://shopper-app/./node_modules/react-router/node_modules/isarray/index.js","webpack://shopper-app/./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack://shopper-app/./node_modules/react-router/node_modules/prop-types/factoryWithThrowingShims.js","webpack://shopper-app/./node_modules/react-router/node_modules/prop-types/index.js","webpack://shopper-app/./node_modules/react-router/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://shopper-app/./node_modules/react-spinners/BarLoader.js","webpack://shopper-app/./node_modules/react-spinners/BeatLoader.js","webpack://shopper-app/./node_modules/react-spinners/BounceLoader.js","webpack://shopper-app/./node_modules/react-spinners/CircleLoader.js","webpack://shopper-app/./node_modules/react-spinners/ClimbingBoxLoader.js","webpack://shopper-app/./node_modules/react-spinners/ClipLoader.js","webpack://shopper-app/./node_modules/react-spinners/ClockLoader.js","webpack://shopper-app/./node_modules/react-spinners/DotLoader.js","webpack://shopper-app/./node_modules/react-spinners/FadeLoader.js","webpack://shopper-app/./node_modules/react-spinners/GridLoader.js","webpack://shopper-app/./node_modules/react-spinners/HashLoader.js","webpack://shopper-app/./node_modules/react-spinners/MoonLoader.js","webpack://shopper-app/./node_modules/react-spinners/PacmanLoader.js","webpack://shopper-app/./node_modules/react-spinners/PropagateLoader.js","webpack://shopper-app/./node_modules/react-spinners/PulseLoader.js","webpack://shopper-app/./node_modules/react-spinners/RingLoader.js","webpack://shopper-app/./node_modules/react-spinners/RiseLoader.js","webpack://shopper-app/./node_modules/react-spinners/RotateLoader.js","webpack://shopper-app/./node_modules/react-spinners/ScaleLoader.js","webpack://shopper-app/./node_modules/react-spinners/SkewLoader.js","webpack://shopper-app/./node_modules/react-spinners/SquareLoader.js","webpack://shopper-app/./node_modules/react-spinners/SyncLoader.js","webpack://shopper-app/./node_modules/react-spinners/helpers/colors.js","webpack://shopper-app/./node_modules/react-spinners/helpers/index.js","webpack://shopper-app/./node_modules/react-spinners/helpers/proptypes.js","webpack://shopper-app/./node_modules/react-spinners/helpers/unitConverter.js","webpack://shopper-app/./node_modules/react-spinners/index.js","webpack://shopper-app/./node_modules/react-spinners/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://shopper-app/./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://shopper-app/./node_modules/react-spinners/node_modules/@emotion/core/dist/emotion-element-57a3a7a3.browser.esm.js","webpack://shopper-app/./node_modules/@emotion/css/dist/css.browser.esm.js","webpack://shopper-app/./node_modules/react-spinners/node_modules/@emotion/core/dist/core.browser.esm.js","webpack://shopper-app/./node_modules/react-spinners/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://shopper-app/./node_modules/react-spring/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/react-spring/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://shopper-app/./node_modules/react-spring/web.js","webpack://shopper-app/./node_modules/react-toggle/dist/component/check.js","webpack://shopper-app/./node_modules/react-toggle/dist/component/index.js","webpack://shopper-app/./node_modules/react-toggle/dist/component/util.js","webpack://shopper-app/./node_modules/react-toggle/dist/component/x.js","webpack://shopper-app/./node_modules/react-toggle/node_modules/classnames/index.js","webpack://shopper-app/./node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/rng.js","webpack://shopper-app/./node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/bytesToUuid.js","webpack://shopper-app/./node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/v4.js","webpack://shopper-app/./node_modules/react-tooltip/dist/index.es.js","webpack://shopper-app/./node_modules/react-use/esm/useCopyToClipboard.js","webpack://shopper-app/./node_modules/react-use/esm/useMountedState.js","webpack://shopper-app/./node_modules/react-use/esm/useEffectOnce.js","webpack://shopper-app/./node_modules/react-use/esm/useMedia.js","webpack://shopper-app/./node_modules/react-use/esm/useMount.js","webpack://shopper-app/./node_modules/react-use/esm/useSetState.js","webpack://shopper-app/./node_modules/react-use/esm/useUnmount.js","webpack://shopper-app/./node_modules/react-use/esm/useRafState.js","webpack://shopper-app/./node_modules/react-use/esm/useWindowSize.js","webpack://shopper-app/./node_modules/react-use/esm/util.js","webpack://shopper-app/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://shopper-app/./node_modules/scheduler/index.js","webpack://shopper-app/./node_modules/split-on-first/index.js","webpack://shopper-app/./node_modules/store/dist/store.legacy.js","webpack://shopper-app/./node_modules/store/plugins/json2.js","webpack://shopper-app/./node_modules/store/plugins/lib/json2.js","webpack://shopper-app/./node_modules/store/src/store-engine.js","webpack://shopper-app/./node_modules/store/src/util.js","webpack://shopper-app/./node_modules/store/storages/all.js","webpack://shopper-app/./node_modules/store/storages/cookieStorage.js","webpack://shopper-app/./node_modules/store/storages/localStorage.js","webpack://shopper-app/./node_modules/store/storages/memoryStorage.js","webpack://shopper-app/./node_modules/store/storages/oldFF-globalStorage.js","webpack://shopper-app/./node_modules/store/storages/oldIE-userDataStorage.js","webpack://shopper-app/./node_modules/store/storages/sessionStorage.js","webpack://shopper-app/./node_modules/strict-uri-encode/index.js","webpack://shopper-app/./node_modules/symbol-observable/es/index.js","webpack://shopper-app/./node_modules/symbol-observable/es/ponyfill.js","webpack://shopper-app/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://shopper-app/./node_modules/toggle-selection/index.js","webpack://shopper-app/./node_modules/ts-invariant/lib/invariant.esm.js","webpack://shopper-app/./node_modules/zen-observable/index.js","webpack://shopper-app/./node_modules/zen-observable/lib/Observable.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://shopper-app/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://shopper-app/./node_modules/@sequra/telar/build/hooks/useWindowSize/index.js","webpack://shopper-app/./node_modules/@sequra/telar/build/hooks/useScroll/constants.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Banner/Banner.module.css.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Banner/constants.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Banner/Banner.js","webpack://shopper-app/./node_modules/@sequra/telar/build/hooks/useScroll/index.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Button/Button.module.css.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Button/Button.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Chip/Chip.module.css.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Chip/Chip.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Link/Link.module.css.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/Link/Link.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/TextField/IconEye.svg.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/TextField/TextField.module.css.js","webpack://shopper-app/./node_modules/@sequra/telar/build/components/TextField/TextField.js","webpack://shopper-app/./node_modules/@sequra/telar/build/node_modules/style-inject/dist/style-inject.es.js","webpack://shopper-app/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://shopper-app/./node_modules/luxon/src/errors.js","webpack://shopper-app/./node_modules/luxon/src/impl/formats.js","webpack://shopper-app/./node_modules/luxon/src/zone.js","webpack://shopper-app/./node_modules/luxon/src/zones/systemZone.js","webpack://shopper-app/./node_modules/luxon/src/zones/IANAZone.js","webpack://shopper-app/./node_modules/luxon/src/impl/locale.js","webpack://shopper-app/./node_modules/luxon/src/impl/english.js","webpack://shopper-app/./node_modules/luxon/src/zones/fixedOffsetZone.js","webpack://shopper-app/./node_modules/luxon/src/zones/invalidZone.js","webpack://shopper-app/./node_modules/luxon/src/impl/zoneUtil.js","webpack://shopper-app/./node_modules/luxon/src/impl/util.js","webpack://shopper-app/./node_modules/luxon/src/settings.js","webpack://shopper-app/./node_modules/luxon/src/impl/formatter.js","webpack://shopper-app/./node_modules/luxon/src/impl/invalid.js","webpack://shopper-app/./node_modules/luxon/src/impl/regexParser.js","webpack://shopper-app/./node_modules/luxon/src/duration.js","webpack://shopper-app/./node_modules/luxon/src/interval.js","webpack://shopper-app/./node_modules/luxon/src/info.js","webpack://shopper-app/./node_modules/luxon/src/impl/diff.js","webpack://shopper-app/./node_modules/luxon/src/impl/digits.js","webpack://shopper-app/./node_modules/luxon/src/impl/tokenParser.js","webpack://shopper-app/./node_modules/luxon/src/impl/conversions.js","webpack://shopper-app/./node_modules/luxon/src/datetime.js"],"sourcesContent":["// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n function Trie(weakness, makeData) {\r\n if (weakness === void 0) { weakness = true; }\r\n if (makeData === void 0) { makeData = defaultMakeData; }\r\n this.weakness = weakness;\r\n this.makeData = makeData;\r\n }\r\n Trie.prototype.lookup = function () {\r\n var array = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n array[_i] = arguments[_i];\r\n }\r\n return this.lookupArray(array);\r\n };\r\n Trie.prototype.lookupArray = function (array) {\r\n var node = this;\r\n forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n return node.data || (node.data = this.makeData(slice.call(array)));\r\n };\r\n Trie.prototype.getChildTrie = function (key) {\r\n var map = this.weakness && isObjRef(key)\r\n ? this.weak || (this.weak = new WeakMap())\r\n : this.strong || (this.strong = new Map());\r\n var child = map.get(key);\r\n if (!child)\r\n map.set(key, child = new Trie(this.weakness, this.makeData));\r\n return child;\r\n };\r\n return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n switch (typeof value) {\r\n case \"object\":\r\n if (value === null)\r\n break;\r\n // Fall through to return true...\r\n case \"function\":\r\n return true;\r\n }\r\n return false;\r\n}\n\nexport { Trie };\n//# sourceMappingURL=trie.esm.js.map\n","// This currentContext variable will only be used if the makeSlotClass\r\n// function is called, which happens only if this is the first copy of the\r\n// @wry/context package to be imported.\r\nvar currentContext = null;\r\n// This unique internal object is used to denote the absence of a value\r\n// for a given Slot, and is never exposed to outside code.\r\nvar MISSING_VALUE = {};\r\nvar idCounter = 1;\r\n// Although we can't do anything about the cost of duplicated code from\r\n// accidentally bundling multiple copies of the @wry/context package, we can\r\n// avoid creating the Slot class more than once using makeSlotClass.\r\nvar makeSlotClass = function () { return /** @class */ (function () {\r\n function Slot() {\r\n // If you have a Slot object, you can find out its slot.id, but you cannot\r\n // guess the slot.id of a Slot you don't have access to, thanks to the\r\n // randomized suffix.\r\n this.id = [\r\n \"slot\",\r\n idCounter++,\r\n Date.now(),\r\n Math.random().toString(36).slice(2),\r\n ].join(\":\");\r\n }\r\n Slot.prototype.hasValue = function () {\r\n for (var context_1 = currentContext; context_1; context_1 = context_1.parent) {\r\n // We use the Slot object iself as a key to its value, which means the\r\n // value cannot be obtained without a reference to the Slot object.\r\n if (this.id in context_1.slots) {\r\n var value = context_1.slots[this.id];\r\n if (value === MISSING_VALUE)\r\n break;\r\n if (context_1 !== currentContext) {\r\n // Cache the value in currentContext.slots so the next lookup will\r\n // be faster. This caching is safe because the tree of contexts and\r\n // the values of the slots are logically immutable.\r\n currentContext.slots[this.id] = value;\r\n }\r\n return true;\r\n }\r\n }\r\n if (currentContext) {\r\n // If a value was not found for this Slot, it's never going to be found\r\n // no matter how many times we look it up, so we might as well cache\r\n // the absence of the value, too.\r\n currentContext.slots[this.id] = MISSING_VALUE;\r\n }\r\n return false;\r\n };\r\n Slot.prototype.getValue = function () {\r\n if (this.hasValue()) {\r\n return currentContext.slots[this.id];\r\n }\r\n };\r\n Slot.prototype.withValue = function (value, callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n var _a;\r\n var slots = (_a = {\r\n __proto__: null\r\n },\r\n _a[this.id] = value,\r\n _a);\r\n var parent = currentContext;\r\n currentContext = { parent: parent, slots: slots };\r\n try {\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = parent;\r\n }\r\n };\r\n // Capture the current context and wrap a callback function so that it\r\n // reestablishes the captured context when called.\r\n Slot.bind = function (callback) {\r\n var context = currentContext;\r\n return function () {\r\n var saved = currentContext;\r\n try {\r\n currentContext = context;\r\n return callback.apply(this, arguments);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n };\r\n };\r\n // Immediately run a callback function without any captured context.\r\n Slot.noContext = function (callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n if (currentContext) {\r\n var saved = currentContext;\r\n try {\r\n currentContext = null;\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n }\r\n else {\r\n return callback.apply(thisArg, args);\r\n }\r\n };\r\n return Slot;\r\n}()); };\r\n// We store a single global implementation of the Slot class as a permanent\r\n// non-enumerable symbol property of the Array constructor. This obfuscation\r\n// does nothing to prevent access to the Slot class, but at least it ensures\r\n// the implementation (i.e. currentContext) cannot be tampered with, and all\r\n// copies of the @wry/context package (hopefully just one) will share the\r\n// same Slot implementation. Since the first copy of the @wry/context package\r\n// to be imported wins, this technique imposes a very high cost for any\r\n// future breaking changes to the Slot class.\r\nvar globalKey = \"@wry/context:Slot\";\r\nvar host = Array;\r\nvar Slot = host[globalKey] || function () {\r\n var Slot = makeSlotClass();\r\n try {\r\n Object.defineProperty(host, globalKey, {\r\n value: host[globalKey] = Slot,\r\n enumerable: false,\r\n writable: false,\r\n configurable: false,\r\n });\r\n }\r\n finally {\r\n return Slot;\r\n }\r\n}();\n\nvar bind = Slot.bind, noContext = Slot.noContext;\r\nfunction setTimeoutWithContext(callback, delay) {\r\n return setTimeout(bind(callback), delay);\r\n}\r\n// Turn any generator function into an async function (using yield instead\r\n// of await), with context automatically preserved across yields.\r\nfunction asyncFromGen(genFn) {\r\n return function () {\r\n var gen = genFn.apply(this, arguments);\r\n var boundNext = bind(gen.next);\r\n var boundThrow = bind(gen.throw);\r\n return new Promise(function (resolve, reject) {\r\n function invoke(method, argument) {\r\n try {\r\n var result = method.call(gen, argument);\r\n }\r\n catch (error) {\r\n return reject(error);\r\n }\r\n var next = result.done ? resolve : invokeNext;\r\n if (isPromiseLike(result.value)) {\r\n result.value.then(next, result.done ? reject : invokeThrow);\r\n }\r\n else {\r\n next(result.value);\r\n }\r\n }\r\n var invokeNext = function (value) { return invoke(boundNext, value); };\r\n var invokeThrow = function (error) { return invoke(boundThrow, error); };\r\n invokeNext();\r\n });\r\n };\r\n}\r\nfunction isPromiseLike(value) {\r\n return value && typeof value.then === \"function\";\r\n}\r\n// If you use the fibers npm package to implement coroutines in Node.js,\r\n// you should call this function at least once to ensure context management\r\n// remains coherent across any yields.\r\nvar wrappedFibers = [];\r\nfunction wrapYieldingFiberMethods(Fiber) {\r\n // There can be only one implementation of Fiber per process, so this array\r\n // should never grow longer than one element.\r\n if (wrappedFibers.indexOf(Fiber) < 0) {\r\n var wrap = function (obj, method) {\r\n var fn = obj[method];\r\n obj[method] = function () {\r\n return noContext(fn, arguments, this);\r\n };\r\n };\r\n // These methods can yield, according to\r\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\r\n wrap(Fiber, \"yield\");\r\n wrap(Fiber.prototype, \"run\");\r\n wrap(Fiber.prototype, \"throwInto\");\r\n wrappedFibers.push(Fiber);\r\n }\r\n return Fiber;\r\n}\n\nexport { Slot, asyncFromGen, bind, noContext, setTimeoutWithContext as setTimeout, wrapYieldingFiberMethods };\n//# sourceMappingURL=context.esm.js.map\n","import { Trie } from '@wry/trie';\nexport { Trie as KeyTrie } from '@wry/trie';\nimport { Slot } from '@wry/context';\nexport { asyncFromGen, bind as bindContext, noContext, setTimeout } from '@wry/context';\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n function Cache(max, dispose) {\r\n if (max === void 0) { max = Infinity; }\r\n if (dispose === void 0) { dispose = defaultDispose; }\r\n this.max = max;\r\n this.dispose = dispose;\r\n this.map = new Map();\r\n this.newest = null;\r\n this.oldest = null;\r\n }\r\n Cache.prototype.has = function (key) {\r\n return this.map.has(key);\r\n };\r\n Cache.prototype.get = function (key) {\r\n var node = this.getNode(key);\r\n return node && node.value;\r\n };\r\n Cache.prototype.getNode = function (key) {\r\n var node = this.map.get(key);\r\n if (node && node !== this.newest) {\r\n var older = node.older, newer = node.newer;\r\n if (newer) {\r\n newer.older = older;\r\n }\r\n if (older) {\r\n older.newer = newer;\r\n }\r\n node.older = this.newest;\r\n node.older.newer = node;\r\n node.newer = null;\r\n this.newest = node;\r\n if (node === this.oldest) {\r\n this.oldest = newer;\r\n }\r\n }\r\n return node;\r\n };\r\n Cache.prototype.set = function (key, value) {\r\n var node = this.getNode(key);\r\n if (node) {\r\n return node.value = value;\r\n }\r\n node = {\r\n key: key,\r\n value: value,\r\n newer: null,\r\n older: this.newest\r\n };\r\n if (this.newest) {\r\n this.newest.newer = node;\r\n }\r\n this.newest = node;\r\n this.oldest = this.oldest || node;\r\n this.map.set(key, node);\r\n return node.value;\r\n };\r\n Cache.prototype.clean = function () {\r\n while (this.oldest && this.map.size > this.max) {\r\n this.delete(this.oldest.key);\r\n }\r\n };\r\n Cache.prototype.delete = function (key) {\r\n var node = this.map.get(key);\r\n if (node) {\r\n if (node === this.newest) {\r\n this.newest = node.older;\r\n }\r\n if (node === this.oldest) {\r\n this.oldest = node.newer;\r\n }\r\n if (node.newer) {\r\n node.newer.older = node.older;\r\n }\r\n if (node.older) {\r\n node.older.newer = node.newer;\r\n }\r\n this.map.delete(key);\r\n this.dispose(node.value, key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return Cache;\r\n}());\n\nvar parentEntrySlot = new Slot();\n\nfunction maybeUnsubscribe(entryOrDep) {\r\n var unsubscribe = entryOrDep.unsubscribe;\r\n if (typeof unsubscribe === \"function\") {\r\n entryOrDep.unsubscribe = void 0;\r\n unsubscribe();\r\n }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n if (!condition) {\r\n throw new Error(optionalMessage || \"assertion failure\");\r\n }\r\n}\r\nfunction valueIs(a, b) {\r\n var len = a.length;\r\n return (\r\n // Unknown values are not equal to each other.\r\n len > 0 &&\r\n // Both values must be ordinary (or both exceptional) to be equal.\r\n len === b.length &&\r\n // The underlying value or exception must be the same.\r\n a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n switch (value.length) {\r\n case 0: throw new Error(\"unknown value\");\r\n case 1: return value[0];\r\n case 2: throw value[1];\r\n }\r\n}\r\nfunction valueCopy(value) {\r\n return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n function Entry(fn) {\r\n this.fn = fn;\r\n this.parents = new Set();\r\n this.childValues = new Map();\r\n // When this Entry has children that are dirty, this property becomes\r\n // a Set containing other Entry objects, borrowed from emptySetPool.\r\n // When the set becomes empty, it gets recycled back to emptySetPool.\r\n this.dirtyChildren = null;\r\n this.dirty = true;\r\n this.recomputing = false;\r\n this.value = [];\r\n this.deps = null;\r\n ++Entry.count;\r\n }\r\n Entry.prototype.peek = function () {\r\n if (this.value.length === 1 && !mightBeDirty(this)) {\r\n return this.value[0];\r\n }\r\n };\r\n // This is the most important method of the Entry API, because it\r\n // determines whether the cached this.value can be returned immediately,\r\n // or must be recomputed. The overall performance of the caching system\r\n // depends on the truth of the following observations: (1) this.dirty is\r\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n // (3) valueGet(this.value) is usually returned without recomputation.\r\n Entry.prototype.recompute = function (args) {\r\n assert(!this.recomputing, \"already recomputing\");\r\n rememberParent(this);\r\n return mightBeDirty(this)\r\n ? reallyRecompute(this, args)\r\n : valueGet(this.value);\r\n };\r\n Entry.prototype.setDirty = function () {\r\n if (this.dirty)\r\n return;\r\n this.dirty = true;\r\n this.value.length = 0;\r\n reportDirty(this);\r\n forgetChildren(this);\r\n // We can go ahead and unsubscribe here, since any further dirty\r\n // notifications we receive will be redundant, and unsubscribing may\r\n // free up some resources, e.g. file watchers.\r\n maybeUnsubscribe(this);\r\n };\r\n Entry.prototype.dispose = function () {\r\n var _this = this;\r\n forgetChildren(this);\r\n maybeUnsubscribe(this);\r\n // Because this entry has been kicked out of the cache (in index.js),\r\n // we've lost the ability to find out if/when this entry becomes dirty,\r\n // whether that happens through a subscription, because of a direct call\r\n // to entry.setDirty(), or because one of its children becomes dirty.\r\n // Because of this loss of future information, we have to assume the\r\n // worst (that this entry might have become dirty very soon), so we must\r\n // immediately mark this entry's parents as dirty. Normally we could\r\n // just call entry.setDirty() rather than calling parent.setDirty() for\r\n // each parent, but that would leave this entry in parent.childValues\r\n // and parent.dirtyChildren, which would prevent the child from being\r\n // truly forgotten.\r\n this.parents.forEach(function (parent) {\r\n parent.setDirty();\r\n forgetChild(parent, _this);\r\n });\r\n };\r\n Entry.prototype.dependOn = function (dep) {\r\n dep.add(this);\r\n if (!this.deps) {\r\n this.deps = emptySetPool.pop() || new Set();\r\n }\r\n this.deps.add(dep);\r\n };\r\n Entry.prototype.forgetDeps = function () {\r\n var _this = this;\r\n if (this.deps) {\r\n this.deps.forEach(function (dep) { return dep.delete(_this); });\r\n this.deps.clear();\r\n emptySetPool.push(this.deps);\r\n this.deps = null;\r\n }\r\n };\r\n Entry.count = 0;\r\n return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n child.parents.add(parent);\r\n if (!parent.childValues.has(child)) {\r\n parent.childValues.set(child, []);\r\n }\r\n if (mightBeDirty(child)) {\r\n reportDirtyChild(parent, child);\r\n }\r\n else {\r\n reportCleanChild(parent, child);\r\n }\r\n return parent;\r\n }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n forgetChildren(entry);\r\n // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n if (maybeSubscribe(entry, args)) {\r\n // If we successfully recomputed entry.value and did not fail to\r\n // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n setClean(entry);\r\n }\r\n return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n entry.recomputing = true;\r\n // Set entry.value as unknown.\r\n entry.value.length = 0;\r\n try {\r\n // If entry.fn succeeds, entry.value will become a normal Value.\r\n entry.value[0] = entry.fn.apply(null, args);\r\n }\r\n catch (e) {\r\n // If entry.fn throws, entry.value will become exceptional.\r\n entry.value[1] = e;\r\n }\r\n // Either way, this line is always reached.\r\n entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n entry.dirty = false;\r\n if (mightBeDirty(entry)) {\r\n // This Entry may still have dirty children, in which case we can't\r\n // let our parents know we're clean just yet.\r\n return;\r\n }\r\n reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n child.parents.forEach(function (parent) { return reportDirtyChild(parent, child); });\r\n}\r\nfunction reportClean(child) {\r\n child.parents.forEach(function (parent) { return reportCleanChild(parent, child); });\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n // Must have called rememberParent(child) before calling\r\n // reportDirtyChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(mightBeDirty(child));\r\n if (!parent.dirtyChildren) {\r\n parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n }\r\n else if (parent.dirtyChildren.has(child)) {\r\n // If we already know this child is dirty, then we must have already\r\n // informed our own parents that we are dirty, so we can terminate\r\n // the recursion early.\r\n return;\r\n }\r\n parent.dirtyChildren.add(child);\r\n reportDirty(parent);\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n // Must have called rememberChild(child) before calling\r\n // reportCleanChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(!mightBeDirty(child));\r\n var childValue = parent.childValues.get(child);\r\n if (childValue.length === 0) {\r\n parent.childValues.set(child, valueCopy(child.value));\r\n }\r\n else if (!valueIs(childValue, child.value)) {\r\n parent.setDirty();\r\n }\r\n removeDirtyChild(parent, child);\r\n if (mightBeDirty(parent)) {\r\n return;\r\n }\r\n reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n var dc = parent.dirtyChildren;\r\n if (dc) {\r\n dc.delete(child);\r\n if (dc.size === 0) {\r\n if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n emptySetPool.push(dc);\r\n }\r\n parent.dirtyChildren = null;\r\n }\r\n }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n if (parent.childValues.size > 0) {\r\n parent.childValues.forEach(function (_value, child) {\r\n forgetChild(parent, child);\r\n });\r\n }\r\n // Remove this parent Entry from any sets to which it was added by the\r\n // addToSet method.\r\n parent.forgetDeps();\r\n // After we forget all our children, this.dirtyChildren must be empty\r\n // and therefore must have been reset to null.\r\n assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n child.parents.delete(parent);\r\n parent.childValues.delete(child);\r\n removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n if (typeof entry.subscribe === \"function\") {\r\n try {\r\n maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n entry.unsubscribe = entry.subscribe.apply(null, args);\r\n }\r\n catch (e) {\r\n // If this Entry has a subscribe function and it threw an exception\r\n // (or an unsubscribe function it previously returned now throws),\r\n // return false to indicate that we were not able to subscribe (or\r\n // unsubscribe), and this Entry should remain dirty.\r\n entry.setDirty();\r\n return false;\r\n }\r\n }\r\n // Returning true indicates either that there was no entry.subscribe\r\n // function or that it succeeded.\r\n return true;\r\n}\n\nfunction dep(options) {\r\n var depsByKey = new Map();\r\n var subscribe = options && options.subscribe;\r\n function depend(key) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n var dep_1 = depsByKey.get(key);\r\n if (!dep_1) {\r\n depsByKey.set(key, dep_1 = new Set);\r\n }\r\n parent.dependOn(dep_1);\r\n if (typeof subscribe === \"function\") {\r\n maybeUnsubscribe(dep_1);\r\n dep_1.unsubscribe = subscribe(key);\r\n }\r\n }\r\n }\r\n depend.dirty = function dirty(key) {\r\n var dep = depsByKey.get(key);\r\n if (dep) {\r\n dep.forEach(function (entry) { return entry.setDirty(); });\r\n depsByKey.delete(key);\r\n maybeUnsubscribe(dep);\r\n }\r\n };\r\n return depend;\r\n}\n\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar keyTrie = new Trie(typeof WeakMap === \"function\");\r\nfunction defaultMakeCacheKey() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return keyTrie.lookupArray(args);\r\n}\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n if (options === void 0) { options = Object.create(null); }\r\n var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n var keyArgs = options.keyArgs;\r\n var makeCacheKey = options.makeCacheKey || defaultMakeCacheKey;\r\n function optimistic() {\r\n var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n if (key === void 0) {\r\n return originalFunction.apply(null, arguments);\r\n }\r\n var entry = cache.get(key);\r\n if (!entry) {\r\n cache.set(key, entry = new Entry(originalFunction));\r\n entry.subscribe = options.subscribe;\r\n }\r\n var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n // Move this entry to the front of the least-recently used queue,\r\n // since we just finished computing its value.\r\n cache.set(key, entry);\r\n caches.add(cache);\r\n // Clean up any excess entries in the cache, but only if there is no\r\n // active parent entry, meaning we're not in the middle of a larger\r\n // computation that might be flummoxed by the cleaning.\r\n if (!parentEntrySlot.hasValue()) {\r\n caches.forEach(function (cache) { return cache.clean(); });\r\n caches.clear();\r\n }\r\n return value;\r\n }\r\n function lookup() {\r\n var key = makeCacheKey.apply(null, arguments);\r\n if (key !== void 0) {\r\n return cache.get(key);\r\n }\r\n }\r\n optimistic.dirty = function () {\r\n var entry = lookup.apply(null, arguments);\r\n if (entry) {\r\n entry.setDirty();\r\n }\r\n };\r\n optimistic.peek = function () {\r\n var entry = lookup.apply(null, arguments);\r\n if (entry) {\r\n return entry.peek();\r\n }\r\n };\r\n optimistic.forget = function () {\r\n var key = makeCacheKey.apply(null, arguments);\r\n return key !== void 0 && cache.delete(key);\r\n };\r\n return optimistic;\r\n}\n\nexport { defaultMakeCacheKey, dep, wrap };\n//# sourceMappingURL=bundle.esm.js.map\n","export var Cache;\n(function (Cache) {\n})(Cache || (Cache = {}));\n//# sourceMappingURL=Cache.js.map","import { wrap } from 'optimism';\nimport { getFragmentQueryDocument, } from \"../../utilities/index.js\";\nvar ApolloCache = (function () {\n function ApolloCache() {\n this.getFragmentDoc = wrap(getFragmentQueryDocument);\n }\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read({\n rootId: options.id || 'ROOT_QUERY',\n query: options.query,\n variables: options.variables,\n returnPartialData: options.returnPartialData,\n optimistic: optimistic,\n });\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read({\n query: this.getFragmentDoc(options.fragment, options.fragmentName),\n variables: options.variables,\n rootId: options.id,\n returnPartialData: options.returnPartialData,\n optimistic: optimistic,\n });\n };\n ApolloCache.prototype.writeQuery = function (options) {\n return this.write({\n dataId: options.id || 'ROOT_QUERY',\n result: options.data,\n query: options.query,\n variables: options.variables,\n broadcast: options.broadcast,\n });\n };\n ApolloCache.prototype.writeFragment = function (options) {\n return this.write({\n dataId: options.id,\n result: options.data,\n variables: options.variables,\n query: this.getFragmentDoc(options.fragment, options.fragmentName),\n broadcast: options.broadcast,\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\n//# sourceMappingURL=cache.js.map","var MissingFieldError = (function () {\n function MissingFieldError(message, path, query, clientOnly, variables) {\n this.message = message;\n this.path = path;\n this.query = query;\n this.clientOnly = clientOnly;\n this.variables = variables;\n }\n return MissingFieldError;\n}());\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference)\n ? store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (result && typeof result === \"object\") {\n return Array.isArray(result)\n ? result.every(function (item) { return selectionSetMatchesResult(selectionSet, item, variables); })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables));\n }\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return value !== null &&\n typeof value === \"object\" &&\n !isReference(value) &&\n !Array.isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger;\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { dep, KeyTrie } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n this.rootIds = Object.create(null);\n this.refs = Object.create(null);\n this.getFieldValue = function (objectOrReference, storeFieldName) { return maybeDeepFreeze(isReference(objectOrReference)\n ? _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]); };\n this.canRead = function (objOrRef) {\n return isReference(objOrRef)\n ? _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (dataId, incoming) {\n var _this = this;\n var existing = this.lookup(dataId);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n fieldsToDirty_1[storeFieldName] = 1;\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n } : fieldNameOrOptions, { store: _this }); },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\"\n ? fields\n : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE :\n modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName,\n storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args\n ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer) {\n evicted = this.parent.evict(options) || evicted;\n }\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var workSet_1 = new Set([this.data[dataId]]);\n var canTraverse_1 = function (obj) { return obj !== null && typeof obj === 'object'; };\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n }\n else if (canTraverse_1(obj)) {\n Object.values(obj)\n .filter(canTraverse_1)\n .forEach(workSet_1.add, workSet_1);\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return this.group.keyMaker.lookupArray(args);\n };\n return EntityStore;\n}());\nexport { EntityStore };\nvar CacheGroup = (function () {\n function CacheGroup(caching) {\n this.caching = caching;\n this.d = null;\n this.keyMaker = new KeyTrie(canUseWeakMap);\n this.d = caching ? dep() : null;\n }\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n this.d(makeDepKey(dataId, fieldName));\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName));\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n return storeFieldName + '#' + dataId;\n}\n(function (EntityStore) {\n var Root = (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.storageTrie = new KeyTrie(canUseWeakMap);\n _this.sharedLayerGroup = new CacheGroup(resultCaching);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.sharedLayerGroup);\n };\n Root.prototype.removeLayer = function () {\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n Object.keys(this.data).forEach(function (dataId) {\n if (_this.data[dataId] !== parent.lookup(dataId)) {\n _this.delete(dataId);\n }\n });\n }\n return parent;\n }\n if (parent === this.parent)\n return this;\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, arguments);\n };\n return Layer;\n}(EntityStore));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { wrap } from 'optimism';\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { isField, resultKeyNameFromField, isReference, makeReference, createFragmentMap, shouldInclude, addTypenameToDocument, getDefaultValues, getFragmentDefinitions, getMainDefinition, getQueryDefinition, maybeDeepFreeze, mergeDeepArray, getFragmentFromSelection, } from \"../../utilities/index.js\";\nimport { supportsResultCaching } from \"./entityStore.js\";\nimport { getTypenameFromStoreObject } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\n;\nfunction missingFromInvariant(err, context) {\n return new MissingFieldError(err.message, context.path.slice(), context.query, context.clientOnly, context.variables);\n}\nvar StoreReader = (function () {\n function StoreReader(config) {\n var _this = this;\n this.config = config;\n this.executeSelectionSet = wrap(function (options) { return _this.execSelectionSetImpl(options); }, {\n keyArgs: function (options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n ];\n },\n makeCacheKey: function (selectionSet, parent, context) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString);\n }\n }\n });\n this.knownResults = new WeakMap();\n this.executeSubSelectedArray = wrap(function (options) {\n return _this.execSubSelectedArrayImpl(options);\n }, {\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n this.config = __assign({ addTypename: true }, config);\n }\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: makeReference(rootId),\n context: {\n store: store,\n query: query,\n policies: policies,\n variables: variables,\n varString: JSON.stringify(variables),\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n path: [],\n clientOnly: false,\n },\n });\n var hasMissingFields = execResult.missing && execResult.missing.length > 0;\n if (hasMissingFields && !returnPartialData) {\n throw execResult.missing[0];\n }\n return {\n result: execResult.result,\n missing: execResult.missing,\n complete: !hasMissingFields,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context);\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: {},\n missing: [missingFromInvariant(process.env.NODE_ENV === \"production\" ? new InvariantError(4) : new InvariantError(\"Dangling reference to missing \" + objectOrReference.__ref + \" object\"), context)],\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var objectsToMerge = [];\n var finalResult = { result: null };\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n objectsToMerge.push({ __typename: typename });\n }\n function getMissing() {\n return finalResult.missing || (finalResult.missing = []);\n }\n function handleMissing(result) {\n var _a;\n if (result.missing)\n (_a = getMissing()).push.apply(_a, result.missing);\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a;\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n context.path.push(resultName);\n var wasClientOnly = context.clientOnly;\n context.clientOnly = wasClientOnly || !!(selection.directives &&\n selection.directives.some(function (d) { return d.name.value === \"client\"; }));\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n getMissing().push(missingFromInvariant(process.env.NODE_ENV === \"production\" ? new InvariantError(5) : new InvariantError(\"Can't find field '\" + selection.name.value + \"' on \" + (isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2))), context));\n }\n }\n else if (Array.isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n context: context,\n }));\n }\n else if (!selection.selectionSet) {\n if (process.env.NODE_ENV !== 'production') {\n assertSelectionSetForIdValue(context.store, selection, fieldValue);\n maybeDeepFreeze(fieldValue);\n }\n }\n else if (fieldValue != null) {\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n context: context,\n }));\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_a = {}, _a[resultName] = fieldValue, _a));\n }\n context.clientOnly = wasClientOnly;\n invariant(context.path.pop() === resultName);\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n finalResult.result = mergeDeepArray(objectsToMerge);\n if (process.env.NODE_ENV !== 'production') {\n Object.freeze(finalResult.result);\n }\n this.knownResults.set(finalResult.result, selectionSet);\n return finalResult;\n };\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, context = _a.context;\n var missing;\n function handleMissing(childResult, i) {\n if (childResult.missing) {\n missing = missing || [];\n missing.push.apply(missing, childResult.missing);\n }\n invariant(context.path.pop() === i);\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n if (item === null) {\n return null;\n }\n context.path.push(i);\n if (Array.isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n context: context,\n }), i);\n }\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n context: context,\n }), i);\n }\n if (process.env.NODE_ENV !== 'production') {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n invariant(context.path.pop() === i);\n return item;\n });\n if (process.env.NODE_ENV !== 'production') {\n Object.freeze(array);\n }\n return { result: array, missing: missing };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (value && typeof value === \"object\") {\n process.env.NODE_ENV === \"production\" ? invariant(!isReference(value), 6) : invariant(!isReference(value), \"Missing selection set for object of type \" + getTypenameFromStoreObject(store, value) + \" returned for query field \" + field.name.value);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { equal } from '@wry/equality';\nimport { createFragmentMap, getFragmentFromSelection, getDefaultValues, getFragmentDefinitions, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, hasDirectives, cloneDeep, } from \"../../utilities/index.js\";\nimport { makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject } from \"./helpers.js\";\n;\nvar StoreWriter = (function () {\n function StoreWriter(cache, reader) {\n this.cache = cache;\n this.reader = reader;\n }\n StoreWriter.prototype.writeToStore = function (_a) {\n var query = _a.query, result = _a.result, dataId = _a.dataId, store = _a.store, variables = _a.variables;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map },\n context: {\n store: store,\n written: Object.create(null),\n merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n },\n variables: variables,\n varString: JSON.stringify(variables),\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n },\n });\n if (!isReference(ref)) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(7) : new InvariantError(\"Could not identify object \" + JSON.stringify(result));\n }\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n var _b = policies.identify(result, selectionSet, context.fragmentMap), id = _b[0], keyObject = _b[1];\n dataId = dataId || id;\n if (\"string\" === typeof dataId) {\n var sets = context.written[dataId] || (context.written[dataId] = []);\n var ref = makeReference(dataId);\n if (sets.indexOf(selectionSet) >= 0)\n return ref;\n sets.push(selectionSet);\n if (this.reader && this.reader.isFresh(result, ref, selectionSet, context)) {\n return ref;\n }\n }\n var incomingFields = Object.create(null);\n if (keyObject) {\n incomingFields = context.merge(incomingFields, keyObject);\n }\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incomingFields.__typename = typename;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a;\n if (!shouldInclude(selection, context.variables))\n return;\n if (isField(selection)) {\n var resultFieldKey = resultKeyNameFromField(selection);\n var value = result[resultFieldKey];\n if (typeof value !== 'undefined') {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, selection, context, childTree);\n var childTypename = selection.selectionSet\n && context.store.getFieldValue(incomingValue, \"__typename\")\n || void 0;\n var merge = policies.getMergeFunction(typename, selection.name.value, childTypename);\n if (merge) {\n childTree.info = {\n field: selection,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incomingFields = context.merge(incomingFields, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (policies.usingPossibleTypes &&\n !hasDirectives([\"defer\", \"client\"], selection)) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(8) : new InvariantError(\"Missing field '\" + resultFieldKey + \"' in \" + JSON.stringify(result, null, 2).substring(0, 100));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n if (\"string\" === typeof dataId) {\n var entityRef_1 = makeReference(dataId);\n if (mergeTree.map.size) {\n incomingFields = this.applyMerges(mergeTree, entityRef_1, incomingFields, context);\n }\n if (process.env.NODE_ENV !== \"production\") {\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1.has(fieldNameFromStoreName(storeFieldName));\n };\n var fieldsWithSelectionSets_1 = new Set();\n workSet.forEach(function (selection) {\n if (isField(selection) && selection.selectionSet) {\n fieldsWithSelectionSets_1.add(selection.name.value);\n }\n });\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(incomingFields).forEach(function (storeFieldName) {\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef_1, incomingFields, storeFieldName, context.store);\n }\n });\n }\n context.store.merge(dataId, incomingFields);\n return entityRef_1;\n }\n return incomingFields;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n return process.env.NODE_ENV === 'production' ? value : cloneDeep(value);\n }\n if (Array.isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = (!Array.isArray(incoming) &&\n (isReference(existing) || storeValueIsStoreObject(existing))) ? existing : void 0;\n var i_1 = incoming;\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return Array.isArray(from)\n ? (typeof name === \"number\" ? from[name] : void 0)\n : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map;\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n incoming = (Array.isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n }\n return map.get(name);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree &&\n !childTree.info &&\n !childTree.map.size) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n if (isReference(existing))\n return;\n if (equal(existing, incoming))\n return;\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = parentType + \".\" + fieldName;\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n if (!Array.isArray(existing) &&\n !Array.isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" &&\n !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n process.env.NODE_ENV === \"production\" || invariant.warn(\"Cache data may be lost when replacing the \" + fieldName + \" field of a \" + parentType + \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \" + (childTypenames.length\n ? \"either ensure all objects of type \" +\n childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n : \"\") + \"define a custom merge function for the \" + typeDotName + \" field, so InMemoryCache can safely merge these objects:\\n\\n existing: \" + JSON.stringify(existing).slice(0, 1000) + \"\\n incoming: \" + JSON.stringify(incoming).slice(0, 1000) + \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\");\n}\n//# sourceMappingURL=writeToStore.js.map","import { dep } from \"optimism\";\nimport { Slot } from \"@wry/context\";\nexport var cacheSlot = new Slot();\nfunction consumeAndIterate(set, callback) {\n if (set.size) {\n var items_1 = [];\n set.forEach(function (item) { return items_1.push(item); });\n set.clear();\n items_1.forEach(callback);\n }\n}\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, info = {\n vars: new Set,\n dep: dep(),\n });\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n getCacheInfo(cache).dep.dirty(rv);\n broadcast(cache);\n });\n consumeAndIterate(listeners, function (listener) { return listener(value); });\n }\n }\n else {\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n };\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","import { __assign, __rest } from \"tslib\";\nimport { KeyTrie } from 'optimism';\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { getFragmentFromSelection, isField, getTypenameFromResult, storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, canUseWeakMap, compact, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args :\n spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nexport var defaultDataIdFromObject = function (_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n id !== void 0 ? { id: id } :\n _id !== void 0 ? { _id: _id } :\n void 0;\n }\n if (id === void 0)\n id = _id;\n if (id !== void 0) {\n return __typename + \":\" + ((typeof id === \"number\" ||\n typeof id === \"string\") ? id : JSON.stringify(id));\n }\n }\n};\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n this.supertypeMap = new Map();\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, selectionSet, fragmentMap) {\n var typename = selectionSet && fragmentMap\n ? getTypenameFromResult(object, selectionSet, fragmentMap)\n : object.__typename;\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n var context = {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: fragmentMap,\n };\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(object, context);\n if (Array.isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge :\n merge === true ? mergeTrueFn :\n merge === false ? mergeFalseFn :\n existing.merge;\n }\n setMerge(existing, incoming.merge);\n existing.keyFn =\n keyFields === false ? nullKeyFieldsFn :\n Array.isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields) :\n typeof keyFields === \"function\" ? keyFields :\n existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n keyArgs === false ? simpleKeyArgsFn :\n Array.isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs) :\n typeof keyArgs === \"function\" ? keyArgs :\n existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n process.env.NODE_ENV === \"production\" ? invariant(!old || old === which, 1) : invariant(!old || old === which, \"Cannot change root \" + which + \" __typename more than once\");\n if (old)\n delete this.rootIdsByTypename[old];\n this.rootIdsByTypename[typename] = rootId;\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n var supertypes = this.supertypeMap.get(typename);\n if (supertypes && supertypes.size) {\n supertypes.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n this.updateTypePolicy(typename, compact.apply(void 0, inbox.splice(0)));\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes &&\n this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n process.env.NODE_ENV === \"production\" || invariant.warn(\"Inferring subtype \" + typename + \" of supertype \" + supertype);\n }\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n i === workQueue_1.length - 1 &&\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (Array.isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field\n ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n if (storeFieldName === false) {\n return fieldName;\n }\n return fieldName === fieldNameFromStoreName(storeFieldName)\n ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference)\n ? objectOrReference.__ref\n : objectOrReference, storeFieldName));\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n return makeMergeObjectsFunction(context.store.getFieldValue)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n return incoming;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, getFieldValue = _a.getFieldValue, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function (fieldNameOrOptions, from) {\n var options = typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from,\n } : __assign({}, fieldNameOrOptions);\n if (void 0 === options.from) {\n options.from = objectOrReference;\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return policies.readField(options, context);\n },\n mergeObjects: makeMergeObjectsFunction(getFieldValue),\n };\n}\nfunction makeMergeObjectsFunction(getFieldValue) {\n return function mergeObjects(existing, incoming) {\n if (Array.isArray(existing) || Array.isArray(incoming)) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(2) : new InvariantError(\"Cannot automatically merge arrays\");\n }\n if (existing && typeof existing === \"object\" &&\n incoming && typeof incoming === \"object\") {\n var eType = getFieldValue(existing, \"__typename\");\n var iType = getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer ||\n !storeValueIsStoreObject(existing) ||\n !storeValueIsStoreObject(incoming)) {\n return incoming;\n }\n return __assign(__assign({}, existing), incoming);\n }\n return incoming;\n };\n}\nfunction keyArgsFnFromSpecifier(specifier) {\n return function (args, context) {\n return args ? context.fieldName + \":\" + JSON.stringify(computeKeyObject(args, specifier, false)) : context.fieldName;\n };\n}\nfunction keyFieldsFnFromSpecifier(specifier) {\n var trie = new KeyTrie(canUseWeakMap);\n return function (object, context) {\n var aliasMap;\n if (context.selectionSet && context.fragmentMap) {\n var info = trie.lookupArray([\n context.selectionSet,\n context.fragmentMap,\n ]);\n aliasMap = info.aliasMap || (info.aliasMap = makeAliasMap(context.selectionSet, context.fragmentMap));\n }\n var keyObject = context.keyObject =\n computeKeyObject(object, specifier, true, aliasMap);\n return context.typename + \":\" + JSON.stringify(keyObject);\n };\n}\nfunction makeAliasMap(selectionSet, fragmentMap) {\n var map = Object.create(null);\n var workQueue = new Set([selectionSet]);\n workQueue.forEach(function (selectionSet) {\n selectionSet.selections.forEach(function (selection) {\n if (isField(selection)) {\n if (selection.alias) {\n var responseKey = selection.alias.value;\n var storeKey = selection.name.value;\n if (storeKey !== responseKey) {\n var aliases = map.aliases || (map.aliases = Object.create(null));\n aliases[storeKey] = responseKey;\n }\n }\n if (selection.selectionSet) {\n var subsets = map.subsets || (map.subsets = Object.create(null));\n subsets[selection.name.value] =\n makeAliasMap(selection.selectionSet, fragmentMap);\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, fragmentMap);\n if (fragment) {\n workQueue.add(fragment.selectionSet);\n }\n }\n });\n });\n return map;\n}\nfunction computeKeyObject(response, specifier, strict, aliasMap) {\n var keyObj = Object.create(null);\n var prevKey;\n specifier.forEach(function (s) {\n if (Array.isArray(s)) {\n if (typeof prevKey === \"string\") {\n var subsets = aliasMap && aliasMap.subsets;\n var subset = subsets && subsets[prevKey];\n keyObj[prevKey] = computeKeyObject(response[prevKey], s, strict, subset);\n }\n }\n else {\n var aliases = aliasMap && aliasMap.aliases;\n var responseName = aliases && aliases[s] || s;\n if (hasOwn.call(response, responseName)) {\n keyObj[prevKey = s] = response[responseName];\n }\n else {\n process.env.NODE_ENV === \"production\" ? invariant(!strict, 3) : invariant(!strict, \"Missing field '\" + responseName + \"' while computing key fields\");\n prevKey = void 0;\n }\n }\n });\n return keyObj;\n}\n//# sourceMappingURL=policies.js.map","import { __assign, __extends } from \"tslib\";\nimport \"./fixPolyfills.js\";\nimport { dep, wrap } from 'optimism';\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { defaultDataIdFromObject, Policies, } from \"./policies.js\";\nimport { hasOwn } from \"./helpers.js\";\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n typePolicies: {},\n};\nvar InMemoryCache = (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.typenameDocumentCache = new Map();\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.maybeBroadcastWatch = wrap(function (c, fromOptimisticTransaction) {\n return _this.broadcastWatch.call(_this, c, !!fromOptimisticTransaction);\n }, {\n makeCacheKey: function (c) {\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, rootId = c.rootId, variables = c.variables;\n return store.makeCacheKey(c.query, c.callback, JSON.stringify({ optimistic: optimistic, rootId: rootId, variables: variables }));\n }\n }\n });\n _this.watchDep = dep();\n _this.config = __assign(__assign({}, defaultConfig), config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.data = new EntityStore.Root({\n policies: _this.policies,\n resultCaching: _this.config.resultCaching,\n });\n _this.optimisticData = _this.data;\n _this.storeWriter = new StoreWriter(_this, _this.storeReader = new StoreReader({\n cache: _this,\n addTypename: _this.addTypename,\n }));\n return _this;\n }\n InMemoryCache.prototype.restore = function (data) {\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore({\n store: options.optimistic ? this.optimisticData : this.data,\n query: options.query,\n variables: options.variables,\n rootId: options.rootId,\n config: this.config,\n returnPartialData: returnPartialData,\n }).result || null;\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore({\n store: this.data,\n query: options.query,\n result: options.result,\n dataId: options.dataId,\n variables: options.variables,\n });\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n return false;\n }\n var store = options.optimistic\n ? this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore({\n store: options.optimistic ? this.optimisticData : this.data,\n rootId: options.id || \"ROOT_QUERY\",\n query: options.query,\n variables: options.variables,\n returnPartialData: options.returnPartialData,\n config: this.config,\n });\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n _this.watchDep.dirty(watch);\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function () {\n return this.optimisticData.gc();\n };\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n InMemoryCache.prototype.identify = function (object) {\n return isReference(object) ? object.__ref :\n this.policies.identify(object)[0];\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n ++this.txCount;\n return this.optimisticData.evict(options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function () {\n this.data.clear();\n this.optimisticData = this.data;\n this.broadcastWatches();\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.performTransaction = function (transaction, optimisticId) {\n var _this = this;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n transaction(_this);\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var fromOptimisticTransaction = false;\n if (typeof optimisticId === 'string') {\n this.optimisticData = this.optimisticData.addLayer(optimisticId, perform);\n fromOptimisticTransaction = true;\n }\n else if (optimisticId === null) {\n perform(this.data);\n }\n else {\n perform();\n }\n this.broadcastWatches(fromOptimisticTransaction);\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n if (this.addTypename) {\n var result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n };\n InMemoryCache.prototype.broadcastWatches = function (fromOptimisticTransaction) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, fromOptimisticTransaction); });\n }\n };\n InMemoryCache.prototype.broadcastWatch = function (c, fromOptimisticTransaction) {\n this.watchDep.dirty(c);\n this.watchDep(c);\n var diff = this.diff({\n query: c.query,\n variables: c.variables,\n optimistic: c.optimistic,\n });\n if (c.optimistic && fromOptimisticTransaction) {\n diff.fromOptimisticTransaction = true;\n }\n c.callback(diff);\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\n//# sourceMappingURL=inMemoryCache.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { visit, BREAK, } from 'graphql';\nimport { invariant } from 'ts-invariant';\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n LocalState.prototype.runResolvers = function (_a) {\n var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n if (document) {\n return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache,\n getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n LocalState.prototype.addExportedVariables = function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (document) {\n return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __awaiter(this, void 0, void 0, function () {\n var mainDefinition, fragments, fragmentMap, definitionOperation, defaultOperationType, _a, cache, client, execContext;\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n definitionOperation = mainDefinition\n .operation;\n defaultOperationType = definitionOperation\n ? definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : 'Query';\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache,\n client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n return [2, this.resolveSelectionSet(mainDefinition.selectionSet, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!shouldInclude(selection, variables)) {\n return [2];\n }\n if (isField(selection)) {\n return [2, this.resolveField(selection, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n fragment = fragmentMap[selection.name.value];\n process.env.NODE_ENV === \"production\" ? invariant(fragment, 11) : invariant(fragment, \"No fragment named \" + selection.name.value);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2, this.resolveSelectionSet(fragment.selectionSet, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2];\n });\n }); };\n return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2, resultPromise.then(function (result) {\n if (result === void 0) { result = defaultResult; }\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n if (!field.selectionSet) {\n return result;\n }\n if (result == null) {\n return result;\n }\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, result, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, item, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, item, execContext);\n }\n }));\n };\n return LocalState;\n}());\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { equal } from \"@wry/equality\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight, } from \"./networkStatus.js\";\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, (destructiveMethodCounts.get(cache) + 1) % 1e15);\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\nvar QueryInfo = (function () {\n function QueryInfo(cache) {\n this.cache = cache;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.subscriptions = new Set();\n this.stopped = false;\n this.dirty = false;\n this.diff = null;\n this.observableQuery = null;\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.diff = null;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.diff = null;\n this.dirty = false;\n };\n QueryInfo.prototype.getDiff = function (variables) {\n if (variables === void 0) { variables = this.variables; }\n if (this.diff && equal(variables, this.variables)) {\n return this.diff;\n }\n this.updateWatch(this.variables = variables);\n return this.diff = this.cache.diff({\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n });\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var oldDiff = this.diff;\n this.diff = diff;\n if (!this.dirty &&\n (diff && diff.result) !== (oldDiff && oldDiff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = function () {\n if (_this.getDiff().fromOptimisticTransaction) {\n oq[\"observe\"]();\n }\n else {\n oq.reobserve();\n }\n });\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n this.reset();\n this.cancel();\n delete this.cancel;\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n if (!this.lastWatch ||\n this.lastWatch.query !== this.document ||\n !equal(variables, this.lastWatch.variables)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = {\n query: this.document,\n variables: variables,\n optimistic: true,\n callback: function (diff) { return _this.setDiff(diff); },\n });\n }\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, options, allowCacheWrite) {\n var _this = this;\n this.graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n this.reset();\n if (options.fetchPolicy === 'no-cache') {\n this.diff = { result: result.data, complete: true };\n }\n else if (!this.stopped && allowCacheWrite) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: _this.document,\n data: result.data,\n variables: options.variables,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n if (_this.diff && _this.diff.complete) {\n result.data = _this.diff.result;\n return;\n }\n }\n var diff = cache.diff({\n query: _this.document,\n variables: options.variables,\n returnPartialData: true,\n optimistic: true,\n });\n if (!_this.stopped) {\n _this.updateWatch(options.variables);\n }\n _this.diff = diff;\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { equal } from '@wry/equality';\nimport { execute } from \"../link/core/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, removeConnectionDirectiveFromDocument, canUseWeakMap, Observable, asyncMap, isNonEmptyArray, Concast, } from \"../utilities/index.js\";\nimport { ApolloError, isApolloError } from \"../errors/index.js\";\nimport { ObservableQuery } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult } from \"./QueryInfo.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n this.clientAwareness = {};\n this.queries = new Map();\n this.fetchCancelFns = new Map();\n this.transformCache = new (canUseWeakMap ? WeakMap : Map)();\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n this.inFlightLinkObservables = new Map();\n this.cache = cache;\n this.link = link;\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(process.env.NODE_ENV === \"production\" ? new InvariantError(12) : new InvariantError('QueryManager stopped while query was in flight'));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _b = _a.refetchQueries, refetchQueries = _b === void 0 ? [] : _b, _c = _a.awaitRefetchQueries, awaitRefetchQueries = _c === void 0 ? false : _c, updateWithProxyFn = _a.update, _d = _a.errorPolicy, errorPolicy = _d === void 0 ? 'none' : _d, fetchPolicy = _a.fetchPolicy, _e = _a.context, context = _e === void 0 ? {} : _e;\n return __awaiter(this, void 0, void 0, function () {\n var mutationId, mutationStoreValue, self;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n process.env.NODE_ENV === \"production\" ? invariant(mutation, 13) : invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.');\n process.env.NODE_ENV === \"production\" ? invariant(!fetchPolicy || fetchPolicy === 'no-cache', 14) : invariant(!fetchPolicy || fetchPolicy === 'no-cache', \"Mutations only support a 'no-cache' fetchPolicy. If you don't want to disable the cache, remove your fetchPolicy setting to proceed with the default mutation behavior.\");\n mutationId = this.generateMutationId();\n mutation = this.transform(mutation).document;\n variables = this.getVariables(mutation, variables);\n if (!this.transform(mutation).hasClientExports) return [3, 2];\n return [4, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = _f.sent();\n _f.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n if (optimisticResponse) {\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n errorPolicy: errorPolicy,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n });\n }\n this.broadcastQueries();\n self = this;\n return [2, new Promise(function (resolve, reject) {\n var storeResult;\n var error;\n self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: optimisticResponse }), variables, false).subscribe({\n next: function (result) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n error = new ApolloError({\n graphQLErrors: result.errors,\n });\n return;\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n if (fetchPolicy !== 'no-cache') {\n try {\n self.markMutationResult({\n mutationId: mutationId,\n result: result,\n document: mutation,\n variables: variables,\n errorPolicy: errorPolicy,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n });\n }\n catch (e) {\n error = new ApolloError({\n networkError: e,\n });\n return;\n }\n }\n storeResult = result;\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (optimisticResponse) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(new ApolloError({\n networkError: err,\n }));\n },\n complete: function () {\n if (error && mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = error;\n }\n if (optimisticResponse) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n if (error) {\n reject(error);\n return;\n }\n if (typeof refetchQueries === 'function') {\n refetchQueries = refetchQueries(storeResult);\n }\n var refetchQueryPromises = [];\n if (isNonEmptyArray(refetchQueries)) {\n refetchQueries.forEach(function (refetchQuery) {\n if (typeof refetchQuery === 'string') {\n self.queries.forEach(function (_a) {\n var observableQuery = _a.observableQuery;\n if (observableQuery &&\n observableQuery.hasObservers() &&\n observableQuery.queryName === refetchQuery) {\n refetchQueryPromises.push(observableQuery.refetch());\n }\n });\n }\n else {\n var queryOptions = {\n query: refetchQuery.query,\n variables: refetchQuery.variables,\n fetchPolicy: 'network-only',\n };\n if (refetchQuery.context) {\n queryOptions.context = refetchQuery.context;\n }\n refetchQueryPromises.push(self.query(queryOptions));\n }\n });\n }\n Promise.all(awaitRefetchQueries ? refetchQueryPromises : []).then(function () {\n if (errorPolicy === 'ignore' &&\n storeResult &&\n graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n resolve(storeResult);\n }, reject);\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n if (shouldWriteResult(mutation.result, mutation.errorPolicy)) {\n var cacheWrites_1 = [{\n result: mutation.result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n }];\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: mutation.result,\n queryName: document && getOperationName(document) || void 0,\n queryVariables: variables,\n });\n if (nextQueryResult) {\n cacheWrites_1.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n cache.performTransaction(function (c) {\n cacheWrites_1.forEach(function (write) { return c.write(write); });\n var update = mutation.update;\n if (update) {\n update(c, mutation.result);\n }\n }, null);\n }\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\"\n ? optimisticResponse(mutation.variables)\n : optimisticResponse;\n return this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n process.env.NODE_ENV === \"production\" || invariant.error(error);\n }\n }, mutation.mutationId);\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchQueryObservable(queryId, options, networkStatus).promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var transformed = this.cache.transformDocument(document);\n var forLink = removeConnectionDirectiveFromDocument(this.cache.transformForLink(transformed));\n var clientQuery = this.localState.clientQuery(transformed);\n var serverQuery = forLink && this.localState.serverQuery(forLink);\n var cacheEntry_1 = {\n document: transformed,\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery: clientQuery,\n serverQuery: serverQuery,\n defaultVars: getDefaultValues(getOperationDefinition(transformed)),\n };\n var add = function (doc) {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry_1);\n }\n };\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.transform(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n options = __assign(__assign({}, options), { variables: this.getVariables(options.query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this.cache);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n this.queries.set(observable.queryId, queryInfo);\n queryInfo.init({\n document: options.query,\n observableQuery: observable,\n variables: options.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options) {\n var _this = this;\n process.env.NODE_ENV === \"production\" ? invariant(options.query, 15) : invariant(options.query, 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.');\n process.env.NODE_ENV === \"production\" ? invariant(options.query.kind === 'Document', 16) : invariant(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.');\n process.env.NODE_ENV === \"production\" ? invariant(!options.returnPartialData, 17) : invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.');\n process.env.NODE_ENV === \"production\" ? invariant(!options.pollInterval, 18) : invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.');\n var queryId = this.generateQueryId();\n return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function () {\n this.cancelPendingFetches(process.env.NODE_ENV === \"production\" ? new InvariantError(19) : new InvariantError('Store reset while query was in flight (not completed in link chain)'));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n return this.cache.reset();\n };\n QueryManager.prototype.resetStore = function () {\n var _this = this;\n return this.clearStore().then(function () {\n return _this.reFetchObservableQueries();\n });\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n if (observableQuery && observableQuery.hasObservers()) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (fetchPolicy !== 'cache-only' &&\n (includeStandby || fetchPolicy !== 'standby')) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n }\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, errorPolicy = _a.errorPolicy, variables = _a.variables, _b = _a.context, context = _b === void 0 ? {} : _b;\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables, false).map(function (result) {\n if (fetchPolicy !== 'no-cache') {\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n if (graphQLResultHasError(result)) {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n return result;\n });\n };\n if (this.transform(query).hasClientExports) {\n var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n this.fetchCancelFns.delete(queryId);\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var serverQuery = this.transform(query).serverQuery;\n if (serverQuery) {\n var _b = this, inFlightLinkObservables_1 = _b.inFlightLinkObservables, link = _b.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n var varJson_1 = JSON.stringify(variables);\n observable = byVariables_1.get(varJson_1);\n if (!observable) {\n var concast = new Concast([\n execute(link, operation)\n ]);\n byVariables_1.set(varJson_1, observable = concast);\n concast.cleanup(function () {\n if (byVariables_1.delete(varJson_1) &&\n byVariables_1.size < 1) {\n inFlightLinkObservables_1.delete(serverQuery);\n }\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation)\n ]);\n }\n }\n else {\n observable = new Concast([\n Observable.of({ data: {} })\n ]);\n context = this.prepareContext(context);\n }\n var clientQuery = this.transform(query).clientQuery;\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, allowCacheWrite, options) {\n var requestId = queryInfo.lastRequestId = this.generateRequestId();\n return asyncMap(this.getObservableFromLink(queryInfo.document, options.context, options.variables), function (result) {\n var hasErrors = isNonEmptyArray(result.errors);\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: result.errors,\n }));\n }\n queryInfo.markResult(result, options, allowCacheWrite);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: queryInfo.networkStatus || NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = result.errors;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError)\n ? networkError\n : new ApolloError({ networkError: networkError });\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n var query = this.transform(options.query).document;\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var oldNetworkStatus = queryInfo.networkStatus;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var mightUseNetwork = fetchPolicy === \"cache-first\" ||\n fetchPolicy === \"cache-and-network\" ||\n fetchPolicy === \"network-only\" ||\n fetchPolicy === \"no-cache\";\n if (mightUseNetwork &&\n notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus)) {\n if (fetchPolicy !== \"cache-first\") {\n fetchPolicy = \"cache-and-network\";\n }\n returnPartialData = true;\n }\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n normalized.variables = variables;\n return _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n };\n this.fetchCancelFns.set(queryId, function (reason) {\n Promise.resolve().then(function () { return concast.cancel(reason); });\n });\n var concast = new Concast(this.transform(normalized.query).hasClientExports\n ? this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables)\n : fromVariables(normalized.variables));\n concast.cleanup(function () {\n _this.fetchCancelFns.delete(queryId);\n var nextFetchPolicy = options.nextFetchPolicy;\n if (nextFetchPolicy) {\n options.nextFetchPolicy = void 0;\n options.fetchPolicy = typeof nextFetchPolicy === \"function\"\n ? nextFetchPolicy.call(options, options.fetchPolicy || \"cache-first\")\n : nextFetchPolicy;\n }\n });\n return concast;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, options, networkStatus) {\n var _this = this;\n var query = options.query, variables = options.variables, fetchPolicy = options.fetchPolicy, errorPolicy = options.errorPolicy, returnPartialData = options.returnPartialData, context = options.context;\n queryInfo.init({\n document: query,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(variables); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (process.env.NODE_ENV !== 'production' &&\n isNonEmptyArray(diff.missing) &&\n !equal(data, {}) &&\n !returnPartialData) {\n process.env.NODE_ENV === \"production\" || invariant.warn(\"Missing cache result fields: \" + diff.missing.map(function (m) { return m.path.join('.'); }).join(', '), diff.missing);\n }\n var fromData = function (data) { return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true }))); };\n if (_this.transform(query).hasForcedResolvers) {\n return _this.localState.runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n }).then(function (resolved) { return fromData(resolved.data); });\n }\n return fromData(data);\n };\n var resultsFromLink = function (allowCacheWrite) {\n return _this.getResultsFromLink(queryInfo, allowCacheWrite, {\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n });\n };\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return [\n resultsFromCache(diff, queryInfo.markReady()),\n ];\n }\n if (returnPartialData) {\n return [\n resultsFromCache(diff),\n resultsFromLink(true),\n ];\n }\n return [\n resultsFromLink(true),\n ];\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData) {\n return [\n resultsFromCache(diff),\n resultsFromLink(true),\n ];\n }\n return [\n resultsFromLink(true),\n ];\n }\n case \"cache-only\":\n return [\n resultsFromCache(readCache(), queryInfo.markReady()),\n ];\n case \"network-only\":\n return [resultsFromLink(true)];\n case \"no-cache\":\n return [resultsFromLink(false)];\n case \"standby\":\n return [];\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this.cache));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign({}, newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { compact } from \"../utilities/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState, } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: __assign(__assign({}, defaults.variables), options.variables),\n });\n}\nvar ApolloClient = (function () {\n function ApolloClient(options) {\n var _this = this;\n this.defaultOptions = {};\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, _c = options.connectToDevTools, connectToDevTools = _c === void 0 ? typeof window === 'object' &&\n !window.__APOLLO_CLIENT__ &&\n process.env.NODE_ENV !== 'production' : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? false : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link = uri\n ? new HttpLink({ uri: uri, credentials: credentials, headers: headers })\n : ApolloLink.empty();\n }\n if (!cache) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(9) : new InvariantError(\"To initialize Apollo Client, you must specify a 'cache' property \" +\n \"in the options object. \\n\" +\n \"For more information, please visit: https://go.apollo.dev/c/docs\");\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || {};\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n if (connectToDevTools && typeof window === 'object') {\n window.__APOLLO_CLIENT__ = this;\n }\n if (!hasSuggestedDevtools && process.env.NODE_ENV !== 'production') {\n hasSuggestedDevtools = true;\n if (typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url = \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: \" + url);\n }\n }\n }\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ? function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n } : void 0,\n });\n }\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')) {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.watchQuery(options);\n };\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n process.env.NODE_ENV === \"production\" ? invariant(options.fetchPolicy !== 'cache-and-network', 10) : invariant(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.');\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.query(options);\n };\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n ApolloClient.prototype.writeQuery = function (options) {\n this.cache.writeQuery(options);\n this.queryManager.broadcastQueries();\n };\n ApolloClient.prototype.writeFragment = function (options) {\n this.cache.writeFragment(options);\n this.queryManager.broadcastQueries();\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore(); })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore(); })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n return ApolloClient;\n}());\nexport { ApolloClient };\n//# sourceMappingURL=ApolloClient.js.map","export var version = '3.3.15';\n//# sourceMappingURL=version.js.map","import { NetworkStatus } from \"./networkStatus.js\";\nimport { compact } from \"../utilities/index.js\";\nimport { invariant } from 'ts-invariant';\nvar Reobserver = (function () {\n function Reobserver(observer, options, fetch, shouldFetch) {\n this.observer = observer;\n this.options = options;\n this.fetch = fetch;\n this.shouldFetch = shouldFetch;\n }\n Reobserver.prototype.reobserve = function (newOptions, newNetworkStatus) {\n if (newOptions) {\n this.updateOptions(newOptions);\n }\n else {\n this.updatePolling();\n }\n var concast = this.fetch(this.options, newNetworkStatus);\n if (this.concast) {\n this.concast.removeObserver(this.observer, true);\n }\n concast.addObserver(this.observer);\n return (this.concast = concast).promise;\n };\n Reobserver.prototype.updateOptions = function (newOptions) {\n Object.assign(this.options, compact(newOptions));\n this.updatePolling();\n return this;\n };\n Reobserver.prototype.stop = function () {\n if (this.concast) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n }\n if (this.pollingInfo) {\n clearTimeout(this.pollingInfo.timeout);\n this.options.pollInterval = 0;\n this.updatePolling();\n }\n };\n Reobserver.prototype.updatePolling = function () {\n var _this = this;\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n process.env.NODE_ENV === \"production\" ? invariant(pollInterval, 20) : invariant(pollInterval, 'Attempted to start a polling query without a polling interval.');\n if (this.shouldFetch === false) {\n return;\n }\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n if (_this.pollingInfo) {\n if (_this.shouldFetch && _this.shouldFetch()) {\n _this.reobserve({\n fetchPolicy: \"network-only\",\n nextFetchPolicy: _this.options.fetchPolicy || \"cache-first\",\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n ;\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n return Reobserver;\n}());\nexport { Reobserver };\n//# sourceMappingURL=Reobserver.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from 'ts-invariant';\nimport { equal } from '@wry/equality';\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, getOperationDefinition, Observable, iterateObserversSafely, isNonEmptyArray, fixObservableSubclass, } from \"../utilities/index.js\";\nimport { Reobserver } from \"./Reobserver.js\";\nvar warnedAboutUpdateQuery = false;\nvar ObservableQuery = (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n return _this.onSubscribe(observer);\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n _this.observer = {\n next: function (result) {\n if (_this.lastError || _this.isDifferentFromLastResult(result)) {\n _this.updateLastResult(result);\n iterateObserversSafely(_this.observers, 'next', result);\n }\n },\n error: function (error) {\n _this.updateLastResult(__assign(__assign({}, _this.lastResult), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false }));\n iterateObserversSafely(_this.observers, 'error', _this.lastError = error);\n },\n };\n _this.isTornDown = false;\n _this.options = options;\n _this.queryId = queryManager.generateQueryId();\n var opDef = getOperationDefinition(options.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n _this.queryManager = queryManager;\n _this.queryInfo = queryInfo;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var observer = {\n next: function (result) {\n resolve(result);\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n var lastResult = this.lastResult;\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n if (this.isTornDown) {\n return result;\n }\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? 'cache-first' : _a;\n if (fetchPolicy === 'no-cache' ||\n fetchPolicy === 'network-only') {\n delete result.partial;\n }\n else if (!result.data ||\n !this.queryManager.transform(this.options.query).hasForcedResolvers) {\n var diff = this.queryInfo.getDiff();\n result.data = (diff.complete ||\n this.options.returnPartialData) ? diff.result : void 0;\n if (diff.complete) {\n if (result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n delete result.partial;\n }\n else {\n result.partial = true;\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult) {\n return !equal(this.lastResultSnapshot, newResult);\n };\n ObservableQuery.prototype.getLastResult = function () {\n return this.lastResult;\n };\n ObservableQuery.prototype.getLastError = function () {\n return this.lastError;\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.lastResult;\n delete this.lastResultSnapshot;\n delete this.lastError;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n ObservableQuery.prototype.refetch = function (variables) {\n var reobserveOptions = {\n pollInterval: 0,\n };\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy !== 'no-cache' &&\n fetchPolicy !== 'cache-and-network') {\n reobserveOptions.fetchPolicy = 'network-only';\n reobserveOptions.nextFetchPolicy = fetchPolicy || \"cache-first\";\n }\n if (variables && !equal(this.options.variables, variables)) {\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n return this.newReobserver(false).reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign({}, this.options), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: \"no-cache\" });\n var qid = this.queryManager.generateQueryId();\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.queryInfo.networkStatus = NetworkStatus.fetchMore;\n this.observe();\n }\n return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n var data = fetchMoreResult.data;\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n if (process.env.NODE_ENV !== \"production\" &&\n !warnedAboutUpdateQuery) {\n process.env.NODE_ENV === \"production\" || invariant.warn(\"The updateQuery callback for fetchMore is deprecated, and will be removed\\nin the next major version of Apollo Client.\\n\\nPlease convert updateQuery functions to field policies with appropriate\\nread and merge functions, or use/adapt a helper function (such as\\nconcatPagination, offsetLimitPagination, or relayStylePagination) from\\n@apollo/client/utilities.\\n\\nThe field policy system handles pagination more effectively than a\\nhand-written updateQuery function, and you only need to define the policy\\nonce, rather than every time you call fetchMore.\");\n warnedAboutUpdateQuery = true;\n }\n _this.updateQuery(function (previous) { return updateQuery(previous, {\n fetchMoreResult: data,\n variables: combinedOptions.variables,\n }); });\n }\n else {\n _this.queryManager.cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: data,\n });\n }\n return fetchMoreResult;\n }).finally(function () {\n _this.queryManager.stopQuery(qid);\n _this.reobserve();\n });\n };\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n process.env.NODE_ENV === \"production\" || invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n this.options.variables = variables;\n if (!this.observers.size) {\n return Promise.resolve();\n }\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? 'cache-first' : _a;\n var reobserveOptions = {\n fetchPolicy: fetchPolicy,\n variables: variables,\n };\n if (fetchPolicy !== 'cache-first' &&\n fetchPolicy !== 'no-cache' &&\n fetchPolicy !== 'network-only') {\n reobserveOptions.fetchPolicy = 'cache-and-network';\n reobserveOptions.nextFetchPolicy = fetchPolicy;\n }\n return this.reobserve(reobserveOptions, NetworkStatus.setVariables);\n };\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var _a;\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n previousResult: (_a = this.lastResult) === null || _a === void 0 ? void 0 : _a.data,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.getReobserver().updateOptions({ pollInterval: pollInterval });\n };\n ObservableQuery.prototype.stopPolling = function () {\n if (this.reobserver) {\n this.reobserver.updateOptions({ pollInterval: 0 });\n }\n };\n ObservableQuery.prototype.updateLastResult = function (newResult) {\n var previousResult = this.lastResult;\n this.lastResult = newResult;\n this.lastResultSnapshot = this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult);\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.lastError;\n }\n return previousResult;\n };\n ObservableQuery.prototype.onSubscribe = function (observer) {\n var _this = this;\n if (observer === this.observer) {\n return function () { };\n }\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !this.observers.size;\n this.observers.add(observer);\n if (this.lastError) {\n observer.error && observer.error(this.lastError);\n }\n else if (this.lastResult) {\n observer.next && observer.next(this.lastResult);\n }\n if (first) {\n this.reobserve().catch(function (_) {\n });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n };\n ObservableQuery.prototype.getReobserver = function () {\n return this.reobserver || (this.reobserver = this.newReobserver(true));\n };\n ObservableQuery.prototype.newReobserver = function (shareOptions) {\n var _this = this;\n var _a = this, queryManager = _a.queryManager, queryId = _a.queryId;\n queryManager.setObservableQuery(this);\n return new Reobserver(this.observer, shareOptions ? this.options : __assign({}, this.options), function (currentOptions, newNetworkStatus) {\n queryManager.setObservableQuery(_this);\n return queryManager.fetchQueryObservable(queryId, currentOptions, newNetworkStatus);\n }, !queryManager.ssrMode && (function () { return !isNetworkRequestInFlight(_this.queryInfo.networkStatus); }));\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n this.isTornDown = false;\n return this.getReobserver().reobserve(newOptions, newNetworkStatus);\n };\n ObservableQuery.prototype.observe = function () {\n this.observer.next(this.getCurrentResult(false));\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.reobserver) {\n this.reobserver.stop();\n delete this.reobserver;\n }\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\nfixObservableSubclass(ObservableQuery);\nfunction defaultSubscriptionObserverErrorCallback(error) {\n process.env.NODE_ENV === \"production\" || invariant.error('Unhandled error', error.message, error.stack);\n}\n//# sourceMappingURL=ObservableQuery.js.map","export { ApolloClient, mergeOptions, } from \"./ApolloClient.js\";\nexport { ObservableQuery, } from \"./ObservableQuery.js\";\nexport { NetworkStatus } from \"./networkStatus.js\";\nexport * from \"./types.js\";\nexport { isApolloError, ApolloError } from \"../errors/index.js\";\nexport { Cache, ApolloCache, InMemoryCache, MissingFieldError, defaultDataIdFromObject, makeVar, } from \"../cache/index.js\";\nexport * from \"../cache/inmemory/types.js\";\nexport * from \"../link/core/index.js\";\nexport * from \"../link/http/index.js\";\nexport { fromError, toPromise, fromPromise, throwServerError, } from \"../link/utils/index.js\";\nexport { Observable, isReference, makeReference, } from \"../utilities/index.js\";\nimport { setVerbosity } from \"ts-invariant\";\nexport { setVerbosity as setLogVerbosity };\nsetVerbosity(\"log\");\nimport gql from 'graphql-tag';\nexport var resetCaches = gql.resetCaches, disableFragmentWarnings = gql.disableFragmentWarnings, enableExperimentalFragmentVariables = gql.enableExperimentalFragmentVariables, disableExperimentalFragmentVariables = gql.disableExperimentalFragmentVariables;\nexport { gql };\n//# sourceMappingURL=index.js.map","export var NetworkStatus;\n(function (NetworkStatus) {\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n//# sourceMappingURL=networkStatus.js.map","import { __extends } from \"tslib\";\nimport { isNonEmptyArray } from \"../utilities/index.js\";\nexport function isApolloError(err) {\n return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n var message = '';\n if (isNonEmptyArray(err.graphQLErrors)) {\n err.graphQLErrors.forEach(function (graphQLError) {\n var errorMessage = graphQLError\n ? graphQLError.message\n : 'Error message not found.';\n message += errorMessage + \"\\n\";\n });\n }\n if (err.networkError) {\n message += err.networkError.message + \"\\n\";\n }\n message = message.replace(/\\n$/, '');\n return message;\n};\nvar ApolloError = (function (_super) {\n __extends(ApolloError, _super);\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.graphQLErrors = graphQLErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { InvariantError, invariant } from 'ts-invariant';\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar LinkError = (function (_super) {\n __extends(LinkError, _super);\n function LinkError(message, link) {\n var _this = _super.call(this, message) || this;\n _this.link = link;\n return _this;\n }\n return LinkError;\n}(Error));\nvar ApolloLink = (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(function (operation) {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n process.env.NODE_ENV === \"production\" || invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n return firstLink;\n }\n var nextLink = toLink(second);\n if (isTerminating(nextLink)) {\n return new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(21) : new InvariantError('request is not implemented');\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n return false;\n }\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var concat = ApolloLink.concat;\n//# sourceMappingURL=concat.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var empty = ApolloLink.empty;\n//# sourceMappingURL=empty.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var from = ApolloLink.from;\n//# sourceMappingURL=from.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var split = ApolloLink.split;\n//# sourceMappingURL=split.js.map","import { throwServerError } from \"../utils/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) { return response\n .text()\n .then(function (bodyText) {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = 'ServerParseError';\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n })\n .then(function (result) {\n if (response.status >= 300) {\n throwServerError(response, result, \"Response not successful: Received status code \" + response.status);\n }\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, 'data') &&\n !hasOwnProperty.call(result, 'errors')) {\n throwServerError(response, result, \"Server response was missing for query '\" + (Array.isArray(operations)\n ? operations.map(function (op) { return op.operationName; })\n : operations.operationName) + \"'.\");\n }\n return result;\n }); };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { InvariantError } from 'ts-invariant';\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = process.env.NODE_ENV === \"production\" ? new InvariantError(23) : new InvariantError(\"Network request failed. \" + label + \" is not serializable: \" + e.message);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","import { __assign } from \"tslib\";\nimport { print } from 'graphql';\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n};\nvar defaultHeaders = {\n accept: '*/*',\n 'content-type': 'application/json',\n};\nvar defaultOptions = {\n method: 'POST',\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var selectHttpOptionsAndBody = function (operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = __assign(__assign({}, fallbackConfig.options), { headers: fallbackConfig.headers, credentials: fallbackConfig.credentials });\n var http = fallbackConfig.http || {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials)\n options.credentials = config.credentials;\n http = __assign(__assign({}, http), config.http);\n });\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n if (http.includeQuery)\n body.query = print(query);\n return {\n options: options,\n body: body,\n };\n};\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","import { __assign, __rest } from \"tslib\";\nimport { visit } from 'graphql';\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { parseAndCheckHttpResponse } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBody, fallbackHttpConfig } from \"./selectHttpOptionsAndBody.js\";\nimport { createSignalIfSupported } from \"./createSignalIfSupported.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError } from \"../utils/index.js\";\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, fetcher = linkOptions.fetch, includeExtensions = linkOptions.includeExtensions, useGETForQueries = linkOptions.useGETForQueries, _b = linkOptions.includeUnusedVariables, includeUnusedVariables = _b === void 0 ? false : _b, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"includeExtensions\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n checkFetcher(fetcher);\n if (!fetcher) {\n fetcher = fetch;\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders['apollographql-client-name'] = name_1;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n var _b = selectHttpOptionsAndBody(operation, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n var unusedNames_1 = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable: function (node, _key, parent) {\n if (parent && parent.kind !== 'VariableDefinition') {\n unusedNames_1.delete(node.name.value);\n }\n },\n });\n if (unusedNames_1.size) {\n body.variables = __assign({}, body.variables);\n unusedNames_1.forEach(function (name) {\n delete body.variables[name];\n });\n }\n }\n var controller;\n if (!options.signal) {\n var _c = createSignalIfSupported(), _controller = _c.controller, signal = _c.signal;\n controller = _controller;\n if (controller)\n options.signal = signal;\n }\n var definitionIsMutation = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = 'GET';\n }\n if (options.method === 'GET') {\n var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, 'Payload');\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n fetcher(chosenURI, options)\n .then(function (response) {\n operation.setContext({ response: response });\n return response;\n })\n .then(parseAndCheckHttpResponse(operation))\n .then(function (result) {\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch(function (err) {\n if (err.name === 'AbortError')\n return;\n if (err.result && err.result.errors && err.result.data) {\n observer.next(err.result);\n }\n observer.error(err);\n });\n return function () {\n if (controller)\n controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","import { InvariantError } from 'ts-invariant';\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === 'undefined') {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(22) : new InvariantError(\"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n \");\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === 'function') {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || '/graphql';\n }\n};\n//# sourceMappingURL=selectURI.js.map","export var createSignalIfSupported = function () {\n if (typeof AbortController === 'undefined')\n return { controller: false, signal: false };\n var controller = new AbortController();\n var signal = controller.signal;\n return { controller: controller, signal: signal };\n};\n//# sourceMappingURL=createSignalIfSupported.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nexport function rewriteURIForGET(chosenURI, body) {\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(key + \"=\" + encodeURIComponent(value));\n };\n if ('query' in body) {\n addQueryParam('query', body.query);\n }\n if (body.operationName) {\n addQueryParam('operationName', body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, 'Variables map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('variables', serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, 'Extensions map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('extensions', serializedExtensions);\n }\n var fragment = '', preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf('#');\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = 'ServerError';\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { InvariantError } from 'ts-invariant';\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(26) : new InvariantError(\"illegal argument: \" + key);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === 'function') {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query) || undefined\n : '';\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\n\t\t\t// This just needs to be something that won't trample other user's Symbol.for use\n\t\t\t// It also will guide people to the source of their issues, if this is problematic.\n\t\t\t// META: It's a resource locator!\n\t\t\tresult = Symbol.for('https://github.com/benlesh/symbol-observable');\n\t\t\ttry {\n\t\t\t\tSymbol.observable = result;\n\t\t\t} catch (err) {\n\t\t\t\t// Do nothing. In some environments, users have frozen `Symbol` for security reasons,\n\t\t\t\t// if it is frozen assigning to it will throw. In this case, we don't care, because\n\t\t\t\t// they will need to use the returned value from the ponyfill.\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import React from 'react';\nimport { canUseWeakMap } from \"../../utilities/index.js\";\nvar cache = new (canUseWeakMap ? WeakMap : Map)();\nexport function getApolloContext() {\n var context = cache.get(React.createContext);\n if (!context) {\n context = React.createContext({});\n context.displayName = 'ApolloContext';\n cache.set(React.createContext, context);\n }\n return context;\n}\nexport { getApolloContext as resetApolloContext };\n//# sourceMappingURL=ApolloContext.js.map","import React from 'react';\nimport { invariant } from 'ts-invariant';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloConsumer = function (props) {\n var ApolloContext = getApolloContext();\n return React.createElement(ApolloContext.Consumer, null, function (context) {\n process.env.NODE_ENV === \"production\" ? invariant(context && context.client, 27) : invariant(context && context.client, 'Could not find \"client\" in the context of ApolloConsumer. ' +\n 'Wrap the root component in an .');\n return props.children(context.client);\n });\n};\n//# sourceMappingURL=ApolloConsumer.js.map","import React from 'react';\nimport { invariant } from 'ts-invariant';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client, children = _a.children;\n var ApolloContext = getApolloContext();\n return React.createElement(ApolloContext.Consumer, null, function (context) {\n if (context === void 0) { context = {}; }\n if (client && context.client !== client) {\n context = Object.assign({}, context, { client: client });\n }\n process.env.NODE_ENV === \"production\" ? invariant(context.client, 28) : invariant(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n 'sure you pass in your client via the \"client\" prop.');\n return (React.createElement(ApolloContext.Provider, { value: context }, children));\n });\n};\n//# sourceMappingURL=ApolloProvider.js.map","import { equal } from '@wry/equality';\nimport { invariant } from 'ts-invariant';\nimport { parser, operationName } from \"../parser/index.js\";\nvar OperationData = (function () {\n function OperationData(options, context) {\n this.isMounted = false;\n this.previousOptions = {};\n this.context = {};\n this.options = {};\n this.options = options || {};\n this.context = context || {};\n }\n OperationData.prototype.getOptions = function () {\n return this.options;\n };\n OperationData.prototype.setOptions = function (newOptions, storePrevious) {\n if (storePrevious === void 0) { storePrevious = false; }\n if (storePrevious && !equal(this.options, newOptions)) {\n this.previousOptions = this.options;\n }\n this.options = newOptions;\n };\n OperationData.prototype.unmount = function () {\n this.isMounted = false;\n };\n OperationData.prototype.refreshClient = function () {\n var client = (this.options && this.options.client) ||\n (this.context && this.context.client);\n process.env.NODE_ENV === \"production\" ? invariant(!!client, 29) : invariant(!!client, 'Could not find \"client\" in the context or passed in as an option. ' +\n 'Wrap the root component in an , or pass an ' +\n 'ApolloClient instance in via options.');\n var isNew = false;\n if (client !== this.client) {\n isNew = true;\n this.client = client;\n this.cleanup();\n }\n return {\n client: this.client,\n isNew: isNew\n };\n };\n OperationData.prototype.verifyDocumentType = function (document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n process.env.NODE_ENV === \"production\" ? invariant(operation.type === type, 30) : invariant(operation.type === type, \"Running a \" + requiredOperationName + \" requires a graphql \" +\n (requiredOperationName + \", but a \" + usedOperationName + \" was used instead.\"));\n };\n return OperationData;\n}());\nexport { OperationData };\n//# sourceMappingURL=OperationData.js.map","import { __assign, __extends } from \"tslib\";\nimport { equal } from '@wry/equality';\nimport { OperationData } from \"./OperationData.js\";\nvar SubscriptionData = (function (_super) {\n __extends(SubscriptionData, _super);\n function SubscriptionData(_a) {\n var options = _a.options, context = _a.context, setResult = _a.setResult;\n var _this = _super.call(this, options, context) || this;\n _this.currentObservable = {};\n _this.setResult = setResult;\n _this.initialize(options);\n return _this;\n }\n SubscriptionData.prototype.execute = function (result) {\n if (this.getOptions().skip === true) {\n this.cleanup();\n return {\n loading: false,\n error: undefined,\n data: undefined,\n variables: this.getOptions().variables\n };\n }\n var currentResult = result;\n if (this.refreshClient().isNew) {\n currentResult = this.getLoadingResult();\n }\n var shouldResubscribe = this.getOptions().shouldResubscribe;\n if (typeof shouldResubscribe === 'function') {\n shouldResubscribe = !!shouldResubscribe(this.getOptions());\n }\n if (shouldResubscribe !== false &&\n this.previousOptions &&\n Object.keys(this.previousOptions).length > 0 &&\n (this.previousOptions.subscription !== this.getOptions().subscription ||\n !equal(this.previousOptions.variables, this.getOptions().variables) ||\n this.previousOptions.skip !== this.getOptions().skip)) {\n this.cleanup();\n currentResult = this.getLoadingResult();\n }\n this.initialize(this.getOptions());\n this.startSubscription();\n this.previousOptions = this.getOptions();\n return __assign(__assign({}, currentResult), { variables: this.getOptions().variables });\n };\n SubscriptionData.prototype.afterExecute = function () {\n this.isMounted = true;\n };\n SubscriptionData.prototype.cleanup = function () {\n this.endSubscription();\n delete this.currentObservable.query;\n };\n SubscriptionData.prototype.initialize = function (options) {\n if (this.currentObservable.query || this.getOptions().skip === true)\n return;\n this.currentObservable.query = this.refreshClient().client.subscribe({\n query: options.subscription,\n variables: options.variables,\n fetchPolicy: options.fetchPolicy,\n context: options.context,\n });\n };\n SubscriptionData.prototype.startSubscription = function () {\n if (this.currentObservable.subscription)\n return;\n this.currentObservable.subscription = this.currentObservable.query.subscribe({\n next: this.updateCurrentData.bind(this),\n error: this.updateError.bind(this),\n complete: this.completeSubscription.bind(this)\n });\n };\n SubscriptionData.prototype.getLoadingResult = function () {\n return {\n loading: true,\n error: undefined,\n data: undefined\n };\n };\n SubscriptionData.prototype.updateResult = function (result) {\n if (this.isMounted) {\n this.setResult(result);\n }\n };\n SubscriptionData.prototype.updateCurrentData = function (result) {\n var onSubscriptionData = this.getOptions().onSubscriptionData;\n this.updateResult({\n data: result.data,\n loading: false,\n error: undefined\n });\n if (onSubscriptionData) {\n onSubscriptionData({\n client: this.refreshClient().client,\n subscriptionData: result\n });\n }\n };\n SubscriptionData.prototype.updateError = function (error) {\n this.updateResult({\n error: error,\n loading: false\n });\n };\n SubscriptionData.prototype.completeSubscription = function () {\n var _this = this;\n Promise.resolve().then(function () {\n var onSubscriptionComplete = _this.getOptions().onSubscriptionComplete;\n if (onSubscriptionComplete)\n onSubscriptionComplete();\n _this.endSubscription();\n });\n };\n SubscriptionData.prototype.endSubscription = function () {\n if (this.currentObservable.subscription) {\n this.currentObservable.subscription.unsubscribe();\n delete this.currentObservable.subscription;\n }\n };\n return SubscriptionData;\n}(OperationData));\nexport { SubscriptionData };\n//# sourceMappingURL=SubscriptionData.js.map","import { __assign, __extends } from \"tslib\";\nimport { equal } from '@wry/equality';\nimport { DocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { OperationData } from \"./OperationData.js\";\nimport { mergeOptions } from \"../../core/index.js\";\nvar MutationData = (function (_super) {\n __extends(MutationData, _super);\n function MutationData(_a) {\n var options = _a.options, context = _a.context, result = _a.result, setResult = _a.setResult;\n var _this = _super.call(this, options, context) || this;\n _this.runMutation = function (mutationFunctionOptions) {\n if (mutationFunctionOptions === void 0) { mutationFunctionOptions = {}; }\n _this.onMutationStart();\n var mutationId = _this.generateNewMutationId();\n return _this.mutate(mutationFunctionOptions)\n .then(function (response) {\n _this.onMutationCompleted(response, mutationId);\n return response;\n })\n .catch(function (error) {\n _this.onMutationError(error, mutationId);\n if (!_this.getOptions().onError)\n throw error;\n });\n };\n _this.verifyDocumentType(options.mutation, DocumentType.Mutation);\n _this.result = result;\n _this.setResult = setResult;\n _this.mostRecentMutationId = 0;\n return _this;\n }\n MutationData.prototype.execute = function (result) {\n this.isMounted = true;\n this.verifyDocumentType(this.getOptions().mutation, DocumentType.Mutation);\n return [\n this.runMutation,\n __assign(__assign({}, result), { client: this.refreshClient().client })\n ];\n };\n MutationData.prototype.afterExecute = function () {\n this.isMounted = true;\n return this.unmount.bind(this);\n };\n MutationData.prototype.cleanup = function () {\n };\n MutationData.prototype.mutate = function (options) {\n return this.refreshClient().client.mutate(mergeOptions(this.getOptions(), options));\n };\n MutationData.prototype.onMutationStart = function () {\n if (!this.result.loading && !this.getOptions().ignoreResults) {\n this.updateResult({\n loading: true,\n error: undefined,\n data: undefined,\n called: true\n });\n }\n };\n MutationData.prototype.onMutationCompleted = function (response, mutationId) {\n var _a = this.getOptions(), onCompleted = _a.onCompleted, ignoreResults = _a.ignoreResults;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0\n ? new ApolloError({ graphQLErrors: errors })\n : undefined;\n var callOncomplete = function () {\n return onCompleted ? onCompleted(data) : null;\n };\n if (this.isMostRecentMutation(mutationId) && !ignoreResults) {\n this.updateResult({\n called: true,\n loading: false,\n data: data,\n error: error\n });\n }\n callOncomplete();\n };\n MutationData.prototype.onMutationError = function (error, mutationId) {\n var onError = this.getOptions().onError;\n if (this.isMostRecentMutation(mutationId)) {\n this.updateResult({\n loading: false,\n error: error,\n data: undefined,\n called: true\n });\n }\n if (onError) {\n onError(error);\n }\n };\n MutationData.prototype.generateNewMutationId = function () {\n return ++this.mostRecentMutationId;\n };\n MutationData.prototype.isMostRecentMutation = function (mutationId) {\n return this.mostRecentMutationId === mutationId;\n };\n MutationData.prototype.updateResult = function (result) {\n if (this.isMounted &&\n (!this.previousResult || !equal(this.previousResult, result))) {\n this.setResult(result);\n this.previousResult = result;\n }\n };\n return MutationData;\n}(OperationData));\nexport { MutationData };\n//# sourceMappingURL=MutationData.js.map","import { __assign, __extends } from \"tslib\";\nimport { equal } from '@wry/equality';\nimport { ApolloError } from \"../../errors/index.js\";\nimport { NetworkStatus } from \"../../core/index.js\";\nimport { DocumentType } from \"../parser/index.js\";\nimport { OperationData } from \"./OperationData.js\";\nvar QueryData = (function (_super) {\n __extends(QueryData, _super);\n function QueryData(_a) {\n var options = _a.options, context = _a.context, onNewData = _a.onNewData;\n var _this = _super.call(this, options, context) || this;\n _this.runLazy = false;\n _this.previous = Object.create(null);\n _this.runLazyQuery = function (options) {\n _this.cleanup();\n _this.runLazy = true;\n _this.lazyOptions = options;\n _this.onNewData();\n };\n _this.getQueryResult = function () {\n var result = _this.observableQueryFields();\n var options = _this.getOptions();\n if (options.skip) {\n result = __assign(__assign({}, result), { data: undefined, error: undefined, loading: false, networkStatus: NetworkStatus.ready, called: true });\n }\n else if (_this.currentObservable) {\n var currentResult = _this.currentObservable.getCurrentResult();\n var data = currentResult.data, loading = currentResult.loading, partial = currentResult.partial, networkStatus = currentResult.networkStatus, errors = currentResult.errors;\n var error = currentResult.error;\n if (errors && errors.length > 0) {\n error = new ApolloError({ graphQLErrors: errors });\n }\n result = __assign(__assign({}, result), { data: data,\n loading: loading,\n networkStatus: networkStatus,\n error: error, called: true });\n if (loading) {\n }\n else if (error) {\n Object.assign(result, {\n data: (_this.currentObservable.getLastResult() || {})\n .data\n });\n }\n else {\n var fetchPolicy = _this.currentObservable.options.fetchPolicy;\n var partialRefetch = options.partialRefetch;\n if (partialRefetch &&\n partial &&\n (!data || Object.keys(data).length === 0) &&\n fetchPolicy !== 'cache-only') {\n Object.assign(result, {\n loading: true,\n networkStatus: NetworkStatus.loading\n });\n result.refetch();\n return result;\n }\n }\n }\n result.client = _this.client;\n _this.setOptions(options, true);\n var previousResult = _this.previous.result;\n _this.previous.loading =\n previousResult && previousResult.loading || false;\n result.previousData = previousResult &&\n (previousResult.data || previousResult.previousData);\n _this.previous.result = result;\n _this.currentObservable && _this.currentObservable.resetQueryStoreErrors();\n return result;\n };\n _this.obsRefetch = function (variables) { var _a; return (_a = _this.currentObservable) === null || _a === void 0 ? void 0 : _a.refetch(variables); };\n _this.obsFetchMore = function (fetchMoreOptions) { return _this.currentObservable.fetchMore(fetchMoreOptions); };\n _this.obsUpdateQuery = function (mapFn) { return _this.currentObservable.updateQuery(mapFn); };\n _this.obsStartPolling = function (pollInterval) {\n var _a;\n (_a = _this.currentObservable) === null || _a === void 0 ? void 0 : _a.startPolling(pollInterval);\n };\n _this.obsStopPolling = function () {\n var _a;\n (_a = _this.currentObservable) === null || _a === void 0 ? void 0 : _a.stopPolling();\n };\n _this.obsSubscribeToMore = function (options) { return _this.currentObservable.subscribeToMore(options); };\n _this.onNewData = onNewData;\n return _this;\n }\n QueryData.prototype.execute = function () {\n this.refreshClient();\n var _a = this.getOptions(), skip = _a.skip, query = _a.query;\n if (skip || query !== this.previous.query) {\n this.removeQuerySubscription();\n this.removeObservable(!skip);\n this.previous.query = query;\n }\n this.updateObservableQuery();\n if (this.isMounted)\n this.startQuerySubscription();\n return this.getExecuteSsrResult() || this.getExecuteResult();\n };\n QueryData.prototype.executeLazy = function () {\n return !this.runLazy\n ? [\n this.runLazyQuery,\n {\n loading: false,\n networkStatus: NetworkStatus.ready,\n called: false,\n data: undefined\n }\n ]\n : [this.runLazyQuery, this.execute()];\n };\n QueryData.prototype.fetchData = function () {\n var _this = this;\n var options = this.getOptions();\n if (options.skip || options.ssr === false)\n return false;\n return new Promise(function (resolve) { return _this.startQuerySubscription(resolve); });\n };\n QueryData.prototype.afterExecute = function (_a) {\n var _b = (_a === void 0 ? {} : _a).lazy, lazy = _b === void 0 ? false : _b;\n this.isMounted = true;\n if (!lazy || this.runLazy) {\n this.handleErrorOrCompleted();\n }\n this.previousOptions = this.getOptions();\n return this.unmount.bind(this);\n };\n QueryData.prototype.cleanup = function () {\n this.removeQuerySubscription();\n this.removeObservable(true);\n delete this.previous.result;\n };\n QueryData.prototype.getOptions = function () {\n var options = _super.prototype.getOptions.call(this);\n if (this.lazyOptions) {\n options.variables = __assign(__assign({}, options.variables), this.lazyOptions.variables);\n options.context = __assign(__assign({}, options.context), this.lazyOptions.context);\n }\n if (this.runLazy) {\n delete options.skip;\n }\n return options;\n };\n QueryData.prototype.ssrInitiated = function () {\n return this.context && this.context.renderPromises;\n };\n QueryData.prototype.getExecuteResult = function () {\n var result = this.getQueryResult();\n this.startQuerySubscription();\n return result;\n };\n ;\n QueryData.prototype.getExecuteSsrResult = function () {\n var _a = this.getOptions(), ssr = _a.ssr, skip = _a.skip;\n var ssrDisabled = ssr === false;\n var fetchDisabled = this.refreshClient().client.disableNetworkFetches;\n var ssrLoading = __assign({ loading: true, networkStatus: NetworkStatus.loading, called: true, data: undefined, stale: false, client: this.client }, this.observableQueryFields());\n if (ssrDisabled && (this.ssrInitiated() || fetchDisabled)) {\n this.previous.result = ssrLoading;\n return ssrLoading;\n }\n if (this.ssrInitiated()) {\n var result = this.getQueryResult() || ssrLoading;\n if (result.loading && !skip) {\n this.context.renderPromises.addQueryPromise(this, function () { return null; });\n }\n return result;\n }\n };\n QueryData.prototype.prepareObservableQueryOptions = function () {\n var options = this.getOptions();\n this.verifyDocumentType(options.query, DocumentType.Query);\n var displayName = options.displayName || 'Query';\n if (this.ssrInitiated() &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')) {\n options.fetchPolicy = 'cache-first';\n }\n return __assign(__assign({}, options), { displayName: displayName, context: options.context });\n };\n QueryData.prototype.initializeObservableQuery = function () {\n if (this.ssrInitiated()) {\n this.currentObservable = this.context.renderPromises.getSSRObservable(this.getOptions());\n }\n if (!this.currentObservable) {\n var observableQueryOptions = this.prepareObservableQueryOptions();\n this.previous.observableQueryOptions = __assign(__assign({}, observableQueryOptions), { children: null });\n this.currentObservable = this.refreshClient().client.watchQuery(__assign({}, observableQueryOptions));\n if (this.ssrInitiated()) {\n this.context.renderPromises.registerSSRObservable(this.currentObservable, observableQueryOptions);\n }\n }\n };\n QueryData.prototype.updateObservableQuery = function () {\n if (!this.currentObservable) {\n this.initializeObservableQuery();\n return;\n }\n if (this.getOptions().skip)\n return;\n var newObservableQueryOptions = __assign(__assign({}, this.prepareObservableQueryOptions()), { children: null });\n if (!equal(newObservableQueryOptions, this.previous.observableQueryOptions)) {\n this.previous.observableQueryOptions = newObservableQueryOptions;\n this.currentObservable\n .setOptions(newObservableQueryOptions)\n .catch(function () { });\n }\n };\n QueryData.prototype.startQuerySubscription = function (onNewData) {\n var _this = this;\n if (onNewData === void 0) { onNewData = this.onNewData; }\n if (this.currentSubscription || this.getOptions().skip)\n return;\n this.currentSubscription = this.currentObservable.subscribe({\n next: function (_a) {\n var loading = _a.loading, networkStatus = _a.networkStatus, data = _a.data;\n var previousResult = _this.previous.result;\n if (previousResult &&\n previousResult.loading === loading &&\n previousResult.networkStatus === networkStatus &&\n equal(previousResult.data, data)) {\n return;\n }\n onNewData();\n },\n error: function (error) {\n _this.resubscribeToQuery();\n if (!error.hasOwnProperty('graphQLErrors'))\n throw error;\n var previousResult = _this.previous.result;\n if ((previousResult && previousResult.loading) ||\n !equal(error, _this.previous.error)) {\n _this.previous.error = error;\n onNewData();\n }\n }\n });\n };\n QueryData.prototype.resubscribeToQuery = function () {\n this.removeQuerySubscription();\n var currentObservable = this.currentObservable;\n if (currentObservable) {\n var lastError = currentObservable.getLastError();\n var lastResult = currentObservable.getLastResult();\n currentObservable.resetLastResults();\n this.startQuerySubscription();\n Object.assign(currentObservable, {\n lastError: lastError,\n lastResult: lastResult\n });\n }\n };\n QueryData.prototype.handleErrorOrCompleted = function () {\n if (!this.currentObservable || !this.previous.result)\n return;\n var _a = this.previous.result, data = _a.data, loading = _a.loading, error = _a.error;\n if (!loading) {\n var _b = this.getOptions(), query = _b.query, variables = _b.variables, onCompleted = _b.onCompleted, onError = _b.onError, skip = _b.skip;\n if (this.previousOptions &&\n !this.previous.loading &&\n equal(this.previousOptions.query, query) &&\n equal(this.previousOptions.variables, variables)) {\n return;\n }\n if (onCompleted && !error && !skip) {\n onCompleted(data);\n }\n else if (onError && error) {\n onError(error);\n }\n }\n };\n QueryData.prototype.removeQuerySubscription = function () {\n if (this.currentSubscription) {\n this.currentSubscription.unsubscribe();\n delete this.currentSubscription;\n }\n };\n QueryData.prototype.removeObservable = function (andDelete) {\n if (this.currentObservable) {\n this.currentObservable[\"tearDownQuery\"]();\n if (andDelete) {\n delete this.currentObservable;\n }\n }\n };\n QueryData.prototype.observableQueryFields = function () {\n var _a;\n return {\n variables: (_a = this.currentObservable) === null || _a === void 0 ? void 0 : _a.variables,\n refetch: this.obsRefetch,\n fetchMore: this.obsFetchMore,\n updateQuery: this.obsUpdateQuery,\n startPolling: this.obsStartPolling,\n stopPolling: this.obsStopPolling,\n subscribeToMore: this.obsSubscribeToMore\n };\n };\n return QueryData;\n}(OperationData));\nexport { QueryData };\n//# sourceMappingURL=QueryData.js.map","import { __assign } from \"tslib\";\nimport { useContext, useEffect, useReducer, useRef } from 'react';\nimport { QueryData } from \"../../data/index.js\";\nimport { useDeepMemo } from \"./useDeepMemo.js\";\nimport { getApolloContext } from \"../../context/index.js\";\nexport function useBaseQuery(query, options, lazy) {\n if (lazy === void 0) { lazy = false; }\n var context = useContext(getApolloContext());\n var _a = useReducer(function (x) { return x + 1; }, 0), tick = _a[0], forceUpdate = _a[1];\n var updatedOptions = options ? __assign(__assign({}, options), { query: query }) : { query: query };\n var queryDataRef = useRef();\n var queryData = queryDataRef.current || (queryDataRef.current = new QueryData({\n options: updatedOptions,\n context: context,\n onNewData: function () {\n if (!queryData.ssrInitiated()) {\n Promise.resolve().then(function () { return queryDataRef.current && forceUpdate(); });\n }\n else {\n forceUpdate();\n }\n }\n }));\n queryData.setOptions(updatedOptions);\n queryData.context = context;\n var memo = {\n options: __assign(__assign({}, updatedOptions), { onError: undefined, onCompleted: undefined }),\n context: context,\n tick: tick\n };\n var result = useDeepMemo(function () { return (lazy ? queryData.executeLazy() : queryData.execute()); }, memo);\n var queryResult = lazy\n ? result[1]\n : result;\n useEffect(function () {\n return function () { return queryData.cleanup(); };\n }, []);\n useEffect(function () { return queryData.afterExecute({ lazy: lazy }); }, [\n queryResult.loading,\n queryResult.networkStatus,\n queryResult.error,\n queryResult.data,\n ]);\n return result;\n}\n//# sourceMappingURL=useBaseQuery.js.map","import { useRef } from 'react';\nimport { equal } from '@wry/equality';\nexport function useDeepMemo(memoFn, key) {\n var ref = useRef();\n if (!ref.current || !equal(key, ref.current.key)) {\n ref.current = { key: key, value: memoFn() };\n }\n return ref.current.value;\n}\n//# sourceMappingURL=useDeepMemo.js.map","import { useBaseQuery } from \"./utils/useBaseQuery.js\";\nexport function useLazyQuery(query, options) {\n return useBaseQuery(query, options, true);\n}\n//# sourceMappingURL=useLazyQuery.js.map","import { __assign } from \"tslib\";\nimport { useContext, useState, useRef, useEffect } from 'react';\nimport { MutationData } from \"../data/index.js\";\nimport { getApolloContext } from \"../context/index.js\";\nexport function useMutation(mutation, options) {\n var context = useContext(getApolloContext());\n var _a = useState({ called: false, loading: false }), result = _a[0], setResult = _a[1];\n var updatedOptions = options ? __assign(__assign({}, options), { mutation: mutation }) : { mutation: mutation };\n var mutationDataRef = useRef();\n function getMutationDataRef() {\n if (!mutationDataRef.current) {\n mutationDataRef.current = new MutationData({\n options: updatedOptions,\n context: context,\n result: result,\n setResult: setResult\n });\n }\n return mutationDataRef.current;\n }\n var mutationData = getMutationDataRef();\n mutationData.setOptions(updatedOptions);\n mutationData.context = context;\n useEffect(function () { return mutationData.afterExecute(); });\n return mutationData.execute(result);\n}\n//# sourceMappingURL=useMutation.js.map","import { useBaseQuery } from \"./utils/useBaseQuery.js\";\nexport function useQuery(query, options) {\n return useBaseQuery(query, options, false);\n}\n//# sourceMappingURL=useQuery.js.map","import { invariant } from 'ts-invariant';\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n process.env.NODE_ENV === \"production\" ? invariant(!!document && !!document.kind, 34) : invariant(!!document && !!document.kind, \"Argument of \" + document + \" passed to parser was not a valid GraphQL \" +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\");\n var fragments = document.definitions.filter(function (x) { return x.kind === 'FragmentDefinition'; });\n var queries = document.definitions.filter(function (x) {\n return x.kind === 'OperationDefinition' && x.operation === 'query';\n });\n var mutations = document.definitions.filter(function (x) {\n return x.kind === 'OperationDefinition' && x.operation === 'mutation';\n });\n var subscriptions = document.definitions.filter(function (x) {\n return x.kind === 'OperationDefinition' && x.operation === 'subscription';\n });\n process.env.NODE_ENV === \"production\" ? invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 35) : invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\");\n process.env.NODE_ENV === \"production\" ? invariant(queries.length + mutations.length + subscriptions.length <= 1, 36) : invariant(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n (document + \" had \" + queries.length + \" queries, \" + subscriptions.length + \" \") +\n (\"subscriptions and \" + mutations.length + \" mutations. \") +\n \"You can use 'compose' to join multiple operation types to a component\");\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n process.env.NODE_ENV === \"production\" ? invariant(definitions.length === 1, 37) : invariant(definitions.length === 1, \"react-apollo only supports one definition per HOC. \" + document + \" had \" +\n (definitions.length + \" definitions. \") +\n \"You can use 'compose' to join multiple operation types to a component\");\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\n//# sourceMappingURL=index.js.map","import { visit, } from 'graphql';\nimport { invariant } from 'ts-invariant';\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables && variables[ifArgument.value.name.value];\n process.env.NODE_ENV === \"production\" ? invariant(evaledValue !== void 0, 38) : invariant(evaledValue !== void 0, \"Invalid variable referenced in @\" + directive.name.value + \" directive.\");\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport function hasDirectives(names, root) {\n return getDirectiveNames(root).some(function (name) { return names.indexOf(name) > -1; });\n}\nexport function hasClientExports(document) {\n return (document &&\n hasDirectives(['client'], document) &&\n hasDirectives(['export'], document));\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === 'skip' || value === 'include';\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n process.env.NODE_ENV === \"production\" ? invariant(directiveArguments && directiveArguments.length === 1, 39) : invariant(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\" + directiveName + \" directive.\");\n var ifArgument = directiveArguments[0];\n process.env.NODE_ENV === \"production\" ? invariant(ifArgument.name && ifArgument.name.value === 'if', 40) : invariant(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\" + directiveName + \" directive.\");\n var ifValue = ifArgument.value;\n process.env.NODE_ENV === \"production\" ? invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), 41) : invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\" + directiveName + \" directive must be a variable or a boolean value.\");\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport { invariant, InvariantError } from 'ts-invariant';\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n var fragments = [];\n document.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(42) : new InvariantError(\"Found a \" + definition.operation + \" operation\" + (definition.name ? \" named '\" + definition.name.value + \"'\" : '') + \". \" +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.');\n }\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n if (typeof actualFragmentName === 'undefined') {\n process.env.NODE_ENV === \"production\" ? invariant(fragments.length === 1, 43) : invariant(fragments.length === 1, \"Found \" + fragments.length + \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\");\n actualFragmentName = fragments[0].name.value;\n }\n var query = __assign(__assign({}, document), { definitions: __spreadArrays([\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions) });\n return query;\n}\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case 'InlineFragment':\n return selection;\n case 'FragmentSpread': {\n var fragment = fragmentMap && fragmentMap[selection.name.value];\n process.env.NODE_ENV === \"production\" ? invariant(fragment, 44) : invariant(fragment, \"No fragment named \" + selection.name.value + \".\");\n return fragment;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import stringify from 'fast-json-stable-stringify';\nimport { InvariantError } from 'ts-invariant';\nimport { getFragmentFromSelection } from \"./fragments.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === 'object' && typeof obj.__ref === 'string');\n}\nfunction isStringValue(value) {\n return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n return value.kind === 'NullValue';\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(53) : new InvariantError(\"The inline argument \\\"\" + name.value + \"\\\" of kind \\\"\" + value.kind + \"\\\"\" +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.');\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\nexport function getStoreKeyName(fieldName, args, directives) {\n if (args &&\n directives &&\n directives['connection'] &&\n directives['connection']['key']) {\n if (directives['connection']['filter'] &&\n directives['connection']['filter'].length > 0) {\n var filterKeys = directives['connection']['filter']\n ? directives['connection']['filter']\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return directives['connection']['key'] + \"(\" + JSON.stringify(filteredArgs_1) + \")\";\n }\n else {\n return directives['connection']['key'];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n var stringifiedArgs = stringify(args);\n completeFieldName += \"(\" + stringifiedArgs + \")\";\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\" + key + \"(\" + JSON.stringify(directives[key]) + \")\";\n }\n else {\n completeFieldName += \"@\" + key;\n }\n });\n }\n return completeFieldName;\n}\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n if (typeof result.__typename === 'string') {\n return result.__typename;\n }\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === '__typename') {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else {\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === 'string') {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === 'Field';\n}\nexport function isInlineFragment(selection) {\n return selection.kind === 'InlineFragment';\n}\n//# sourceMappingURL=storeUtils.js.map","import { invariant, InvariantError } from 'ts-invariant';\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\nexport function checkDocument(doc) {\n process.env.NODE_ENV === \"production\" ? invariant(doc && doc.kind === 'Document', 45) : invariant(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\");\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n .map(function (definition) {\n if (definition.kind !== 'OperationDefinition') {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(46) : new InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\" + definition.kind + \"\\\"\");\n }\n return definition;\n });\n process.env.NODE_ENV === \"production\" ? invariant(operations.length <= 1, 47) : invariant(operations.length <= 1, \"Ambiguous GraphQL document: contains \" + operations.length + \" operations\");\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === 'OperationDefinition' && definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n process.env.NODE_ENV === \"production\" ? invariant(queryDef && queryDef.operation === 'query', 48) : invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.');\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n process.env.NODE_ENV === \"production\" ? invariant(doc.kind === 'Document', 49) : invariant(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\");\n process.env.NODE_ENV === \"production\" ? invariant(doc.definitions.length <= 1, 50) : invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.');\n var fragmentDef = doc.definitions[0];\n process.env.NODE_ENV === \"production\" ? invariant(fragmentDef.kind === 'FragmentDefinition', 51) : invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.');\n return fragmentDef;\n}\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === 'OperationDefinition') {\n var operation = definition.operation;\n if (operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription') {\n return definition;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(52) : new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.');\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","export function filterInPlace(array, test, context) {\n var target = 0;\n array.forEach(function (elem, i) {\n if (test.call(this, elem, i, array)) {\n array[target++] = elem;\n }\n }, context);\n array.length = target;\n return array;\n}\n//# sourceMappingURL=filterInPlace.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport { visit, } from 'graphql';\nimport { invariant } from 'ts-invariant';\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { filterInPlace } from \"../common/filterInPlace.js\";\nimport { isField, isInlineFragment } from \"./storeUtils.js\";\nimport { createFragmentMap, } from \"./fragments.js\";\nvar TYPENAME_FIELD = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: '__typename',\n },\n};\nfunction isEmpty(op, fragments) {\n return op.selectionSet.selections.every(function (selection) {\n return selection.kind === 'FragmentSpread' &&\n isEmpty(fragments[selection.name.value], fragments);\n });\n}\nfunction nullIfDocIsEmpty(doc) {\n return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))\n ? null\n : doc;\n}\nfunction getDirectiveMatcher(directives) {\n return function directiveMatcher(directive) {\n return directives.some(function (dir) {\n return (dir.name && dir.name === directive.name.value) ||\n (dir.test && dir.test(directive));\n });\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n var variablesInUse = Object.create(null);\n var variablesToRemove = [];\n var fragmentSpreadsInUse = Object.create(null);\n var fragmentSpreadsToRemove = [];\n var modifiedDoc = nullIfDocIsEmpty(visit(doc, {\n Variable: {\n enter: function (node, _key, parent) {\n if (parent.kind !== 'VariableDefinition') {\n variablesInUse[node.name.value] = true;\n }\n },\n },\n Field: {\n enter: function (node) {\n if (directives && node.directives) {\n var shouldRemoveField = directives.some(function (directive) { return directive.remove; });\n if (shouldRemoveField &&\n node.directives &&\n node.directives.some(getDirectiveMatcher(directives))) {\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (arg.value.kind === 'Variable') {\n variablesToRemove.push({\n name: arg.value.name.value,\n });\n }\n });\n }\n if (node.selectionSet) {\n getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(function (frag) {\n fragmentSpreadsToRemove.push({\n name: frag.name.value,\n });\n });\n }\n return null;\n }\n }\n },\n },\n FragmentSpread: {\n enter: function (node) {\n fragmentSpreadsInUse[node.name.value] = true;\n },\n },\n Directive: {\n enter: function (node) {\n if (getDirectiveMatcher(directives)(node)) {\n return null;\n }\n },\n },\n }));\n if (modifiedDoc &&\n filterInPlace(variablesToRemove, function (v) { return !!v.name && !variablesInUse[v.name]; }).length) {\n modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n }\n if (modifiedDoc &&\n filterInPlace(fragmentSpreadsToRemove, function (fs) { return !!fs.name && !fragmentSpreadsInUse[fs.name]; })\n .length) {\n modifiedDoc = removeFragmentSpreadFromDocument(fragmentSpreadsToRemove, modifiedDoc);\n }\n return modifiedDoc;\n}\nexport function addTypenameToDocument(doc) {\n return visit(checkDocument(doc), {\n SelectionSet: {\n enter: function (node, _key, parent) {\n if (parent &&\n parent.kind === 'OperationDefinition') {\n return;\n }\n var selections = node.selections;\n if (!selections) {\n return;\n }\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0));\n });\n if (skip) {\n return;\n }\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === 'export'; })) {\n return;\n }\n return __assign(__assign({}, node), { selections: __spreadArrays(selections, [TYPENAME_FIELD]) });\n },\n },\n });\n}\naddTypenameToDocument.added = function (field) {\n return field === TYPENAME_FIELD;\n};\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n process.env.NODE_ENV === \"production\" || invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.');\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === 'Variable' &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n }) : [] });\n },\n },\n Field: {\n enter: function (node) {\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\nfunction getAllFragmentSpreadsFromSelectionSet(selectionSet) {\n var allFragments = [];\n selectionSet.selections.forEach(function (selection) {\n if ((isField(selection) || isInlineFragment(selection)) &&\n selection.selectionSet) {\n getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(function (frag) { return allFragments.push(frag); });\n }\n else if (selection.kind === 'FragmentSpread') {\n allFragments.push(selection);\n }\n });\n return allFragments;\n}\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === 'query') {\n return document;\n }\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: 'query' });\n },\n },\n });\n return modifiedDoc;\n}\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === 'client'; },\n remove: true,\n },\n ], document);\n if (modifiedDoc) {\n modifiedDoc = visit(modifiedDoc, {\n FragmentDefinition: {\n enter: function (node) {\n if (node.selectionSet) {\n var isTypenameOnly = node.selectionSet.selections.every(function (selection) {\n return isField(selection) && selection.name.value === '__typename';\n });\n if (isTypenameOnly) {\n return null;\n }\n }\n },\n },\n });\n }\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","import { __assign, __spreadArrays } from \"tslib\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isObject(source) && isObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArrays([target, source, sourceKey], context));\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isObject(value) && !this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import Observable from 'zen-observable';\nimport 'symbol-observable';\nvar prototype = Observable.prototype;\nvar fakeObsSymbol = '@@observable';\nif (!prototype[fakeObsSymbol]) {\n prototype[fakeObsSymbol] = function () { return this; };\n}\nexport { Observable };\n//# sourceMappingURL=Observable.js.map","var toString = Object.prototype.toString;\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","import { isDevelopment, isTest } from \"./environment.js\";\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isObject(obj)) {\n if (!Object.isFrozen(obj))\n Object.freeze(obj);\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nexport function maybeDeepFreeze(obj) {\n if (process.env.NODE_ENV !== \"production\" && (isDevelopment() || isTest())) {\n deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","export function iterateObserversSafely(observers, method, argument) {\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var next = observer.next, error = observer.error, complete = observer.complete;\n var activeCallbackCount = 0;\n var completed = false;\n var promiseQueue = {\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, delegate) {\n if (examiner) {\n return function (arg) {\n ++activeCallbackCount;\n var both = function () { return examiner(arg); };\n promiseQueue = promiseQueue.then(both, both).then(function (result) {\n --activeCallbackCount;\n next && next.call(observer, result);\n if (completed) {\n handler.complete();\n }\n }, function (error) {\n --activeCallbackCount;\n throw error;\n }).catch(function (caught) {\n error && error.call(observer, caught);\n });\n };\n }\n else {\n return function (arg) { return delegate && delegate.call(observer, arg); };\n }\n }\n var handler = {\n next: makeCallback(mapFn, next),\n error: makeCallback(catchFn, error),\n complete: function () {\n completed = true;\n if (!activeCallbackCount) {\n complete && complete.call(observer);\n }\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","import { Observable } from \"./Observable.js\";\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (typeof Symbol === \"function\" && Symbol.species) {\n set(Symbol.species);\n }\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\nvar Concast = (function (_super) {\n __extends(Concast, _super);\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n _this.observers = new Set();\n _this.addCount = 0;\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n if (sub)\n Promise.resolve().then(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n if (_this.sub !== null) {\n var value = _this.sources.shift();\n if (!value) {\n _this.sub = null;\n if (_this.latest &&\n _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return _this.sub = obs.subscribe(_this.handlers); });\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n _this.promise.catch(function (_) { });\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n this.sources = Array.from(sources);\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n if (this.sub === null &&\n nextOrError === \"next\" &&\n observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n ++this.addCount;\n }\n };\n Concast.prototype.removeObserver = function (observer, quietly) {\n if (this.observers.delete(observer) &&\n --this.addCount < 1 &&\n !quietly) {\n this.handlers.error(new Error(\"Observable cancelled prematurely\"));\n }\n };\n Concast.prototype.cleanup = function (callback) {\n var _this = this;\n var called = false;\n var once = function () {\n if (!called) {\n called = true;\n _this.observers.delete(observer);\n callback();\n }\n };\n var observer = {\n next: once,\n error: once,\n complete: once,\n };\n var count = this.addCount;\n this.addObserver(observer);\n this.addCount = count;\n };\n return Concast;\n}(Observable));\nexport { Concast };\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","export function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map","export function graphQLResultHasError(result) {\n return (result.errors && result.errors.length > 0) || false;\n}\n//# sourceMappingURL=errorHandling.js.map","export var canUseWeakMap = typeof WeakMap === 'function' && !(typeof navigator === 'object' &&\n navigator.product === 'ReactNative');\n//# sourceMappingURL=canUse.js.map","export function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n//# sourceMappingURL=compact.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regionAPIs = void 0;\nexports.regionAPIs = new Map([\n [\"us\", \"https://api-iam.intercom.io\"],\n [\"eu\", \"https://api-iam.eu.intercom.io\"],\n [\"ap\", \"https://api-iam.au.intercom.io\"]\n]);\n","\"use strict\";\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++) {\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onUserEmailSupplied = exports.showConversation = exports.showTicket = exports.startChecklist = exports.startSurvey = exports.showNews = exports.showArticle = exports.startTour = exports.getVisitorId = exports.trackEvent = exports.onUnreadCountChange = exports.onShow = exports.onHide = exports.showNewMessage = exports.showMessages = exports.showSpace = exports.show = exports.hide = exports.update = exports.shutdown = exports.boot = exports.Intercom = void 0;\nconst constants_1 = require(\"./constants\");\nconst instance_manager_1 = require(\"./instance-manager\");\nconst callIntercomMethod = (method, ...args) => {\n // window is undefined on server-side and this breaks our widget\n if (typeof window !== undefined && window.Intercom) {\n window.Intercom(method, ...args);\n }\n else {\n console.warn(\"Please ensure Intercom is setup and running on client-side!\");\n }\n};\nconst Intercom = (props) => {\n if (typeof props !== \"object\") {\n console.warn(\"Intercom initialiser called with invalid parameters.\");\n return;\n }\n const { region = \"us\" } = props, args = __rest(props, [\"region\"]);\n if (typeof window !== \"undefined\" && !instance_manager_1.ref) {\n window.intercomSettings = Object.assign(Object.assign({}, args), { api_base: constants_1.regionAPIs.get(region) });\n (0, instance_manager_1.init)();\n }\n};\nexports.Intercom = Intercom;\n// Public functions that can be called from outside the module\nexports.default = exports.Intercom;\nconst boot = (arg) => callIntercomMethod(\"boot\", arg);\nexports.boot = boot;\nconst shutdown = () => callIntercomMethod(\"shutdown\");\nexports.shutdown = shutdown;\nconst update = (arg) => callIntercomMethod(\"update\", arg);\nexports.update = update;\nconst hide = () => callIntercomMethod(\"hide\");\nexports.hide = hide;\nconst show = () => callIntercomMethod(\"show\");\nexports.show = show;\nconst showSpace = (spaceName) => callIntercomMethod(\"showSpace\", spaceName);\nexports.showSpace = showSpace;\nconst showMessages = () => callIntercomMethod(\"showMessages\");\nexports.showMessages = showMessages;\nconst showNewMessage = (prePopulatedContent) => callIntercomMethod(\"showNewMessage\", prePopulatedContent);\nexports.showNewMessage = showNewMessage;\nconst onHide = (callback) => callIntercomMethod(\"onHide\", callback);\nexports.onHide = onHide;\nconst onShow = (callback) => callIntercomMethod(\"onShow\", callback);\nexports.onShow = onShow;\nconst onUnreadCountChange = (callback) => callIntercomMethod(\"onUnreadCountChange\", callback);\nexports.onUnreadCountChange = onUnreadCountChange;\nconst trackEvent = (...args) => callIntercomMethod(\"trackEvent\", ...args);\nexports.trackEvent = trackEvent;\nconst getVisitorId = () => callIntercomMethod(\"getVisitorId\");\nexports.getVisitorId = getVisitorId;\nconst startTour = (tourId) => callIntercomMethod(\"startTour\", tourId);\nexports.startTour = startTour;\nconst showArticle = (articleId) => callIntercomMethod(\"showArticle\", articleId);\nexports.showArticle = showArticle;\nconst showNews = (newsItemId) => callIntercomMethod(\"showNews\", newsItemId);\nexports.showNews = showNews;\nconst startSurvey = (surveyId) => callIntercomMethod(\"startSurvey\", surveyId);\nexports.startSurvey = startSurvey;\nconst startChecklist = (checklistId) => callIntercomMethod(\"startChecklist\", checklistId);\nexports.startChecklist = startChecklist;\nconst showTicket = (ticketId) => callIntercomMethod(\"showTicket\", ticketId);\nexports.showTicket = showTicket;\nconst showConversation = (conversationId) => callIntercomMethod(\"showConversation\", conversationId);\nexports.showConversation = showConversation;\nconst onUserEmailSupplied = (callback) => callIntercomMethod(\"onUserEmailSupplied\", callback);\nexports.onUserEmailSupplied = onUserEmailSupplied;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ref = exports.init = void 0;\nconst scriptElementId = \"_intercom_npm_loader\";\n// This holds a queue of commands to be passed to the messenger widget API after it is added to the page\nconst queueHolder = function () {\n queueHolder.loaderQueue(arguments);\n};\nqueueHolder.q = [];\nqueueHolder.loaderQueue = function (args) {\n queueHolder.q.push(args);\n};\nconst addWidgetToPage = function () {\n var _a, _b;\n var d = document;\n if (d.getElementById(scriptElementId)) {\n // script is already in DOM\n return;\n }\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.async = true;\n s.id = scriptElementId;\n s.src =\n \"https://widget.intercom.io/widget/\" + ((_a = window.intercomSettings) === null || _a === void 0 ? void 0 : _a.app_id);\n var x = d.getElementsByTagName(\"script\")[0];\n (_b = x.parentNode) === null || _b === void 0 ? void 0 : _b.insertBefore(s, x);\n};\nconst isDocumentReady = () => document.readyState === \"complete\" || document.readyState === \"interactive\";\nconst init = () => __awaiter(void 0, void 0, void 0, function* () {\n var w = window;\n var ic = w.Intercom;\n if (w.intercomSettings) {\n w.intercomSettings.installation_type = \"npm-package\";\n }\n if (typeof ic === \"function\") {\n ic(\"reattach_activator\");\n ic(\"update\", w.intercomSettings);\n }\n else {\n w.Intercom = queueHolder;\n if (isDocumentReady()) {\n addWidgetToPage();\n }\n else {\n document.addEventListener(\"readystatechange\", function () {\n if (isDocumentReady()) {\n addWidgetToPage();\n }\n });\n if (w.attachEvent) {\n w.attachEvent(\"onload\", addWidgetToPage);\n }\n else {\n w.addEventListener(\"load\", addWidgetToPage, false);\n }\n }\n }\n});\nexports.init = init;\nexports.ref = undefined;\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { uuid4 } from './misc.js';\n\nconst TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n */\nfunction tracingContextFromHeaders(\n sentryTrace,\n baggage,\n)\n\n {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n const propagationContext = {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n sampled: parentSampled === undefined ? false : parentSampled,\n };\n\n if (parentSpanId) {\n propagationContext.parentSpanId = parentSpanId;\n }\n\n if (dynamicSamplingContext) {\n propagationContext.dsc = dynamicSamplingContext ;\n }\n\n return {\n traceparentData,\n dynamicSamplingContext,\n propagationContext,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n traceId = uuid4(),\n spanId = uuid4().substring(16),\n sampled,\n) {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, tracingContextFromHeaders };\n//# sourceMappingURL=tracing.js.map\n","import { uuid4, timestampInSeconds, logger, generateSentryTraceHeader, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n\n constructor(maxlen = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Internal keeper of the status\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Timestamp in seconds when the span was created.\n */\n\n /**\n * Timestamp in seconds when the span ended.\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n /**\n * List of spans that were finalized\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * The instrumenter that created this span.\n */\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {\n this.traceId = uuid4();\n this.spanId = uuid4().substring(16);\n this.startTimestamp = timestampInSeconds();\n this.tags = {};\n this.data = {};\n this.instrumenter = 'sentry';\n\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.name) {\n this.description = spanContext.name;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n this.setData('http.response.status_code', httpStatus);\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setName(name) {\n this.description = name;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n return generateSentryTraceHeader(this.traceId, this.spanId, this.sampled);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = spanContext.data || {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId || this.spanId;\n this.startTimestamp = spanContext.startTimestamp || this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags || {};\n this.traceId = spanContext.traceId || this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext() {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { logger, dropUndefinedKeys } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\nimport { getDynamicSamplingContextFromClient } from './dynamicSamplingContext.js';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n\n /**\n * The reference to the current hub.\n */\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);\n // We need to delete description since it's set by the Span class constructor\n // but not needed for transactions.\n delete this.description;\n\n this._measurements = {};\n this._contexts = {};\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n set name(newName) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name || '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getDynamicSamplingContext() {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub = this._hub || getCurrentHub();\n const client = hub.getClient();\n\n if (!client) return {};\n\n const scope = hub.getScope();\n const dsc = getDynamicSamplingContextFromClient(this.traceId, client, scope);\n\n const maybeSampleRate = this.metadata.sampleRate;\n if (maybeSampleRate !== undefined) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = this.metadata.source;\n if (source && source !== 'url') {\n dsc.transaction = this.name;\n }\n\n if (this.sampled !== undefined) {\n dsc.sampled = String(this.sampled);\n }\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n setHub(hub) {\n this._hub = hub;\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId; }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n\n // Track state of activities in previous heartbeat\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n\n // We should not use heartbeat if we finished a transaction\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._restartIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampInSeconds()) {\n this._finished = true;\n this.activities = {};\n\n if (this.op === 'ui.action.click') {\n this.setTag(FINISH_REASON_TAG, this._finishReason);\n }\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const spanStartedBeforeTransactionFinish = span.startTimestamp < endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = span.endTimestamp - this.startTimestamp < timeoutWithMarginOfError;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n const scope = this._idleHub.getScope();\n if (scope.getTransaction() === this) {\n scope.setSpan(undefined);\n }\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n const pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n cancelIdleTimeout(\n endTimestamp,\n {\n restartOnChildSpanChange,\n }\n\n = {\n restartOnChildSpanChange: true,\n },\n ) {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n setFinishReason(reason) {\n this._finishReason = reason;\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n _restartIdleTimeout(endTimestamp) {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n//# sourceMappingURL=idletransaction.js.map\n","import { getCurrentHub } from '../hub.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","import { getCurrentHub } from '../hub.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope.getTransaction() ;\n}\n\nexport { getActiveTransaction };\n//# sourceMappingURL=utils.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { logger, isNaN } from '@sentry/utils';\nimport { getMainCarrier } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n const scope = this.getScope();\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': span.toTraceparent(),\n }\n : {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setMetadata({\n sampleRate,\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n\n transactionContext,\n customSamplingContext,\n) {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n) {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nfunction addTracingExtensions() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../types.js';\nimport { onCLS } from '../web-vitals/getCLS.js';\nimport { onFID } from '../web-vitals/getFID.js';\nimport { onLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI() {\n // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nfunction startTrackingWebVitals() {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n\n return () => {\n if (clsCallback) {\n clsCallback();\n }\n if (lcpCallback) {\n lcpCallback();\n }\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/**\n * Start tracking interaction events.\n */\nfunction startTrackingInteractions() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n }\n };\n\n observe('event', entryHandler, { durationThreshold: 0 });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n return onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP() {\n return onLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n const startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n const start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = {};\n if ('transferSize' in entry) {\n data['http.response_transfer_size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['http.response_content_length'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['http.decoded_response_content_length'] = entry.decodedBodySize;\n }\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n const navigator = WINDOW.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { hasTracingEnabled, getCurrentHub, getDynamicSamplingContextFromClient } from '@sentry/core';\nimport { addInstrumentationHandler, browserPerformanceTimeOrigin, generateSentryTraceHeader, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME, SENTRY_XHR_DATA_KEY, stringMatchesSomePattern } from '@sentry/utils';\n\n/* eslint-disable max-lines */\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const {\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url) =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n const createdSpan = fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n const url = span.data.url;\n const observer = new PerformanceObserver(list => {\n const entries = list.getEntries() ;\n entries.forEach(entry => {\n if ((entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') && entry.name.endsWith(url)) {\n const spanData = resourceTimingEntryToSpanData(entry);\n spanData.forEach(data => span.setData(...data));\n observer.disconnect();\n }\n });\n });\n observer.observe({\n entryTypes: ['resource'],\n });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nfunction extractNetworkProtocol(nextHopProtocol) {\n let name = 'unknown';\n let version = 'unknown';\n let _name = '';\n for (const char of nextHopProtocol) {\n // http/1.1 etc.\n if (char === '/') {\n [name, version] = nextHopProtocol.split('/');\n break;\n }\n // h2, h3 etc.\n if (!isNaN(Number(char))) {\n name = _name === 'h' ? 'http' : _name;\n version = nextHopProtocol.split(_name)[1];\n break;\n }\n _name += char;\n }\n if (_name === nextHopProtocol) {\n // webrtc, ftp, etc.\n name = _name;\n }\n return { name, version };\n}\n\nfunction getAbsoluteTime(time) {\n return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming) {\n const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n const timingSpanData = [];\n\n timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n if (!browserPerformanceTimeOrigin) {\n return timingSpanData;\n }\n return [\n ...timingSpanData,\n ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n if (!hasTracingEnabled() || !handlerData.fetchData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n\n const contentLength =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setData('http.response_content_length', contentLengthNum);\n }\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n const parentSpan = scope.getSpan();\n\n const { method, url } = handlerData.fetchData;\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n url,\n type: 'fetch',\n 'http.method': method,\n },\n description: `${method} ${url}`,\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n }\n\n if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n const request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = handlerData.args[1];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n options.headers = addTracingHeadersToFetchRequest(request, client, scope, options, span);\n }\n\n return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nfunction addTracingHeadersToFetchRequest(\n request, // unknown is actually type Request but we can't export DOM types from this package,\n client,\n scope,\n options\n\n,\n requestSpan,\n) {\n const span = requestSpan || scope.getSpan();\n\n const transaction = span && span.transaction;\n\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n\n const sentryTraceHeader = span ? span.toTraceparent() : generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext = transaction\n ? transaction.getDynamicSamplingContext()\n : dsc\n ? dsc\n : getDynamicSamplingContextFromClient(traceId, client, scope);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers );\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended multiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders ;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders ;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers ),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n if (!hasTracingEnabled() || (xhr && xhr.__sentry_own_request__) || !xhr || !sentryXhrData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(sentryXhrData.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const parentSpan = scope.getSpan();\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n ...sentryXhrData.data,\n type: 'xhr',\n 'http.method': sentryXhrData.method,\n url: sentryXhrData.url,\n },\n description: `${sentryXhrData.method} ${sentryXhrData.url}`,\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n }\n\n if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url)) {\n if (span) {\n const transaction = span && span.transaction;\n const dynamicSamplingContext = transaction && transaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, span.toTraceparent(), sentryBaggageHeader);\n } else {\n const client = hub.getClient();\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n const sentryTraceHeader = generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext =\n dsc || (client ? getDynamicSamplingContextFromClient(traceId, client, scope) : undefined);\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n }\n }\n\n return span;\n}\n\nfunction setHeaderOnXhr(\n xhr,\n sentryTraceHeader,\n sentryBaggageHeader,\n) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader('sentry-trace', sentryTraceHeader);\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, addTracingHeadersToFetchRequest, defaultRequestInstrumentationOptions, extractNetworkProtocol, fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { TRACING_DEFAULTS, addTracingExtensions, startIdleTransaction, getActiveTransaction } from '@sentry/core';\nimport { logger, tracingContextFromHeaders, getDomElement } from '@sentry/utils';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n\n /**\n * @inheritDoc\n */\n\n constructor(_options) {\n this.name = BROWSER_TRACING_INTEGRATION_ID;\n this._hasSetTracePropagationTargets = false;\n\n addTracingExtensions();\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n this._hasSetTracePropagationTargets = !!(\n _options &&\n // eslint-disable-next-line deprecation/deprecation\n (_options.tracePropagationTargets || _options.tracingOrigins)\n );\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n const hub = getCurrentHub();\n const client = hub.getClient();\n const clientOptions = client && client.getOptions();\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n _experiments,\n } = this.options;\n\n const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n // There are three ways to configure tracePropagationTargets:\n // 1. via top level client option `tracePropagationTargets`\n // 2. via BrowserTracing option `tracePropagationTargets`\n // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n //\n // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n // This is done as it minimizes bundle size (we don't have to have undefined checks).\n //\n // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n logger.warn(\n '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n );\n }\n\n instrumentRouting(\n (context) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n const baggage = isPageloadTransaction ? getMetaContent('baggage') : '';\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n const expandedContext = {\n ...context,\n ...traceparentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n this._latestRouteName = finalContext.name;\n this._latestRouteSource = finalContext.metadata && finalContext.metadata.source;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n\n const scope = hub.getScope();\n\n // If it's a pageload and there is a meta tag set\n // use the traceparentData as the propagation context\n if (isPageloadTransaction && traceparentData) {\n scope.setPropagationContext(propagationContext);\n } else {\n // Navigation transactions should set a new propagation context based on the\n // created idle transaction.\n scope.setPropagationContext({\n traceId: idleTransaction.traceId,\n spanId: idleTransaction.spanId,\n parentSpanId: idleTransaction.parentSpanId,\n sampled: !!idleTransaction.sampled,\n });\n }\n\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction ;\n }\n\n /** Start listener for interaction transactions */\n _registerInteractionListener() {\n let inflightInteractionTransaction;\n const registerInteractionTransaction = () => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.finish();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRouteName) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context = {\n name: this._latestRouteName,\n op,\n trimEnd: true,\n metadata: {\n source: this._latestRouteSource || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n });\n }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { logger, browserPerformanceTimeOrigin, addInstrumentationHandler } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!WINDOW || !WINDOW.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = WINDOW.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin (and needs to be in s, not ms)\n startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() ;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { logger, uuid4 } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction captureException(exception, captureContext) {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n if (!client) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, close, configureScope, flush, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n//# sourceMappingURL=exports.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, GLOBAL_OBJ, getGlobalSingleton } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nconst API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n\n /** Contains the last event id of a captured event. */\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {this._version = _version;\n this._stack = [{ scope }];\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n ) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this.getScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this.getScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this.getScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.getScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this.getScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setContext(name, context) {\n this.getScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && !result) {\n // eslint-disable-next-line no-console\n console.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _callExtensionMethod(method, ...args) {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\nfunction getGlobalHub(registry = getMainCarrier()) {\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\nfunction ensureHubOnCarrier(carrier, parent = getGlobalHub()) {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(carrier) || getHubFromCarrier(carrier).isOlderThan(API_VERSION)) {\n const globalHubTopStack = parent.getStackTop();\n setHubOnCarrier(carrier, new Hub(globalHubTopStack.client, Scope.clone(globalHubTopStack.scope)));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nfunction runWithAsyncContext(callback, options = {}) {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { isPlainObject, dateTimestampInSeconds, SyncPromise, logger, isThenable, arrayify, getGlobalSingleton, uuid4 } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called after {@link applyToEvent}. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n\n /** Transaction Name */\n\n /** Span */\n\n /** Session */\n\n /** Request Mode Session Status */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata };\n newScope._propagationContext = { ...scope._propagationContext };\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n if (captureContext._propagationContext) {\n this._propagationContext = captureContext._propagationContext;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n if (captureContext.propagationContext) {\n this._propagationContext = captureContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transaction = this._span.transaction;\n if (transaction) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: transaction.getDynamicSamplingContext(),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...this._sdkProcessingMetadata,\n propagationContext: this._propagationContext,\n };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(context) {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\nfunction generatePropagationContext() {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n sampled: false,\n };\n}\n\nexport { Scope, addGlobalEventProcessor };\n//# sourceMappingURL=scope.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { dropUndefinedKeys } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatchs the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(\n trace_id,\n client,\n scope,\n) {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) ;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\nexport { getDynamicSamplingContextFromClient };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","const SDK_VERSION = '7.64.0';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { logger, getEventDescription, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*healthcheck.*$/,\n /^.*healthy.*$/,\n /^.*live.*$/,\n /^.*ready.*$/,\n /^.*heartbeat.*$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n\n constructor(options = {}) {\n this.name = InboundFilters.id;\n this._options = options;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcess = (event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n const { values } = event.exception;\n try {\n const { type = '', value = '' } = (values && values[values.length - 1]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = FunctionToString.id;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function ( ...args) {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n } catch (e) {\n // ignore errors here, just don't patch this\n }\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","import { arrayify, logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\nimport { addGlobalEventProcessor } from './scope.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n const integrationsByName = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(options) {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations;\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/** Setup a single integration. */\nfunction setupIntegration(integration, integrationIndex) {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr, callback) {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { logger } from './logger.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input, textEncoder) {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(\n env,\n textEncoder,\n textDecoder,\n) {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length) {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson() {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) ;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","import { makeDsn, dsnToString, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { getSdkMetadataForEnvelopeHeader, dsnToString, createEnvelope, createEventEnvelopeHeaders } from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjut a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { uuid4, dateTimestampInSeconds, resolvedSyncPromise, truncate, GLOBAL_OBJ, normalize } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { Scope } from '../scope.js';\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n options,\n event,\n hint,\n scope,\n) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n //\n // We need to check for the existence of `finalScope.getAttachments`\n // because `getAttachments` can be undefined if users are using an older version\n // of `@sentry/core` that does not have the `getAttachments` method.\n // See: https://github.com/getsentry/sentry-javascript/issues/5229\n if (finalScope) {\n // Collect attachments from the hint and scope\n if (finalScope.getAttachments) {\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n let parsedStack;\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n}\n\nexport { applyDebugIds, applyDebugMeta, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations, setupIntegration } from './integration.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Indicates whether this client's integrations have been set up. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._integrationsInitialized = false;\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n addIntegration(integration) {\n setupIntegration(integration, this._integrations);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n void this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, _event) {\n // Note: we use `event` in replay, where we overwrite this hook.\n\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n on(hook, callback) {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-ignore We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n emit(hook, ...rest) {\n if (this._hooks[hook]) {\n // @ts-ignore we cannot enforce the callback to match the hook\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n return prepareEvent(options, event, hint, scope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n // If a trace context is not set on the event, we use the propagationContext set on the event to\n // generate a trace context. If the propagationContext does not have a dynamic sampling context, we\n // also generate one for it.\n const { propagationContext } = evt.sdkProcessingMetadata || {};\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext ;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this.emit('beforeEnvelope', envelope);\n\n return this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n const event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function () {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nconst validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n//# sourceMappingURL=severity.js.map\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n .replace(':80', '')\n .replace(':443', '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, getEventDescription, severityLevelFromString, safeJoin, SENTRY_XHR_DATA_KEY, parseUrl, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n\n /**\n * @inheritDoc\n */\n constructor(options) {\n this.name = Breadcrumbs.id;\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n\n /**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\n addSentryBreadcrumb(event) {\n if (this.options.sentry) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event ;\n target = _isEvent(event)\n ? htmlTreeAsString(event.target, { keyAttrs, maxStringLength })\n : htmlTreeAsString(event, { keyAttrs, maxStringLength });\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data = {\n method,\n url,\n status_code,\n };\n\n const hint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data = handlerData.fetchData;\n const hint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const data = {\n ...handlerData.fetchData,\n status_code: handlerData.response && handlerData.response.status,\n };\n const hint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp,\n endTimestamp,\n };\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nfunction _isEvent(event) {\n return !!event && !!(event ).target;\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: `${sdkSource}:@sentry/browser`,\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n // We check for definedness of `addSentryBreadcrumb` in case users provided their own integration with id\n // \"Breadcrumbs\" that does not have this function.\n if (breadcrumbIntegration && breadcrumbIntegration.addSentryBreadcrumb) {\n breadcrumbIntegration.addSentryBreadcrumb(event);\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n void this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n void this._sendEnvelope(envelope);\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { dsnToString, createEnvelope } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n feedback,\n {\n metadata,\n tunnel,\n dsn,\n }\n\n,\n) {\n const headers = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n const feedbackHeaders = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n//# sourceMappingURL=userfeedback.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n\n /** JSDoc */\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n\n /** JSDoc */\n constructor(options) {\n this.name = GlobalHandlers.id;\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n\n /** JSDoc */\n\n /**\n * @inheritDoc\n */\n constructor(options) {\n this.name = TryCatch.id;\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW ;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn ;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { isInstanceOf } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n maxValueLimit = 250,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n is_exception_group: true,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions, maxValueLength) {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n","import { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor((event, hint) => {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const self = hub.getIntegration(LinkedErrors);\n\n if (!client || !self) {\n return event;\n }\n\n const options = client.getOptions();\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n self._key,\n self._limit,\n event,\n hint,\n );\n\n return event;\n });\n }\n} LinkedErrors.__initStatic();\n\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = HttpContext.id;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = Dedupe.id;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcessor = currentEvent => {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n const frame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nconst chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func, filename) => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n const buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n const updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, SentryError, logger, serializeEnvelope, updateRateLimits } from '@sentry/utils';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item, type) {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item )[1] : undefined;\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { isNativeFetch, logger } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\nlet cachedFetchImpl = undefined;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nfunction clearCachedFetchImplementation() {\n cachedFetchImpl = undefined;\n}\n\nexport { clearCachedFetchImplementation, getNativeFetchImplementation };\n//# sourceMappingURL=utils.js.map\n","import { createTransport } from '@sentry/core';\nimport { rejectedSyncPromise } from '@sentry/utils';\nimport { getNativeFetchImplementation, clearCachedFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request) {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createTransport } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n//# sourceMappingURL=xhr.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getReportDialogEndpoint, getCurrentHub } from '@sentry/core';\nimport { stackParserFromStackParserOptions, supportsFetch, logger, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { WINDOW, wrap as wrap$1 } from './helpers.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nconst defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n if (typeof WINDOW.document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nfunction captureUserFeedback(feedback) {\n const client = getCurrentHub().getClient();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n\nexport { captureUserFeedback, defaultIntegrations, forceLoad, init, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n","import { SDK_VERSION, init as init$1 } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nfunction init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n init$1(options);\n}\n\nexport { init };\n//# sourceMappingURL=sdk.js.map\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n // @ts-ignore \"npm\" is injected by rollup during build process\n return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { getGlobalObject } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW ).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n//# sourceMappingURL=supportsHistory.js.map\n","import { isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch } from './supports.js';\nimport { getGlobalObject } from './worldwide.js';\nimport { supportsHistory } from './vendor/supportsHistory.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v2__';\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers = {};\nconst instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch) {\n return function (...args) {\n const { method, url } = parseFetchArgs(args);\n\n const handlerData = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nfunction hasProp(obj, prop) {\n return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request\n */\nfunction parseFetchArgs(fetchArgs) {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs ;\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg ),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n const url = args[1];\n const xhrInfo = (this[SENTRY_XHR_DATA_KEY] = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n request_headers: {},\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args: args ,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: this,\n } );\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original) {\n return function ( ...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original) {\n return function ( ...setRequestHeaderArgs) {\n const [header, value] = setRequestHeaderArgs ;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n if (sentryXhrData && args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW )[target] && (WINDOW )[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n WINDOW.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n WINDOW.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addInstrumentationHandler, parseFetchArgs };\n//# sourceMappingURL=instrument.js.map\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const originalConsole = GLOBAL_OBJ.console ;\n const wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in originalConsole && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n const getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { node } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n value,\n pattern,\n requireExactStringMatch = false,\n) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n testString,\n patterns = [],\n requireExactStringMatch = false,\n) {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { logger } from './logger.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n constructor(\n executor,\n ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init2() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init3() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init4() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { isNodeEnv, dynamicRequire } from './node.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nconst dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nconst usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","/** Internal global with common properties and Sentry extensions */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function () {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n return GLOBAL_OBJ ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var _a = Object.prototype, toString = _a.toString, hasOwnProperty = _a.hasOwnProperty;\r\nvar fnToStr = Function.prototype.toString;\r\nvar previousComparisons = new Map();\r\n/**\r\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\r\n */\r\nfunction equal(a, b) {\r\n try {\r\n return check(a, b);\r\n }\r\n finally {\r\n previousComparisons.clear();\r\n }\r\n}\r\nfunction check(a, b) {\r\n // If the two values are strictly equal, our job is easy.\r\n if (a === b) {\r\n return true;\r\n }\r\n // Object.prototype.toString returns a representation of the runtime type of\r\n // the given value that is considerably more precise than typeof.\r\n var aTag = toString.call(a);\r\n var bTag = toString.call(b);\r\n // If the runtime types of a and b are different, they could maybe be equal\r\n // under some interpretation of equality, but for simplicity and performance\r\n // we just return false instead.\r\n if (aTag !== bTag) {\r\n return false;\r\n }\r\n switch (aTag) {\r\n case '[object Array]':\r\n // Arrays are a lot like other objects, but we can cheaply compare their\r\n // lengths as a short-cut before comparing their elements.\r\n if (a.length !== b.length)\r\n return false;\r\n // Fall through to object case...\r\n case '[object Object]': {\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aKeys = definedKeys(a);\r\n var bKeys = definedKeys(b);\r\n // If `a` and `b` have a different number of enumerable keys, they\r\n // must be different.\r\n var keyCount = aKeys.length;\r\n if (keyCount !== bKeys.length)\r\n return false;\r\n // Now make sure they have the same keys.\r\n for (var k = 0; k < keyCount; ++k) {\r\n if (!hasOwnProperty.call(b, aKeys[k])) {\r\n return false;\r\n }\r\n }\r\n // Finally, check deep equality of all child properties.\r\n for (var k = 0; k < keyCount; ++k) {\r\n var key = aKeys[k];\r\n if (!check(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Error]':\r\n return a.name === b.name && a.message === b.message;\r\n case '[object Number]':\r\n // Handle NaN, which is !== itself.\r\n if (a !== a)\r\n return b !== b;\r\n // Fall through to shared +a === +b case...\r\n case '[object Boolean]':\r\n case '[object Date]':\r\n return +a === +b;\r\n case '[object RegExp]':\r\n case '[object String]':\r\n return a == \"\" + b;\r\n case '[object Map]':\r\n case '[object Set]': {\r\n if (a.size !== b.size)\r\n return false;\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aIterator = a.entries();\r\n var isMap = aTag === '[object Map]';\r\n while (true) {\r\n var info = aIterator.next();\r\n if (info.done)\r\n break;\r\n // If a instanceof Set, aValue === aKey.\r\n var _a = info.value, aKey = _a[0], aValue = _a[1];\r\n // So this works the same way for both Set and Map.\r\n if (!b.has(aKey)) {\r\n return false;\r\n }\r\n // However, we care about deep equality of values only when dealing\r\n // with Map structures.\r\n if (isMap && !check(aValue, b.get(aKey))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object AsyncFunction]':\r\n case '[object GeneratorFunction]':\r\n case '[object AsyncGeneratorFunction]':\r\n case '[object Function]': {\r\n var aCode = fnToStr.call(a);\r\n if (aCode !== fnToStr.call(b)) {\r\n return false;\r\n }\r\n // We consider non-native functions equal if they have the same code\r\n // (native functions require === because their code is censored).\r\n // Note that this behavior is not entirely sound, since !== function\r\n // objects with the same code can behave differently depending on\r\n // their closure scope. However, any function can behave differently\r\n // depending on the values of its input arguments (including this)\r\n // and its calling context (including its closure scope), even\r\n // though the function object is === to itself; and it is entirely\r\n // possible for functions that are not === to behave exactly the\r\n // same under all conceivable circumstances. Because none of these\r\n // factors are statically decidable in JavaScript, JS function\r\n // equality is not well-defined. This ambiguity allows us to\r\n // consider the best possible heuristic among various imperfect\r\n // options, and equating non-native functions that have the same\r\n // code has enormous practical benefits, such as when comparing\r\n // functions that are repeatedly passed as fresh function\r\n // expressions within objects that are otherwise deeply equal. Since\r\n // any function created from the same syntactic expression (in the\r\n // same code location) will always stringify to the same code\r\n // according to fnToStr.call, we can reasonably expect these\r\n // repeatedly passed function expressions to have the same code, and\r\n // thus behave \"the same\" (with all the caveats mentioned above),\r\n // even though the runtime function objects are !== to one another.\r\n return !endsWith(aCode, nativeCodeSuffix);\r\n }\r\n }\r\n // Otherwise the values are not equal.\r\n return false;\r\n}\r\nfunction definedKeys(obj) {\r\n // Remember that the second argument to Array.prototype.filter will be\r\n // used as `this` within the callback function.\r\n return Object.keys(obj).filter(isDefinedKey, obj);\r\n}\r\nfunction isDefinedKey(key) {\r\n return this[key] !== void 0;\r\n}\r\nvar nativeCodeSuffix = \"{ [native code] }\";\r\nfunction endsWith(full, suffix) {\r\n var fromIndex = full.length - suffix.length;\r\n return fromIndex >= 0 &&\r\n full.indexOf(suffix, fromIndex) === fromIndex;\r\n}\r\nfunction previouslyCompared(a, b) {\r\n // Though cyclic references can make an object graph appear infinite from the\r\n // perspective of a depth-first traversal, the graph still contains a finite\r\n // number of distinct object references. We use the previousComparisons cache\r\n // to avoid comparing the same pair of object references more than once, which\r\n // guarantees termination (even if we end up comparing every object in one\r\n // graph to every object in the other graph, which is extremely unlikely),\r\n // while still allowing weird isomorphic structures (like rings with different\r\n // lengths) a chance to pass the equality test.\r\n var bSet = previousComparisons.get(a);\r\n if (bSet) {\r\n // Return true here because we can be sure false will be returned somewhere\r\n // else if the objects are not equivalent.\r\n if (bSet.has(b))\r\n return true;\r\n }\r\n else {\r\n previousComparisons.set(a, bSet = new Set);\r\n }\r\n bSet.add(b);\r\n return false;\r\n}\n\nexport default equal;\nexport { equal };\n//# sourceMappingURL=equality.esm.js.map\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import once from 'lodash.once';\n\nfunction filterDuplicates(arr) {\n return arr.filter(function (el, index, self) {\n return self.indexOf(el) === index;\n });\n}\n\nfunction fixLowercaseProperties(arr) {\n return arr.map(function (el) {\n if (!el || el.indexOf('-') === -1 || el.toLowerCase() !== el) {\n return el;\n }\n\n var splitEl = el.split('-');\n return \"\".concat(splitEl[0], \"-\").concat(splitEl[1].toUpperCase());\n });\n}\n\nfunction getUserLocalesInternal() {\n var languageList = [];\n\n if (typeof window !== 'undefined') {\n if (window.navigator.languages) {\n languageList = languageList.concat(window.navigator.languages);\n }\n\n if (window.navigator.language) {\n languageList.push(window.navigator.language);\n }\n\n if (window.navigator.userLanguage) {\n languageList.push(window.navigator.userLanguage);\n }\n\n if (window.navigator.browserLanguage) {\n languageList.push(window.navigator.browserLanguage);\n }\n\n if (window.navigator.systemLanguage) {\n languageList.push(window.navigator.systemLanguage);\n }\n }\n\n languageList.push('en-US'); // Fallback\n\n return fixLowercaseProperties(filterDuplicates(languageList));\n}\n\nexport var getUserLocales = once(getUserLocalesInternal);\n\nfunction getUserLocaleInternal() {\n return getUserLocales()[0];\n}\n\nexport var getUserLocale = once(getUserLocaleInternal);\nexport default getUserLocale;","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GraphQLError = GraphQLError;\nexports.printError = printError;\n\nvar _isObjectLike = _interopRequireDefault(require(\"../jsutils/isObjectLike\"));\n\nvar _location = require(\"../language/location\");\n\nvar _printLocation = require(\"../language/printLocation\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return (0, _location.getLocation)(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push((0, _location.getLocation)(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions;\n\n if (_extensions == null && originalError != null) {\n var originalExtensions = originalError.extensions;\n\n if ((0, _isObjectLike.default)(originalExtensions)) {\n _extensions = originalExtensions;\n }\n }\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\n\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nfunction printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i2 = 0, _error$nodes2 = error.nodes; _i2 < _error$nodes2.length; _i2++) {\n var node = _error$nodes2[_i2];\n\n if (node.loc) {\n output += '\\n\\n' + (0, _printLocation.printLocation)(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i4 = 0, _error$locations2 = error.locations; _i4 < _error$locations2.length; _i4++) {\n var location = _error$locations2[_i4];\n output += '\\n\\n' + (0, _printLocation.printSourceLocation)(error.source, location);\n }\n }\n\n return output;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.syntaxError = syntaxError;\n\nvar _GraphQLError = require(\"./GraphQLError\");\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\nfunction syntaxError(source, position, description) {\n return new _GraphQLError.GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defineToJSON;\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The `defineToJSON()` function defines toJSON() and inspect() prototype\n * methods, if no function provided they become aliases for toString().\n */\nfunction defineToJSON(classObject) {\n var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : classObject.prototype.toString;\n classObject.prototype.toJSON = fn;\n classObject.prototype.inspect = fn;\n\n if (_nodejsCustomInspectSymbol.default) {\n classObject.prototype[_nodejsCustomInspectSymbol.default] = fn;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defineToStringTag;\n\n/**\n * The `defineToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method defineToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nfunction defineToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = devAssert;\n\nfunction devAssert(condition, message) {\n var booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inspect;\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n // $FlowFixMe(>=0.90.0)\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(_nodejsCustomInspectSymbol.default)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObjectLike;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nvar _default = nodejsCustomInspectSymbol;\nexports.default = _default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dedentBlockStringValue = dedentBlockStringValue;\nexports.getBlockStringIndentation = getBlockStringIndentation;\nexports.printBlockString = printBlockString;\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nfunction dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(lines);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n} // @internal\n\n\nfunction getBlockStringIndentation(lines) {\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n return commonIndent === null ? 0 : commonIndent;\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nfunction printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectiveLocation = void 0;\n\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n\nexports.DirectiveLocation = DirectiveLocation;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Source\", {\n enumerable: true,\n get: function get() {\n return _source.Source;\n }\n});\nObject.defineProperty(exports, \"getLocation\", {\n enumerable: true,\n get: function get() {\n return _location.getLocation;\n }\n});\nObject.defineProperty(exports, \"printLocation\", {\n enumerable: true,\n get: function get() {\n return _printLocation.printLocation;\n }\n});\nObject.defineProperty(exports, \"printSourceLocation\", {\n enumerable: true,\n get: function get() {\n return _printLocation.printSourceLocation;\n }\n});\nObject.defineProperty(exports, \"Kind\", {\n enumerable: true,\n get: function get() {\n return _kinds.Kind;\n }\n});\nObject.defineProperty(exports, \"TokenKind\", {\n enumerable: true,\n get: function get() {\n return _tokenKind.TokenKind;\n }\n});\nObject.defineProperty(exports, \"createLexer\", {\n enumerable: true,\n get: function get() {\n return _lexer.createLexer;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parser.parse;\n }\n});\nObject.defineProperty(exports, \"parseValue\", {\n enumerable: true,\n get: function get() {\n return _parser.parseValue;\n }\n});\nObject.defineProperty(exports, \"parseType\", {\n enumerable: true,\n get: function get() {\n return _parser.parseType;\n }\n});\nObject.defineProperty(exports, \"print\", {\n enumerable: true,\n get: function get() {\n return _printer.print;\n }\n});\nObject.defineProperty(exports, \"visit\", {\n enumerable: true,\n get: function get() {\n return _visitor.visit;\n }\n});\nObject.defineProperty(exports, \"visitInParallel\", {\n enumerable: true,\n get: function get() {\n return _visitor.visitInParallel;\n }\n});\nObject.defineProperty(exports, \"visitWithTypeInfo\", {\n enumerable: true,\n get: function get() {\n return _visitor.visitWithTypeInfo;\n }\n});\nObject.defineProperty(exports, \"getVisitFn\", {\n enumerable: true,\n get: function get() {\n return _visitor.getVisitFn;\n }\n});\nObject.defineProperty(exports, \"BREAK\", {\n enumerable: true,\n get: function get() {\n return _visitor.BREAK;\n }\n});\nObject.defineProperty(exports, \"isDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isExecutableDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isExecutableDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isSelectionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isSelectionNode;\n }\n});\nObject.defineProperty(exports, \"isValueNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isValueNode;\n }\n});\nObject.defineProperty(exports, \"isTypeNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeNode;\n }\n});\nObject.defineProperty(exports, \"isTypeSystemDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeSystemDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeSystemExtensionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeSystemExtensionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeExtensionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeExtensionNode;\n }\n});\nObject.defineProperty(exports, \"DirectiveLocation\", {\n enumerable: true,\n get: function get() {\n return _directiveLocation.DirectiveLocation;\n }\n});\n\nvar _source = require(\"./source\");\n\nvar _location = require(\"./location\");\n\nvar _printLocation = require(\"./printLocation\");\n\nvar _kinds = require(\"./kinds\");\n\nvar _tokenKind = require(\"./tokenKind\");\n\nvar _lexer = require(\"./lexer\");\n\nvar _parser = require(\"./parser\");\n\nvar _printer = require(\"./printer\");\n\nvar _visitor = require(\"./visitor\");\n\nvar _predicates = require(\"./predicates\");\n\nvar _directiveLocation = require(\"./directiveLocation\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n\nexports.Kind = Kind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createLexer = createLexer;\nexports.isPunctuatorToken = isPunctuatorToken;\n\nvar _defineToJSON = _interopRequireDefault(require(\"../jsutils/defineToJSON\"));\n\nvar _syntaxError = require(\"../error/syntaxError\");\n\nvar _blockString = require(\"./blockString\");\n\nvar _tokenKind = require(\"./tokenKind\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nfunction createLexer(source, options) {\n var startOfFileToken = new Tok(_tokenKind.TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== _tokenKind.TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === _tokenKind.TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n\n\n// @internal\nfunction isPunctuatorToken(token) {\n var kind = token.kind;\n return kind === _tokenKind.TokenKind.BANG || kind === _tokenKind.TokenKind.DOLLAR || kind === _tokenKind.TokenKind.AMP || kind === _tokenKind.TokenKind.PAREN_L || kind === _tokenKind.TokenKind.PAREN_R || kind === _tokenKind.TokenKind.SPREAD || kind === _tokenKind.TokenKind.COLON || kind === _tokenKind.TokenKind.EQUALS || kind === _tokenKind.TokenKind.AT || kind === _tokenKind.TokenKind.BRACKET_L || kind === _tokenKind.TokenKind.BRACKET_R || kind === _tokenKind.TokenKind.BRACE_L || kind === _tokenKind.TokenKind.PIPE || kind === _tokenKind.TokenKind.BRACE_R;\n}\n/**\n * Helper function for constructing the Token object.\n */\n\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\n(0, _defineToJSON.default)(Tok, function () {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n});\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? _tokenKind.TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(_tokenKind.TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = body.charCodeAt(pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(_tokenKind.TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(_tokenKind.TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(_tokenKind.TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(_tokenKind.TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(_tokenKind.TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Tok(_tokenKind.TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(_tokenKind.TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(_tokenKind.TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(_tokenKind.TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(_tokenKind.TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(_tokenKind.TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(_tokenKind.TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(_tokenKind.TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(_tokenKind.TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev, lexer);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw (0, _syntaxError.syntaxError)(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * character, then returns the position of that character for lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = body.charCodeAt(position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(_tokenKind.TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or e\n\n\n if (code === 46 || code === 69 || code === 101) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Tok(isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Tok(_tokenKind.TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Tok(_tokenKind.TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, (0, _blockString.dedentBlockStringValue)(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(_tokenKind.TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLocation = getLocation;\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parse = parse;\nexports.parseValue = parseValue;\nexports.parseType = parseType;\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect\"));\n\nvar _devAssert = _interopRequireDefault(require(\"../jsutils/devAssert\"));\n\nvar _defineToJSON = _interopRequireDefault(require(\"../jsutils/defineToJSON\"));\n\nvar _syntaxError = require(\"../error/syntaxError\");\n\nvar _kinds = require(\"./kinds\");\n\nvar _source = require(\"./source\");\n\nvar _lexer = require(\"./lexer\");\n\nvar _directiveLocation = require(\"./directiveLocation\");\n\nvar _tokenKind = require(\"./tokenKind\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\n\nfunction parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\n\nfunction parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return type;\n}\n\nvar Parser =\n/*#__PURE__*/\nfunction () {\n function Parser(source, options) {\n var sourceObj = typeof source === 'string' ? new _source.Source(source) : source;\n sourceObj instanceof _source.Source || (0, _devAssert.default)(0, \"Must provide Source. Received: \".concat((0, _inspect.default)(sourceObj)));\n this._lexer = (0, _lexer.createLexer)(sourceObj);\n this._options = options || {};\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(_tokenKind.TokenKind.NAME);\n return {\n kind: _kinds.Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.DOCUMENT,\n definitions: this.many(_tokenKind.TokenKind.SOF, this.parseDefinition, _tokenKind.TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseVariableDefinition, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.DOLLAR);\n return {\n kind: _kinds.Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.SELECTION_SET,\n selections: this.many(_tokenKind.TokenKind.BRACE_L, this.parseSelection, _tokenKind.TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(_tokenKind.TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: _kinds.Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, item, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return {\n kind: _kinds.Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n return {\n kind: _kinds.Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds.Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.experimentalFragmentVariables) {\n return {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case _tokenKind.TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case _tokenKind.TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case _tokenKind.TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.STRING:\n case _tokenKind.TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case _tokenKind.TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.BOOLEAN,\n value: token.value === 'true',\n loc: this.loc(token)\n };\n } else if (token.value === 'null') {\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.NULL,\n loc: this.loc(token)\n };\n }\n\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.STRING,\n value: token.value,\n block: token.kind === _tokenKind.TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: _kinds.Kind.LIST,\n values: this.any(_tokenKind.TokenKind.BRACKET_L, item, _tokenKind.TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: _kinds.Kind.OBJECT,\n fields: this.any(_tokenKind.TokenKind.BRACE_L, item, _tokenKind.TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return {\n kind: _kinds.Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(_tokenKind.TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.AT);\n return {\n kind: _kinds.Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n type = {\n kind: _kinds.Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n return {\n kind: _kinds.Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(_tokenKind.TokenKind.STRING) || this.peek(_tokenKind.TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n return {\n kind: _kinds.Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds.Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var types = [];\n\n if (this.expectOptionalKeyword('implements')) {\n // Optional leading ampersand\n this.expectOptionalToken(_tokenKind.TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(_tokenKind.TokenKind.AMP) || // Legacy support for the SDL?\n this._options.allowLegacySDLImplementsInterfaces && this.peek(_tokenKind.TokenKind.NAME));\n }\n\n return types;\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n // Legacy support for the SDL?\n if (this._options.allowLegacySDLEmptyFields && this.peek(_tokenKind.TokenKind.BRACE_L) && this._lexer.lookahead().kind === _tokenKind.TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseFieldDefinition, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseInputValueDef, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: _kinds.Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n var types = [];\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n // Optional leading pipe\n this.expectOptionalToken(_tokenKind.TokenKind.PIPE);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(_tokenKind.TokenKind.PIPE));\n }\n\n return types;\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: _kinds.Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseEnumValueDefinition, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseInputValueDef, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(_tokenKind.TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: _kinds.Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n // Optional leading pipe\n this.expectOptionalToken(_tokenKind.TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(this.parseDirectiveLocation());\n } while (this.expectOptionalToken(_tokenKind.TokenKind.PIPE));\n\n return locations;\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (_directiveLocation.DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n if (!this._options.noLocation) {\n return new Loc(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n }\n /**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing\n * the lexer. Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken || this._lexer.token;\n return (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always\n * return non-empty list that begins with a lex token of openKind and ends\n * with a lex token of closeKind. Advances the parser to the next lex token\n * after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\n(0, _defineToJSON.default)(Loc, function () {\n return {\n start: this.start,\n end: this.end\n };\n});\n/**\n * A helper function to describe a token as a string for debugging\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDefinitionNode = isDefinitionNode;\nexports.isExecutableDefinitionNode = isExecutableDefinitionNode;\nexports.isSelectionNode = isSelectionNode;\nexports.isValueNode = isValueNode;\nexports.isTypeNode = isTypeNode;\nexports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\nexports.isTypeDefinitionNode = isTypeDefinitionNode;\nexports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\nexports.isTypeExtensionNode = isTypeExtensionNode;\n\nvar _kinds = require(\"./kinds\");\n\nfunction isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\n\nfunction isExecutableDefinitionNode(node) {\n return node.kind === _kinds.Kind.OPERATION_DEFINITION || node.kind === _kinds.Kind.FRAGMENT_DEFINITION;\n}\n\nfunction isSelectionNode(node) {\n return node.kind === _kinds.Kind.FIELD || node.kind === _kinds.Kind.FRAGMENT_SPREAD || node.kind === _kinds.Kind.INLINE_FRAGMENT;\n}\n\nfunction isValueNode(node) {\n return node.kind === _kinds.Kind.VARIABLE || node.kind === _kinds.Kind.INT || node.kind === _kinds.Kind.FLOAT || node.kind === _kinds.Kind.STRING || node.kind === _kinds.Kind.BOOLEAN || node.kind === _kinds.Kind.NULL || node.kind === _kinds.Kind.ENUM || node.kind === _kinds.Kind.LIST || node.kind === _kinds.Kind.OBJECT;\n}\n\nfunction isTypeNode(node) {\n return node.kind === _kinds.Kind.NAMED_TYPE || node.kind === _kinds.Kind.LIST_TYPE || node.kind === _kinds.Kind.NON_NULL_TYPE;\n}\n\nfunction isTypeSystemDefinitionNode(node) {\n return node.kind === _kinds.Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === _kinds.Kind.DIRECTIVE_DEFINITION;\n}\n\nfunction isTypeDefinitionNode(node) {\n return node.kind === _kinds.Kind.SCALAR_TYPE_DEFINITION || node.kind === _kinds.Kind.OBJECT_TYPE_DEFINITION || node.kind === _kinds.Kind.INTERFACE_TYPE_DEFINITION || node.kind === _kinds.Kind.UNION_TYPE_DEFINITION || node.kind === _kinds.Kind.ENUM_TYPE_DEFINITION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\n\nfunction isTypeSystemExtensionNode(node) {\n return node.kind === _kinds.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\n\nfunction isTypeExtensionNode(node) {\n return node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION || node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION || node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION || node.kind === _kinds.Kind.UNION_TYPE_EXTENSION || node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.printLocation = printLocation;\nexports.printSourceLocation = printSourceLocation;\n\nvar _location = require(\"../language/location\");\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n return printSourceLocation(location.source, (0, _location.getLocation)(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\n\nfunction printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var sublineIndex = Math.floor(columnNum / 80);\n var sublineColumnNum = columnNum % 80;\n var sublines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n sublines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), sublines[0]]].concat(sublines.slice(1, sublineIndex + 1).map(function (subline) {\n return ['', subline];\n }), [[' ', whitespace(sublineColumnNum - 1) + '^'], ['', sublines[sublineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.print = print;\n\nvar _visitor = require(\"./visitor\");\n\nvar _blockString = require(\"./blockString\");\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n return (0, _visitor.visit)(ast, {\n leave: printDocASTReducer\n });\n} // TODO: provide better type coverage in future\n\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? (0, _blockString.printBlockString)(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n\nfunction isMultiline(string) {\n return string.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray && maybeArray.some(isMultiline);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Source = void 0;\n\nvar _devAssert = _interopRequireDefault(require(\"../jsutils/devAssert\"));\n\nvar _defineToStringTag = _interopRequireDefault(require(\"../jsutils/defineToStringTag\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\nvar Source = function Source(body, name, locationOffset) {\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n this.locationOffset.line > 0 || (0, _devAssert.default)(0, 'line in locationOffset is 1-indexed and must be positive');\n this.locationOffset.column > 0 || (0, _devAssert.default)(0, 'column in locationOffset is 1-indexed and must be positive');\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\n\nexports.Source = Source;\n(0, _defineToStringTag.default)(Source);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TokenKind = void 0;\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\nexports.TokenKind = TokenKind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\nexports.visitWithTypeInfo = visitWithTypeInfo;\nexports.getVisitFn = getVisitFn;\nexports.BREAK = exports.QueryDocumentKeys = void 0;\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nvar BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + (0, _inspect.default)(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nfunction visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\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","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\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","/*!\n * @license\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n/**\n * Validation, extraction and creation of IBAN, BBAN, BIC/SWIFT numbers plus some other helpful stuff\n * @package Documentation\n * @author Saša Jovanić\n * @module ibantools\n * @version 4.3.0\n * @license MPL-2.0\n * @preferred\n */\n'use strict';\n/**\n * Validate IBAN\n * ```\n * // returns true\n * ibantools.isValidIBAN(\"NL91ABNA0417164300\");\n * ```\n * ```\n * // returns false\n * ibantools.isValidIBAN(\"NL92ABNA0517164300\");\n * ```\n * ```\n * // returns true\n * ibantools.isValidIBAN('CH4431999123000889012');\n * ```\n * ```\n * // returns false\n * ibantools.isValidIBAN('CH4431999123000889012', { allowQRIBAN: false });\n * ```\n */\nexport function isValidIBAN(iban, validationOptions) {\n if (validationOptions === void 0) { validationOptions = { allowQRIBAN: true }; }\n if (iban === undefined || iban === null)\n return false;\n var reg = new RegExp('^[0-9]{2}$', '');\n var countryCode = iban.slice(0, 2);\n var spec = countrySpecs[countryCode];\n if (spec === undefined || spec.bban_regexp === undefined || spec.bban_regexp === null || spec.chars === undefined)\n return false;\n return (spec.chars === iban.length &&\n reg.test(iban.slice(2, 4)) &&\n isValidBBAN(iban.slice(4), countryCode) &&\n isValidIBANChecksum(iban) &&\n (validationOptions.allowQRIBAN || !isQRIBAN(iban)));\n}\n/**\n * IBAM validation errors\n */\nexport var ValidationErrorsIBAN;\n(function (ValidationErrorsIBAN) {\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"NoIBANProvided\"] = 0] = \"NoIBANProvided\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"NoIBANCountry\"] = 1] = \"NoIBANCountry\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"WrongBBANLength\"] = 2] = \"WrongBBANLength\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"WrongBBANFormat\"] = 3] = \"WrongBBANFormat\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"ChecksumNotNumber\"] = 4] = \"ChecksumNotNumber\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"WrongIBANChecksum\"] = 5] = \"WrongIBANChecksum\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"WrongAccountBankBranchChecksum\"] = 6] = \"WrongAccountBankBranchChecksum\";\n ValidationErrorsIBAN[ValidationErrorsIBAN[\"QRIBANNotAllowed\"] = 7] = \"QRIBANNotAllowed\";\n})(ValidationErrorsIBAN || (ValidationErrorsIBAN = {}));\n/**\n * validateIBAN\n * ```\n * // returns {errorCodes: [], valid: true}\n * ibantools.validateIBAN(\"NL91ABNA0417164300\");\n * ```\n * ```\n * ```\n * // returns {errorCodes: [], valid: true}\n * ibantools.validateIBAN('CH4431999123000889012');\n * ```\n * ```\n * // returns {errorCodes: [7], valid: false}\n * ibantools.validateIBAN('CH4431999123000889012', { allowQRIBAN: false });\n * ```\n */\nexport function validateIBAN(iban, validationOptions) {\n if (validationOptions === void 0) { validationOptions = { allowQRIBAN: true }; }\n var result = { errorCodes: [], valid: true };\n if (iban !== undefined && iban !== null && iban !== '') {\n var spec = countrySpecs[iban.slice(0, 2)];\n if (!spec || !(spec.bban_regexp || spec.chars)) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.NoIBANCountry);\n return result;\n }\n if (spec && spec.chars && spec.chars !== iban.length) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.WrongBBANLength);\n }\n if (spec && spec.bban_regexp && !checkFormatBBAN(iban.slice(4), spec.bban_regexp)) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.WrongBBANFormat);\n }\n if (spec && spec.bban_validation_func && !spec.bban_validation_func(iban.slice(4))) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.WrongAccountBankBranchChecksum);\n }\n var reg = new RegExp('^[0-9]{2}$', '');\n if (!reg.test(iban.slice(2, 4))) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.ChecksumNotNumber);\n }\n if (result.errorCodes.indexOf(ValidationErrorsIBAN.WrongBBANFormat) !== -1 || !isValidIBANChecksum(iban)) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.WrongIBANChecksum);\n }\n if (!validationOptions.allowQRIBAN && isQRIBAN(iban)) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.QRIBANNotAllowed);\n }\n }\n else {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsIBAN.NoIBANProvided);\n }\n return result;\n}\n/**\n * Validate BBAN\n *\n * ```\n * // returns true\n * ibantools.isValidBBAN(\"ABNA0417164300\", \"NL\");\n * ```\n * ```\n * // returns false\n * ibantools.isValidBBAN(\"A7NA0517164300\", \"NL\");\n * ```\n */\nexport function isValidBBAN(bban, countryCode) {\n if (bban === undefined || bban === null || countryCode === undefined || countryCode === null)\n return false;\n var spec = countrySpecs[countryCode];\n if (spec === undefined ||\n spec === null ||\n spec.bban_regexp === undefined ||\n spec.bban_regexp === null ||\n spec.chars === undefined ||\n spec.chars === null)\n return false;\n if (spec.chars - 4 === bban.length && checkFormatBBAN(bban, spec.bban_regexp)) {\n if (spec.bban_validation_func) {\n return spec.bban_validation_func(bban.replace(/[\\s.]+/g, ''));\n }\n return true;\n }\n return false;\n}\n/**\n * Validate if country code is from a SEPA country\n * ```\n * // returns true\n * ibantools.isSEPACountry(\"NL\");\n * ```\n * ```\n * // returns false\n * ibantools.isSEPACountry(\"PK\");\n * ```\n */\nexport function isSEPACountry(countryCode) {\n if (countryCode !== undefined && countryCode !== null) {\n var spec = countrySpecs[countryCode];\n if (spec !== undefined) {\n return spec.SEPA ? spec.SEPA : false;\n }\n }\n return false;\n}\n/**\n * Check if IBAN is QR-IBAN\n * ```\n * // returns true\n * ibantools.isQRIBAN(\"CH4431999123000889012\");\n * ```\n * ```\n * // returns false\n * ibantools.isQRIBAN(\"NL92ABNA0517164300\");\n * ```\n */\nexport function isQRIBAN(iban) {\n if (iban === undefined || iban === null)\n return false;\n var countryCode = iban.slice(0, 2);\n var QRIBANCountries = ['LX', 'CH'];\n if (!QRIBANCountries.includes(countryCode))\n return false;\n var reg = new RegExp('^3[0-1]{1}[0-9]{3}$', '');\n return reg.test(iban.slice(4, 9));\n}\n/**\n * composeIBAN\n *\n * ```\n * // returns NL91ABNA0417164300\n * ibantools.composeIBAN({ countryCode: \"NL\", bban: \"ABNA0417164300\" });\n * ```\n */\nexport function composeIBAN(params) {\n var formated_bban = electronicFormatIBAN(params.bban) || '';\n if (params.countryCode === null || params.countryCode === undefined) {\n return null;\n }\n var spec = countrySpecs[params.countryCode];\n if (formated_bban !== '' &&\n spec !== undefined &&\n spec.chars &&\n spec.chars !== null &&\n spec.chars === formated_bban.length + 4 &&\n spec.bban_regexp &&\n spec.bban_regexp !== null &&\n checkFormatBBAN(formated_bban, spec.bban_regexp)) {\n var checksom = mod9710Iban(params.countryCode + '00' + formated_bban);\n return params.countryCode + ('0' + (98 - checksom)).slice(-2) + formated_bban;\n }\n return null;\n}\n/**\n * extractIBAN\n * ```\n * // returns {iban: \"NL91ABNA0417164300\", bban: \"ABNA0417164300\", countryCode: \"NL\", valid: true}\n * ibantools.extractIBAN(\"NL91 ABNA 0417 1643 00\");\n * ```\n */\nexport function extractIBAN(iban) {\n var result = {};\n var eFormatIBAN = electronicFormatIBAN(iban);\n result.iban = eFormatIBAN || iban;\n if (!!eFormatIBAN && isValidIBAN(eFormatIBAN)) {\n result.bban = eFormatIBAN.slice(4);\n result.countryCode = eFormatIBAN.slice(0, 2);\n result.valid = true;\n }\n else {\n result.valid = false;\n }\n return result;\n}\n/**\n * Check BBAN format\n *\n * @ignore\n */\nfunction checkFormatBBAN(bban, bformat) {\n var reg = new RegExp(bformat, '');\n return reg.test(bban);\n}\n/**\n * Get IBAN in electronic format (no spaces)\n * IBAN validation is not performed.\n * When non-string value for IBAN is provided, returns null.\n * ```\n * // returns \"NL91ABNA0417164300\"\n * ibantools.electronicFormatIBAN(\"NL91 ABNA 0417 1643 00\");\n * ```\n */\nexport function electronicFormatIBAN(iban) {\n if (typeof iban !== 'string') {\n return null;\n }\n return iban.replace(/[-\\ ]/g, '').toUpperCase();\n}\n/**\n * Get IBAN in friendly format (separated after every 4 characters)\n * IBAN validation is not performed.\n * When non-string value for IBAN is provided, returns null.\n * ```\n * // returns \"NL91 ABNA 0417 1643 00\"\n * ibantools.friendlyFormatIBAN(\"NL91ABNA0417164300\");\n * ```\n * ```\n * // returns \"NL91-ABNA-0417-1643-00\"\n * ibantools.friendlyFormatIBAN(\"NL91ABNA0417164300\",\"-\");\n * ```\n */\nexport function friendlyFormatIBAN(iban, separator) {\n if (typeof iban !== 'string') {\n return null;\n }\n if (separator === undefined || separator === null) {\n separator = ' ';\n }\n var electronic_iban = electronicFormatIBAN(iban);\n /* istanbul ignore if */\n if (electronic_iban === null) {\n return null;\n }\n return electronic_iban.replace(/(.{4})(?!$)/g, '$1' + separator);\n}\n/**\n * Calculate checksum of IBAN and compares it with checksum provided in IBAN Registry\n *\n * @ignore\n */\nfunction isValidIBANChecksum(iban) {\n var countryCode = iban.slice(0, 2);\n var providedChecksum = parseInt(iban.slice(2, 4), 10);\n var bban = iban.slice(4);\n // Wikipedia[validating_iban] says there are a specif way to check if a IBAN is valid but\n // it. It says 'If the remainder is 1, the check digit test is passed and the\n // IBAN might be valid.'. might, MIGHT!\n // We don't want might but want yes or no. Since every BBAN is IBAN from the fifth\n // (slice(4)) we can generate the IBAN from BBAN and country code(two first characters)\n // from in the IBAN.\n // To generate the (generate the iban check digits)[generating-iban-check]\n // Move the country code to the end\n // remove the checksum from the begging\n // Add \"00\" to the end\n // modulo 97 on the amount\n // subtract remainder from 98, (98 - remainder)\n // Add a leading 0 if the remainder is less then 10 (padStart(2, \"0\")) (we skip this\n // since we compare int, not string)\n //\n // [validating_iban][https://en.wikipedia.org/wiki/International_Bank_Account_Number#Validating_the_IBAN]\n // [generating-iban-check][https://en.wikipedia.org/wiki/International_Bank_Account_Number#Generating_IBAN_check_digits]\n var validationString = replaceCharaterWithCode(\"\".concat(bban).concat(countryCode, \"00\"));\n var rest = mod9710(validationString);\n return 98 - rest === providedChecksum;\n}\n/**\n * Iban contain characters and should be converted to intereger by 55 substracted\n * from there ascii value\n *\n * @ignore\n */\nfunction replaceCharaterWithCode(str) {\n // It is slower but alot more readable\n // https://jsbench.me/ttkzgsekae/1\n return str\n .split('')\n .map(function (c) {\n var code = c.charCodeAt(0);\n return code >= 65 ? (code - 55).toString() : c;\n })\n .join('');\n}\n/**\n * MOD-97-10\n *\n * @ignore\n */\nfunction mod9710Iban(iban) {\n return mod9710(replaceCharaterWithCode(iban.slice(3) + iban.slice(0, 4)));\n}\n/**\n * Returns specifications for all countries, even those who are not\n * members of IBAN registry. `IBANRegistry` field indicates if country\n * is member of not.\n *\n * ```\n * // Validating IBAN form field after user selects his country\n * // \n * $(\"#countries\").select(function() {\n * // Find country\n * let country = ibantools.getCountrySpecifications()[$(this).val()];\n * // Add country code letters to IBAN form field\n * $(\"input#iban\").value($(this).val());\n * // Add New value to \"pattern\" attribute to #iban input text field\n * $(\"input#iban\").attr(\"pattern\", $(this).val() + \"[0-9]{2}\" + country.bban_regexp.slice(1).replace(\"$\",\"\"));\n * });\n * ```\n */\nexport function getCountrySpecifications() {\n var countyMap = {};\n for (var countyCode in countrySpecs) {\n var county = countrySpecs[countyCode];\n countyMap[countyCode] = {\n chars: county.chars || null,\n bban_regexp: county.bban_regexp || null,\n IBANRegistry: county.IBANRegistry || false,\n SEPA: county.SEPA || false,\n };\n }\n return countyMap;\n}\n/**\n * Validate BIC/SWIFT\n *\n * ```\n * // returns true\n * ibantools.isValidBIC(\"ABNANL2A\");\n *\n * // returns true\n * ibantools.isValidBIC(\"NEDSZAJJXXX\");\n *\n * // returns false\n * ibantools.isValidBIC(\"ABN4NL2A\");\n *\n * // returns false\n * ibantools.isValidBIC(\"ABNA NL 2A\");\n * ```\n */\nexport function isValidBIC(bic) {\n if (!bic) {\n return false;\n }\n var reg = new RegExp('^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$', '');\n var spec = countrySpecs[bic.toUpperCase().slice(4, 6)];\n return reg.test(bic) && spec !== undefined;\n}\n/**\n * BIC validation errors\n */\nexport var ValidationErrorsBIC;\n(function (ValidationErrorsBIC) {\n ValidationErrorsBIC[ValidationErrorsBIC[\"NoBICProvided\"] = 0] = \"NoBICProvided\";\n ValidationErrorsBIC[ValidationErrorsBIC[\"NoBICCountry\"] = 1] = \"NoBICCountry\";\n ValidationErrorsBIC[ValidationErrorsBIC[\"WrongBICFormat\"] = 2] = \"WrongBICFormat\";\n})(ValidationErrorsBIC || (ValidationErrorsBIC = {}));\n/**\n * validateBIC\n * ```\n * // returns {errorCodes: [], valid: true}\n * ibantools.validateBIC(\"NEDSZAJJXXX\");\n * ```\n */\nexport function validateBIC(bic) {\n var result = { errorCodes: [], valid: true };\n if (bic !== undefined && bic !== null && bic !== '') {\n var spec = countrySpecs[bic.toUpperCase().slice(4, 6)];\n if (spec === undefined) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsBIC.NoBICCountry);\n }\n else {\n var reg = new RegExp('^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$', '');\n if (!reg.test(bic)) {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsBIC.WrongBICFormat);\n }\n }\n }\n else {\n result.valid = false;\n result.errorCodes.push(ValidationErrorsBIC.NoBICProvided);\n }\n return result;\n}\n/**\n * extractBIC\n * ```\n * // returns {bankCode: \"ABNA\", countryCode: \"NL\", locationCode: \"2A\", branchCode: null, testBIC: flase, valid: true}\n * ibantools.extractBIC(\"ABNANL2A\");\n * ```\n */\nexport function extractBIC(inputBic) {\n var result = {};\n var bic = inputBic.toUpperCase();\n if (isValidBIC(bic)) {\n result.bankCode = bic.slice(0, 4);\n result.countryCode = bic.slice(4, 6);\n result.locationCode = bic.slice(6, 8);\n result.testBIC = result.locationCode[1] === '0' ? true : false;\n result.branchCode = bic.length > 8 ? bic.slice(8) : null;\n result.valid = true;\n }\n else {\n result.valid = false;\n }\n return result;\n}\n/**\n * Used for Norway BBAN check\n *\n * @ignore\n */\nvar checkNorwayBBAN = function (bban) {\n var weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n var bbanWithoutSpacesAndPeriods = bban.replace(/[\\s.]+/g, '');\n var controlDigit = parseInt(bbanWithoutSpacesAndPeriods.charAt(10), 10);\n var bbanWithoutControlDigit = bbanWithoutSpacesAndPeriods.substring(0, 10);\n var sum = 0;\n for (var index = 0; index < 10; index++) {\n sum += parseInt(bbanWithoutControlDigit.charAt(index), 10) * weights[index];\n }\n var remainder = sum % 11;\n return controlDigit === (remainder === 0 ? 0 : 11 - remainder);\n};\n/**\n * Used for Belgian BBAN check\n *\n * @ignore\n */\nvar checkBelgianBBAN = function (bban) {\n var stripped = bban.replace(/[\\s.]+/g, '');\n var checkingPart = parseInt(stripped.substring(0, stripped.length - 2), 10);\n var checksum = parseInt(stripped.substring(stripped.length - 2, stripped.length), 10);\n var remainder = checkingPart % 97 === 0 ? 97 : checkingPart % 97;\n return remainder === checksum;\n};\n/**\n * Mod 97/10 calculation\n *\n * @ignore\n */\nvar mod9710 = function (validationString) {\n while (validationString.length > 2) {\n // > Any computer programming language or software package that is used to compute D\n // > mod 97 directly must have the ability to handle integers of more than 30 digits.\n // > In practice, this can only be done by software that either supports\n // > arbitrary-precision arithmetic or that can handle 219-bit (unsigned) integers\n // https://en.wikipedia.org/wiki/International_Bank_Account_Number#Modulo_operation_on_IBAN\n var part = validationString.slice(0, 6);\n var partInt = parseInt(part, 10);\n if (isNaN(partInt)) {\n return NaN;\n }\n validationString = (partInt % 97) + validationString.slice(part.length);\n }\n return parseInt(validationString, 10) % 97;\n};\n/**\n * Check BBAN based on Mod97/10 calculation for countries that support it:\n * BA, ME, MK, PT, RS, SI\n *\n * @ignore\n */\nvar checkMod9710BBAN = function (bban) {\n var stripped = bban.replace(/[\\s.]+/g, '');\n var reminder = mod9710(stripped);\n return reminder === 1;\n};\n/**\n * Used for Poland BBAN check\n *\n * @ignore\n */\nvar checkPolandBBAN = function (bban) {\n var weights = [3, 9, 7, 1, 3, 9, 7];\n var controlDigit = parseInt(bban.charAt(7), 10);\n var toCheck = bban.substring(0, 7);\n var sum = 0;\n for (var index = 0; index < 7; index++) {\n sum += parseInt(toCheck.charAt(index), 10) * weights[index];\n }\n var remainder = sum % 10;\n return controlDigit === (remainder === 0 ? 0 : 10 - remainder);\n};\n/**\n * Spain (ES) BBAN check\n *\n * @ignore\n */\nvar checkSpainBBAN = function (bban) {\n var weightsBankBranch = [4, 8, 5, 10, 9, 7, 3, 6];\n var weightsAccount = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6];\n var controlBankBranch = parseInt(bban.charAt(8), 10);\n var controlAccount = parseInt(bban.charAt(9), 10);\n var bankBranch = bban.substring(0, 8);\n var account = bban.substring(10, 20);\n var sum = 0;\n for (var index = 0; index < 8; index++) {\n sum += parseInt(bankBranch.charAt(index), 10) * weightsBankBranch[index];\n }\n var remainder = sum % 11;\n if (controlBankBranch !== (remainder === 0 ? 0 : remainder === 1 ? 1 : 11 - remainder)) {\n return false;\n }\n sum = 0;\n for (var index = 0; index < 10; index++) {\n sum += parseInt(account.charAt(index), 10) * weightsAccount[index];\n }\n remainder = sum % 11;\n return controlAccount === (remainder === 0 ? 0 : remainder === 1 ? 1 : 11 - remainder);\n};\n/**\n * Mod 11/10 check\n *\n * @ignore\n */\nvar checkMod1110 = function (toCheck, control) {\n var nr = 10;\n for (var index = 0; index < toCheck.length; index++) {\n nr += parseInt(toCheck.charAt(index), 10);\n if (nr % 10 !== 0) {\n nr = nr % 10;\n }\n nr = nr * 2;\n nr = nr % 11;\n }\n return control === (11 - nr === 10 ? 0 : 11 - nr);\n};\n/**\n * Croatian (HR) BBAN check\n *\n * @ignore\n */\nvar checkCroatianBBAN = function (bban) {\n var controlBankBranch = parseInt(bban.charAt(6), 10);\n var controlAccount = parseInt(bban.charAt(16), 10);\n var bankBranch = bban.substring(0, 6);\n var account = bban.substring(7, 16);\n return checkMod1110(bankBranch, controlBankBranch) && checkMod1110(account, controlAccount);\n};\n/**\n * Czech (CZ) and Slowak (SK) BBAN check\n *\n * @ignore\n */\nvar checkCzechAndSlovakBBAN = function (bban) {\n var weightsPrefix = [10, 5, 8, 4, 2, 1];\n var weightsSuffix = [6, 3, 7, 9, 10, 5, 8, 4, 2, 1];\n var controlPrefix = parseInt(bban.charAt(9), 10);\n var controlSuffix = parseInt(bban.charAt(19), 10);\n var prefix = bban.substring(4, 9);\n var suffix = bban.substring(10, 19);\n var sum = 0;\n for (var index = 0; index < prefix.length; index++) {\n sum += parseInt(prefix.charAt(index), 10) * weightsPrefix[index];\n }\n var remainder = sum % 11;\n if (controlPrefix !== (remainder === 0 ? 0 : remainder === 1 ? 1 : 11 - remainder)) {\n return false;\n }\n sum = 0;\n for (var index = 0; index < suffix.length; index++) {\n sum += parseInt(suffix.charAt(index), 10) * weightsSuffix[index];\n }\n remainder = sum % 11;\n return controlSuffix === (remainder === 0 ? 0 : remainder === 1 ? 1 : 11 - remainder);\n};\n/**\n * Estonian (EE) BBAN check\n *\n * @ignore\n */\nvar checkEstonianBBAN = function (bban) {\n var weights = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7];\n var controlDigit = parseInt(bban.charAt(15), 10);\n var toCheck = bban.substring(2, 15);\n var sum = 0;\n for (var index = 0; index < toCheck.length; index++) {\n sum += parseInt(toCheck.charAt(index), 10) * weights[index];\n }\n var remainder = sum % 10;\n return controlDigit === (remainder === 0 ? 0 : 10 - remainder);\n};\n/**\n * Finland (FI) BBAN check\n *\n * @ignore\n */\nvar checkFinlandBBAN = function (bban) {\n var weights = [2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2];\n var controlDigit = parseInt(bban.charAt(13), 10);\n var toCheck = bban.substring(0, 13);\n var sum = 0;\n for (var index = 0; index < toCheck.length; index++) {\n if (weights[index] === 1) {\n sum += parseInt(toCheck.charAt(index), 10) * weights[index];\n }\n else {\n var value = parseInt(toCheck.charAt(index), 10) * weights[index];\n sum += Math.floor(value / 10) + (value % 10);\n }\n }\n var extraSum = sum + controlDigit;\n var multiDigit = Math.floor(extraSum / 10);\n var result = multiDigit * 10;\n var remainder = result - sum;\n return remainder === controlDigit;\n};\n/**\n * Check French (FR) BBAN\n * Also for Monaco (MC)\n *\n * @ignore\n */\nvar checkFrenchBBAN = function (bban) {\n var stripped = bban.replace(/[\\s.]+/g, '');\n var normalized = Array.from(stripped);\n for (var index = 0; index < stripped.length; index++) {\n var c = normalized[index].charCodeAt(0);\n if (c >= 65) {\n switch (c) {\n case 65:\n case 74:\n normalized[index] = '1';\n break;\n case 66:\n case 75:\n case 83:\n normalized[index] = '2';\n break;\n case 67:\n case 76:\n case 84:\n normalized[index] = '3';\n break;\n case 68:\n case 77:\n case 85:\n normalized[index] = '4';\n break;\n case 69:\n case 78:\n case 86:\n normalized[index] = '5';\n break;\n case 70:\n case 79:\n case 87:\n normalized[index] = '6';\n break;\n case 71:\n case 80:\n case 88:\n normalized[index] = '7';\n break;\n case 72:\n case 81:\n case 89:\n normalized[index] = '8';\n break;\n case 73:\n case 82:\n case 90:\n normalized[index] = '9';\n break;\n }\n }\n }\n var remainder = mod9710(normalized.join(''));\n return remainder === 0;\n};\n/**\n * Hungarian (HU) BBAN check\n *\n * @ignore\n */\nvar checkHungarianBBAN = function (bban) {\n var weights = [9, 7, 3, 1, 9, 7, 3, 1, 9, 7, 3, 1, 9, 7, 3];\n var controlDigitBankBranch = parseInt(bban.charAt(7), 10);\n var toCheckBankBranch = bban.substring(0, 7);\n var sum = 0;\n for (var index = 0; index < toCheckBankBranch.length; index++) {\n sum += parseInt(toCheckBankBranch.charAt(index), 10) * weights[index];\n }\n var remainder = sum % 10;\n if (controlDigitBankBranch !== (remainder === 0 ? 0 : 10 - remainder)) {\n return false;\n }\n sum = 0;\n if (bban.endsWith('00000000')) {\n var toCheckAccount = bban.substring(8, 15);\n var controlDigitAccount = parseInt(bban.charAt(15), 10);\n for (var index = 0; index < toCheckAccount.length; index++) {\n sum += parseInt(toCheckAccount.charAt(index), 10) * weights[index];\n }\n var remainder_1 = sum % 10;\n return controlDigitAccount === (remainder_1 === 0 ? 0 : 10 - remainder_1);\n }\n else {\n var toCheckAccount = bban.substring(8, 23);\n var controlDigitAccount = parseInt(bban.charAt(23), 10);\n for (var index = 0; index < toCheckAccount.length; index++) {\n sum += parseInt(toCheckAccount.charAt(index), 10) * weights[index];\n }\n var remainder_2 = sum % 10;\n return controlDigitAccount === (remainder_2 === 0 ? 0 : 10 - remainder_2);\n }\n};\n/**\n * Set custom BBAN validation function for country.\n *\n * If `bban_validation_func` already exists for the corresponding country,\n * it will be overwritten.\n */\nexport var setCountryBBANValidation = function (country, func) {\n if (typeof countrySpecs[country] === 'undefined') {\n return false;\n }\n countrySpecs[country].bban_validation_func = func;\n return true;\n};\n/**\n * Country specifications\n */\nexport var countrySpecs = {\n AD: {\n chars: 24,\n bban_regexp: '^[0-9]{8}[A-Z0-9]{12}$',\n IBANRegistry: true,\n SEPA: true,\n },\n AE: {\n chars: 23,\n bban_regexp: '^[0-9]{3}[0-9]{16}$',\n IBANRegistry: true,\n },\n AF: {},\n AG: {},\n AI: {},\n AL: {\n chars: 28,\n bban_regexp: '^[0-9]{8}[A-Z0-9]{16}$',\n IBANRegistry: true,\n },\n AM: {},\n AO: {\n chars: 25,\n bban_regexp: '^[0-9]{21}$',\n },\n AQ: {},\n AR: {},\n AS: {},\n AT: { chars: 20, bban_regexp: '^[0-9]{16}$', IBANRegistry: true, SEPA: true },\n AU: {},\n AW: {},\n AX: {\n chars: 18,\n bban_regexp: '^[0-9]{14}$',\n bban_validation_func: checkFinlandBBAN,\n IBANRegistry: true,\n },\n AZ: {\n chars: 28,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{20}$',\n IBANRegistry: true,\n },\n BA: {\n chars: 20,\n bban_regexp: '^[0-9]{16}$',\n bban_validation_func: checkMod9710BBAN,\n IBANRegistry: true,\n },\n BB: {},\n BD: {},\n BE: { chars: 16, bban_regexp: '^[0-9]{12}$', bban_validation_func: checkBelgianBBAN, IBANRegistry: true, SEPA: true },\n BF: {\n chars: 28,\n bban_regexp: '^[A-Z0-9]{2}[0-9]{22}$',\n },\n BG: {\n chars: 22,\n bban_regexp: '^[A-Z]{4}[0-9]{6}[A-Z0-9]{8}$',\n IBANRegistry: true,\n SEPA: true,\n },\n BH: {\n chars: 22,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{14}$',\n IBANRegistry: true,\n },\n BI: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n BJ: {\n chars: 28,\n bban_regexp: '^[A-Z0-9]{2}[0-9]{22}$',\n },\n BL: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n BM: {},\n BN: {},\n BO: {},\n BQ: {},\n BR: {\n chars: 29,\n bban_regexp: '^[0-9]{23}[A-Z]{1}[A-Z0-9]{1}$',\n IBANRegistry: true,\n },\n BS: {},\n BT: {},\n BV: {},\n BW: {},\n BY: {\n chars: 28,\n bban_regexp: '^[A-Z]{4}[0-9]{4}[A-Z0-9]{16}$',\n IBANRegistry: true,\n },\n BZ: {},\n CA: {},\n CC: {},\n CD: {},\n CF: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n CG: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n CH: {\n chars: 21,\n bban_regexp: '^[0-9]{5}[A-Z0-9]{12}$',\n IBANRegistry: true,\n SEPA: true,\n },\n CI: {\n chars: 28,\n bban_regexp: '^[A-Z]{1}[0-9]{23}$',\n },\n CK: {},\n CL: {},\n CM: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n CN: {},\n CO: {},\n CR: {\n chars: 22,\n bban_regexp: '^[0-9]{18}$',\n IBANRegistry: true,\n },\n CU: {},\n CV: { chars: 25, bban_regexp: '^[0-9]{21}$' },\n CW: {},\n CX: {},\n CY: {\n chars: 28,\n bban_regexp: '^[0-9]{8}[A-Z0-9]{16}$',\n IBANRegistry: true,\n SEPA: true,\n },\n CZ: {\n chars: 24,\n bban_regexp: '^[0-9]{20}$',\n bban_validation_func: checkCzechAndSlovakBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n DE: { chars: 22, bban_regexp: '^[0-9]{18}$', IBANRegistry: true, SEPA: true },\n DJ: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n DK: { chars: 18, bban_regexp: '^[0-9]{14}$', IBANRegistry: true, SEPA: true },\n DM: {},\n DO: {\n chars: 28,\n bban_regexp: '^[A-Z]{4}[0-9]{20}$',\n IBANRegistry: true,\n },\n DZ: {\n chars: 26,\n bban_regexp: '^[0-9]{22}$',\n },\n EC: {},\n EE: {\n chars: 20,\n bban_regexp: '^[0-9]{16}$',\n bban_validation_func: checkEstonianBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n EG: { chars: 29, bban_regexp: '^[0-9]{25}', IBANRegistry: true },\n EH: {},\n ER: {},\n ES: {\n chars: 24,\n bban_validation_func: checkSpainBBAN,\n bban_regexp: '^[0-9]{20}$',\n IBANRegistry: true,\n SEPA: true,\n },\n ET: {},\n FI: {\n chars: 18,\n bban_regexp: '^[0-9]{14}$',\n bban_validation_func: checkFinlandBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n FJ: {},\n FK: {},\n FM: {},\n FO: { chars: 18, bban_regexp: '^[0-9]{14}$', IBANRegistry: true },\n FR: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n bban_validation_func: checkFrenchBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n GA: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n GB: {\n chars: 22,\n bban_regexp: '^[A-Z]{4}[0-9]{14}$',\n IBANRegistry: true,\n SEPA: true,\n },\n GD: {},\n GE: {\n chars: 22,\n bban_regexp: '^[A-Z0-9]{2}[0-9]{16}$',\n IBANRegistry: true,\n },\n GF: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n GG: {},\n GH: {},\n GI: {\n chars: 23,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{15}$',\n IBANRegistry: true,\n SEPA: true,\n },\n GL: { chars: 18, bban_regexp: '^[0-9]{14}$', IBANRegistry: true },\n GM: {},\n GN: {},\n GP: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n GQ: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n GR: {\n chars: 27,\n bban_regexp: '^[0-9]{7}[A-Z0-9]{16}$',\n IBANRegistry: true,\n SEPA: true,\n },\n GS: {},\n GT: {\n chars: 28,\n bban_regexp: '^[A-Z0-9]{24}$',\n IBANRegistry: true,\n },\n GU: {},\n GW: {\n chars: 25,\n bban_regexp: '^[A-Z]{2}[0-9]{19}$',\n },\n GY: {},\n HK: {},\n HM: {},\n HN: {\n chars: 28,\n bban_regexp: '^[A-Z]{4}[0-9]{20}$',\n },\n HR: {\n chars: 21,\n bban_regexp: '^[0-9]{17}$',\n bban_validation_func: checkCroatianBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n HT: {},\n HU: {\n chars: 28,\n bban_regexp: '^[0-9]{24}$',\n bban_validation_func: checkHungarianBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n ID: {},\n IE: {\n chars: 22,\n bban_regexp: '^[A-Z0-9]{4}[0-9]{14}$',\n IBANRegistry: true,\n SEPA: true,\n },\n IL: {\n chars: 23,\n bban_regexp: '^[0-9]{19}$',\n IBANRegistry: true,\n },\n IM: {},\n IN: {},\n IO: {},\n IQ: {\n chars: 23,\n bban_regexp: '^[A-Z]{4}[0-9]{15}$',\n IBANRegistry: true,\n },\n IR: {\n chars: 26,\n bban_regexp: '^[0-9]{22}$',\n },\n IS: { chars: 26, bban_regexp: '^[0-9]{22}$', IBANRegistry: true, SEPA: true },\n IT: {\n chars: 27,\n bban_regexp: '^[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$',\n IBANRegistry: true,\n SEPA: true,\n },\n JE: {},\n JM: {},\n JO: {\n chars: 30,\n bban_regexp: '^[A-Z]{4}[0-9]{4}[A-Z0-9]{18}$',\n IBANRegistry: true,\n },\n JP: {},\n KE: {},\n KG: {},\n KH: {},\n KI: {},\n KM: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n KN: {},\n KP: {},\n KR: {},\n KW: {\n chars: 30,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{22}$',\n IBANRegistry: true,\n },\n KY: {},\n KZ: {\n chars: 20,\n bban_regexp: '^[0-9]{3}[A-Z0-9]{13}$',\n IBANRegistry: true,\n },\n LA: {},\n LB: {\n chars: 28,\n bban_regexp: '^[0-9]{4}[A-Z0-9]{20}$',\n IBANRegistry: true,\n },\n LC: {\n chars: 32,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{24}$',\n IBANRegistry: true,\n },\n LI: {\n chars: 21,\n bban_regexp: '^[0-9]{5}[A-Z0-9]{12}$',\n IBANRegistry: true,\n SEPA: true,\n },\n LK: {},\n LR: {},\n LS: {},\n LT: { chars: 20, bban_regexp: '^[0-9]{16}$', IBANRegistry: true, SEPA: true },\n LU: {\n chars: 20,\n bban_regexp: '^[0-9]{3}[A-Z0-9]{13}$',\n IBANRegistry: true,\n SEPA: true,\n },\n LV: {\n chars: 21,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{13}$',\n IBANRegistry: true,\n SEPA: true,\n },\n LY: {\n chars: 25,\n bban_regexp: '^[0-9]{21}$',\n IBANRegistry: true,\n },\n MA: {\n chars: 28,\n bban_regexp: '^[0-9]{24}$',\n },\n MC: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n bban_validation_func: checkFrenchBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n MD: {\n chars: 24,\n bban_regexp: '^[A-Z0-9]{2}[A-Z0-9]{18}$',\n IBANRegistry: true,\n },\n ME: {\n chars: 22,\n bban_regexp: '^[0-9]{18}$',\n bban_validation_func: checkMod9710BBAN,\n IBANRegistry: true,\n },\n MF: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n MG: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n MH: {},\n MK: {\n chars: 19,\n bban_regexp: '^[0-9]{3}[A-Z0-9]{10}[0-9]{2}$',\n bban_validation_func: checkMod9710BBAN,\n IBANRegistry: true,\n },\n ML: {\n chars: 28,\n bban_regexp: '^[A-Z0-9]{2}[0-9]{22}$',\n },\n MM: {},\n MN: {\n chars: 20,\n bban_regexp: '^[0-9]{16}$',\n },\n MO: {},\n MP: {},\n MQ: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n MR: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n IBANRegistry: true,\n },\n MS: {},\n MT: {\n chars: 31,\n bban_regexp: '^[A-Z]{4}[0-9]{5}[A-Z0-9]{18}$',\n IBANRegistry: true,\n SEPA: true,\n },\n MU: {\n chars: 30,\n bban_regexp: '^[A-Z]{4}[0-9]{19}[A-Z]{3}$',\n IBANRegistry: true,\n },\n MV: {},\n MW: {},\n MX: {},\n MY: {},\n MZ: {\n chars: 25,\n bban_regexp: '^[0-9]{21}$',\n },\n NA: {},\n NC: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n NE: {\n chars: 28,\n bban_regexp: '^[A-Z]{2}[0-9]{22}$',\n },\n NF: {},\n NG: {},\n NI: {\n chars: 32,\n bban_regexp: '^[A-Z]{4}[0-9]{24}$',\n },\n NL: {\n chars: 18,\n bban_regexp: '^[A-Z]{4}[0-9]{10}$',\n IBANRegistry: true,\n SEPA: true,\n },\n NO: {\n chars: 15,\n bban_regexp: '^[0-9]{11}$',\n bban_validation_func: checkNorwayBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n NP: {},\n NR: {},\n NU: {},\n NZ: {},\n OM: {},\n PA: {},\n PE: {},\n PF: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n PG: {},\n PH: {},\n PK: {\n chars: 24,\n bban_regexp: '^[A-Z0-9]{4}[0-9]{16}$',\n IBANRegistry: true,\n },\n PL: { chars: 28, bban_validation_func: checkPolandBBAN, bban_regexp: '^[0-9]{24}$', IBANRegistry: true, SEPA: true },\n PM: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n PN: {},\n PR: {},\n PS: {\n chars: 29,\n bban_regexp: '^[A-Z0-9]{4}[0-9]{21}$',\n IBANRegistry: true,\n },\n PT: { chars: 25, bban_regexp: '^[0-9]{21}$', bban_validation_func: checkMod9710BBAN, IBANRegistry: true, SEPA: true },\n PW: {},\n PY: {},\n QA: {\n chars: 29,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{21}$',\n IBANRegistry: true,\n },\n RE: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n RO: {\n chars: 24,\n bban_regexp: '^[A-Z]{4}[A-Z0-9]{16}$',\n IBANRegistry: true,\n SEPA: true,\n },\n RS: {\n chars: 22,\n bban_regexp: '^[0-9]{18}$',\n bban_validation_func: checkMod9710BBAN,\n IBANRegistry: true,\n },\n RU: {},\n RW: {},\n SA: {\n chars: 24,\n bban_regexp: '^[0-9]{2}[A-Z0-9]{18}$',\n IBANRegistry: true,\n },\n SB: {},\n SC: {\n chars: 31,\n bban_regexp: '^[A-Z]{4}[0-9]{20}[A-Z]{3}$',\n IBANRegistry: true,\n },\n SD: {},\n SE: { chars: 24, bban_regexp: '^[0-9]{20}$', IBANRegistry: true, SEPA: true },\n SG: {},\n SH: {},\n SI: {\n chars: 19,\n bban_regexp: '^[0-9]{15}$',\n bban_validation_func: checkMod9710BBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n SJ: {},\n SK: {\n chars: 24,\n bban_regexp: '^[0-9]{20}$',\n bban_validation_func: checkCzechAndSlovakBBAN,\n IBANRegistry: true,\n SEPA: true,\n },\n SL: {},\n SM: {\n chars: 27,\n bban_regexp: '^[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$',\n IBANRegistry: true,\n SEPA: true,\n },\n SN: {\n chars: 28,\n bban_regexp: '^[A-Z]{2}[0-9]{22}$',\n },\n SO: {},\n SR: {},\n SS: {},\n ST: {\n chars: 25,\n bban_regexp: '^[0-9]{21}$',\n IBANRegistry: true,\n },\n SV: {\n chars: 28,\n bban_regexp: '^[A-Z]{4}[0-9]{20}$',\n IBANRegistry: true,\n },\n SX: {},\n SY: {},\n SZ: {},\n TC: {},\n TD: {\n chars: 27,\n bban_regexp: '^[0-9]{23}$',\n },\n TF: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n TG: {\n chars: 28,\n bban_regexp: '^[A-Z]{2}[0-9]{22}$',\n },\n TH: {},\n TJ: {},\n TK: {},\n TL: {\n chars: 23,\n bban_regexp: '^[0-9]{19}$',\n IBANRegistry: true,\n },\n TM: {},\n TN: {\n chars: 24,\n bban_regexp: '^[0-9]{20}$',\n IBANRegistry: true,\n },\n TO: {},\n TR: {\n chars: 26,\n bban_regexp: '^[0-9]{5}[A-Z0-9]{17}$',\n IBANRegistry: true,\n },\n TT: {},\n TV: {},\n TW: {},\n TZ: {},\n UA: {\n chars: 29,\n bban_regexp: '^[0-9]{6}[A-Z0-9]{19}$',\n IBANRegistry: true,\n },\n UG: {},\n UM: {},\n US: {},\n UY: {},\n UZ: {},\n VA: { chars: 22, bban_regexp: '^[0-9]{18}', IBANRegistry: true },\n VC: {},\n VE: {},\n VG: {\n chars: 24,\n bban_regexp: '^[A-Z0-9]{4}[0-9]{16}$',\n IBANRegistry: true,\n },\n VI: {},\n VN: {},\n VU: {},\n WF: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n WS: {},\n XK: {\n chars: 20,\n bban_regexp: '^[0-9]{16}$',\n IBANRegistry: true,\n },\n YE: {},\n YT: {\n chars: 27,\n bban_regexp: '^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$',\n IBANRegistry: true,\n },\n ZA: {},\n ZM: {},\n ZW: {},\n};\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nexport default function isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n","'use strict';\n\nvar Config = {\n DEBUG: false,\n LIB_VERSION: '2.41.0'\n};\n\n// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar window$1;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n window$1 = {\n navigator: { userAgent: '' },\n document: {\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc\n };\n} else {\n window$1 = window;\n}\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype;\nvar FuncProto = Function.prototype;\nvar ObjProto = Object.prototype;\nvar slice = ArrayProto.slice;\nvar toString = ObjProto.toString;\nvar hasOwnProperty = ObjProto.hasOwnProperty;\nvar windowConsole = window$1.console;\nvar navigator$1 = window$1.navigator;\nvar document$1 = window$1.document;\nvar windowOpera = window$1.opera;\nvar screen = window$1.screen;\nvar userAgent = navigator$1.userAgent;\nvar nativeBind = FuncProto.bind;\nvar nativeForEach = ArrayProto.forEach;\nvar nativeIndexOf = ArrayProto.indexOf;\nvar nativeMap = ArrayProto.map;\nvar nativeIsArray = Array.isArray;\nvar breaker = {};\nvar _ = {\n trim: function(str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n};\n\n// Console override\nvar console = {\n /** @type {function(...*)} */\n log: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n try {\n windowConsole.log.apply(windowConsole, arguments);\n } catch (err) {\n _.each(arguments, function(arg) {\n windowConsole.log(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n warn: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n try {\n windowConsole.warn.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.warn(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n error: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n critical: function() {\n if (!_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n return function() {\n arguments[0] = '[' + prefix + '] ' + arguments[0];\n return func.apply(console, arguments);\n };\n};\nvar console_with_prefix = function(prefix) {\n return {\n log: log_func_with_prefix(console.log, prefix),\n error: log_func_with_prefix(console.error, prefix),\n critical: log_func_with_prefix(console.critical, prefix)\n };\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) {\n return nativeBind.apply(func, slice.call(arguments, 1));\n }\n if (!_.isFunction(func)) {\n throw new TypeError();\n }\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) {\n return func.apply(context, args.concat(slice.call(arguments)));\n }\n var ctor = {};\n ctor.prototype = func.prototype;\n var self = new ctor();\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return self;\n };\n return bound;\n};\n\n_.bind_instance_methods = function(obj) {\n for (var func in obj) {\n if (typeof(obj[func]) === 'function') {\n obj[func] = _.bind(obj[func], obj);\n }\n }\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n return;\n }\n }\n } else {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) {\n return;\n }\n }\n }\n }\n};\n\n_.escapeHTML = function(s) {\n var escaped = s;\n if (escaped && _.isString(escaped)) {\n escaped = escaped\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n return escaped;\n};\n\n_.extend = function(obj) {\n _.each(slice.call(arguments, 1), function(source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\n\n_.isArguments = function(obj) {\n return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n if (!iterable) {\n return [];\n }\n if (iterable.toArray) {\n return iterable.toArray();\n }\n if (_.isArray(iterable)) {\n return slice.call(iterable);\n }\n if (_.isArguments(iterable)) {\n return slice.call(iterable);\n }\n return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n if (nativeMap && arr.map === nativeMap) {\n return arr.map(callback, context);\n } else {\n var results = [];\n _.each(arr, function(item) {\n results.push(callback.call(context, item));\n });\n return results;\n }\n};\n\n_.keys = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value, key) {\n results[results.length] = key;\n });\n return results;\n};\n\n_.values = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value) {\n results[results.length] = value;\n });\n return results;\n};\n\n_.include = function(obj, target) {\n var found = false;\n if (obj === null) {\n return found;\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n _.each(obj, function(value) {\n if (found || (found = (value === target))) {\n return breaker;\n }\n });\n return found;\n};\n\n_.includes = function(str, needle) {\n return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n subclass.prototype = new superclass();\n subclass.prototype.constructor = subclass;\n subclass.superclass = superclass.prototype;\n return subclass;\n};\n\n_.isObject = function(obj) {\n return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n if (_.isObject(obj)) {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\n_.isUndefined = function(obj) {\n return obj === void 0;\n};\n\n_.isString = function(obj) {\n return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n _.each(obj, function(v, k) {\n if (_.isDate(v)) {\n obj[k] = _.formatDate(v);\n } else if (_.isObject(v)) {\n obj[k] = _.encodeDates(v); // recurse\n }\n });\n return obj;\n};\n\n_.timestamp = function() {\n Date.now = Date.now || function() {\n return +new Date;\n };\n return Date.now();\n};\n\n_.formatDate = function(d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear() + '-' +\n pad(d.getUTCMonth() + 1) + '-' +\n pad(d.getUTCDate()) + 'T' +\n pad(d.getUTCHours()) + ':' +\n pad(d.getUTCMinutes()) + ':' +\n pad(d.getUTCSeconds());\n};\n\n_.safewrap = function(f) {\n return function() {\n try {\n return f.apply(this, arguments);\n } catch (e) {\n console.critical('Implementation error. Please turn on debug and contact support@mixpanel.com.');\n if (Config.DEBUG){\n console.critical(e);\n }\n }\n };\n};\n\n_.safewrap_class = function(klass, functions) {\n for (var i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = _.safewrap(klass.prototype[functions[i]]);\n }\n};\n\n_.safewrap_instance_methods = function(obj) {\n for (var func in obj) {\n if (typeof(obj[func]) === 'function') {\n obj[func] = _.safewrap(obj[func]);\n }\n }\n};\n\n_.strip_empty_properties = function(p) {\n var ret = {};\n _.each(p, function(v, k) {\n if (_.isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = (function() {\n\n // Time/ticks information\n // 1*new Date() is a cross browser version of Date.now()\n var T = function() {\n var d = 1 * new Date(),\n i = 0;\n\n // this while loop figures how many browser ticks go by\n // before 1*new Date() returns a new number, ie the amount\n // of ticks that go by per millisecond\n while (d == 1 * new Date()) {\n i++;\n }\n\n return d.toString(16) + i.toString(16);\n };\n\n // Math.Random entropy\n var R = function() {\n return Math.random().toString(16).replace('.', '');\n };\n\n // User agent entropy\n // This function takes the user agent string, and then xors\n // together each sequence of 8 bytes. This produces a final\n // sequence of 8 bytes which it returns as hex.\n var UA = function() {\n var ua = userAgent,\n i, ch, buffer = [],\n ret = 0;\n\n function xor(result, byte_array) {\n var j, tmp = 0;\n for (j = 0; j < byte_array.length; j++) {\n tmp |= (buffer[j] << j * 8);\n }\n return result ^ tmp;\n }\n\n for (i = 0; i < ua.length; i++) {\n ch = ua.charCodeAt(i);\n buffer.unshift(ch & 0xFF);\n if (buffer.length >= 4) {\n ret = xor(ret, buffer);\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n ret = xor(ret, buffer);\n }\n\n return ret.toString(16);\n };\n\n return function() {\n var se = (screen.height * screen.width).toString(16);\n return (T() + '-' + R() + '-' + UA() + '-' + se + '-' + T());\n };\n})();\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'facebookexternal',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandexbot',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n\n var supported = true;\n try {\n storage = storage || window.localStorage;\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n\n _localStorageSupported = supported;\n return supported;\n};\n\n// _.localStorage\n_.localStorage = {\n is_supported: function(force_check) {\n var supported = localStorageSupported(null, force_check);\n if (!supported) {\n console.error('localStorage unsupported; falling back to cookie store');\n }\n return supported;\n },\n\n error: function(msg) {\n console.error('localStorage error: ' + msg);\n },\n\n get: function(name) {\n try {\n return window.localStorage.getItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n return null;\n },\n\n parse: function(name) {\n try {\n return _.JSONDecode(_.localStorage.get(name)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n\n set: function(name, value) {\n try {\n window.localStorage.setItem(name, value);\n } catch (err) {\n _.localStorage.error(err);\n }\n },\n\n remove: function(name) {\n try {\n window.localStorage.removeItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n }\n};\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(window.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\n_.info = {\n campaignParams: function() {\n var campaign_keywords = 'utm_source utm_medium utm_campaign utm_content utm_term'.split(' '),\n kw = '',\n params = {};\n _.each(campaign_keywords, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n }\n });\n\n return params;\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': window$1.location.href,\n '$browser_version': _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n });\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera)\n });\n },\n\n pageviewInfo: function(page) {\n return _.strip_empty_properties({\n 'mp_page': page,\n 'mp_referrer': document$1.referrer,\n 'mp_browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera),\n 'mp_platform': _.info.os()\n });\n }\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n/**\n * Check deterministically whether to include or exclude from a feature rollout/test based on the\n * given string and the desired percentage to include.\n * @param {String} str - string to run the check against (for instance a project's token)\n * @param {String} feature - name of feature (for inclusion in hash, to ensure different results\n * for different features)\n * @param {Number} percent_allowed - percentage chance that a given string will be included\n * @returns {Boolean} whether the given string should be included\n */\nvar determine_eligibility = _.safewrap(function(str, feature, percent_allowed) {\n str = str + feature;\n\n // Bernstein's hash: http://www.cse.yorku.ca/~oz/hash.html#djb2\n var hash = 5381;\n for (var i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash) + str.charCodeAt(i);\n hash = hash & hash;\n }\n var dart = (hash >>> 0) % 100;\n return dart < percent_allowed;\n});\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\nvar JSONStringify = null;\nvar JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// EXPORTS (for closure compiler)\n_['toArray'] = _.toArray;\n_['isObject'] = _.isObject;\n_['JSONEncode'] = _.JSONEncode;\n_['JSONDecode'] = _.JSONDecode;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['info'] = _.info;\n_['info']['device'] = _.info.device;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['properties'] = _.info.properties;\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\n// eslint-disable-line camelcase\n\nvar logger$2 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, errorCB, pid) {\n if (!pid && typeof errorCB !== 'function') {\n pid = errorCB;\n errorCB = null;\n }\n\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var reportError = function(err) {\n errorCB && errorCB(err);\n };\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$2.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reportError(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n throw new Error('localStorage support dropped while acquiring lock');\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n try {\n lockedCB();\n } finally {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n }\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reportError(err);\n }\n};\n\n// eslint-disable-line camelcase\n\nvar logger$1 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function(storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.storage = options.storage || window.localStorage;\n this.lock = new SharedLock(storageKey, {storage: this.storage});\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function(item, flushInterval, cb) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue.push(queueEntry);\n succeeded = this.saveToStorage(storedQueue);\n if (succeeded) {\n // only add to in-memory queue when storage succeeds\n this.memQueue.push(queueEntry);\n }\n } catch(err) {\n logger$1.error('Error enqueueing item', item);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), function lockFailure(err) {\n logger$1.error('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this.pid);\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function(batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n var storedQueue = this.readFromStorage();\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function(item) { idsInBatch[item['id']] = true; });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n }\n return batch;\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function(items, idSet) {\n var filteredItems = [];\n _.each(items, function(item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function(ids, cb) {\n var idSet = {}; // poor man's Set\n _.each(ids, function(id) { idSet[id] = true; });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n succeeded = this.saveToStorage(storedQueue);\n } catch(err) {\n logger$1.error('Error removing items', ids);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), function lockFailure(err) {\n logger$1.error('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this.pid);\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function(existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function(item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function(itemsToUpdate, cb) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n succeeded = this.saveToStorage(storedQueue);\n } catch(err) {\n logger$1.error('Error updating items', itemsToUpdate);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), function lockFailure(err) {\n logger$1.error('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this.pid);\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function() {\n var storageEntry;\n try {\n storageEntry = this.storage.getItem(this.storageKey);\n if (storageEntry) {\n storageEntry = JSONParse(storageEntry);\n if (!_.isArray(storageEntry)) {\n logger$1.error('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n } catch (err) {\n logger$1.error('Error retrieving queue', err);\n storageEntry = null;\n }\n return storageEntry || [];\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function(queue) {\n try {\n this.storage.setItem(this.storageKey, JSONStringify(queue));\n return true;\n } catch (err) {\n logger$1.error('Error saving queue', err);\n return false;\n }\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function() {\n this.memQueue = [];\n this.storage.removeItem(this.storageKey);\n};\n\n// eslint-disable-line camelcase\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.queue = new RequestQueue(storageKey, {storage: options.storage});\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item, cb) {\n this.queue.enqueue(item, this.flushInterval, cb);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(this.flush, this), this.flushInterval);\n }\n};\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n try {\n\n if (this.requestInProgress) {\n logger.log('Flush: Request already in progress');\n return;\n }\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n var batch = this.queue.fillBatch(currentBatchSize);\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n dataForRequest.push(payload);\n }\n transformedItems[item['id']] = payload;\n }, this);\n if (dataForRequest.length < 1) {\n this.resetFlush();\n return; // nothing to do\n }\n\n this.requestInProgress = true;\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n var removeItemsFromQueue = false;\n if (options.unloading) {\n // update persisted data to include hook transformations\n this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n logger.error('Network timeout; retrying');\n this.flush();\n } else if (\n _.isObject(res) &&\n res.xhr_req &&\n (res.xhr_req['status'] >= 500 || res.xhr_req['status'] <= 0)\n ) {\n // network or API error, retry\n var retryMS = this.flushInterval * 2;\n var headers = res.xhr_req['responseHeaders'];\n if (headers) {\n var retryAfter = headers['Retry-After'];\n if (retryAfter) {\n retryMS = (parseInt(retryAfter, 10) * 1000) || retryMS;\n }\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n logger.error('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n } else if (_.isObject(res) && res.xhr_req && res.xhr_req['status'] === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n logger.error('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n } else {\n logger.error('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n removeItemsFromQueue = true;\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n removeItemsFromQueue = true;\n }\n\n if (removeItemsFromQueue) {\n this.queue.removeItemsByID(\n _.map(batch, function(item) { return item['id']; }),\n _.bind(this.flush, this) // handle next batch if the queue isn't empty\n );\n }\n\n } catch(err) {\n logger.error('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger.log('MIXPANEL REQUEST:', dataForRequest);\n this.sendRequest(dataForRequest, requestOptions, batchSendCallback);\n\n } catch(err) {\n logger.error('Error flushing request queue', err);\n this.resetFlush();\n }\n};\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win = (options && options.window) || window$1;\n var nav = win['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n * mixpanel.get_group('company', 'mixpanel').delete();\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/groups/',\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var CAMPAIGN_IDS_KEY = '__cmpns';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n CAMPAIGN_IDS_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade(config);\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function(config) {\n var upgrade_from_old_lib = config['upgrade'],\n old_cookie_name,\n old_cookie;\n\n if (upgrade_from_old_lib) {\n old_cookie_name = 'mp_super_properties';\n // Case where they had a custom cookie name before.\n if (typeof(upgrade_from_old_lib) === 'string') {\n old_cookie_name = upgrade_from_old_lib;\n }\n\n old_cookie = this.storage.parse(old_cookie_name);\n\n // remove the cookie\n this.storage.remove(old_cookie_name);\n this.storage.remove(old_cookie_name, true);\n\n if (old_cookie) {\n this['props'] = _.extend(\n this['props'],\n old_cookie['all'],\n old_cookie['events']\n );\n }\n }\n\n if (!config['cookie_name'] && config['name'] !== 'mixpanel') {\n // special case to handle people with cookies of the form\n // mp_TOKEN_INSTANCENAME from the first release of this library\n old_cookie_name = 'mp_' + config['token'] + '_' + config['name'];\n old_cookie = this.storage.parse(old_cookie_name);\n\n if (old_cookie) {\n this.storage.remove(old_cookie_name);\n this.storage.remove(old_cookie_name, true);\n\n // Save the prop values that were in the cookie from before -\n // this should only happen once as we delete the old one.\n this.register_once(old_cookie);\n }\n }\n\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n this._expire_notification_campaigns();\n this.storage.set(\n this.name,\n _.JSONEncode(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n _.extend(this['props'], props);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._expire_notification_campaigns = _.safewrap(function() {\n var campaigns_shown = this['props'][CAMPAIGN_IDS_KEY],\n EXPIRY_TIME = Config.DEBUG ? 60 * 1000 : 60 * 60 * 1000; // 1 minute (Config.DEBUG) / 1 hour (PDXN)\n if (!campaigns_shown) {\n return;\n }\n for (var campaign_id in campaigns_shown) {\n if (1 * new Date() - campaigns_shown[campaign_id] > EXPIRY_TIME) {\n delete campaigns_shown[campaign_id];\n }\n }\n if (_.isEmptyObject(campaigns_shown)) {\n delete this['props'][CAMPAIGN_IDS_KEY];\n }\n});\n\nMixpanelPersistence.prototype.update_campaign_params = function() {\n if (!this.campaign_params_saved) {\n this.register_once(_.info.campaignParams());\n this.campaign_params_saved = true;\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\n// safely fills the passed in object with stored properties,\n// does not override any properties defined in both\n// returns the passed in object\nMixpanelPersistence.prototype.safe_merge = function(props) {\n _.each(this['props'], function(val, prop) {\n if (!(prop in props)) {\n props[prop] = val;\n }\n });\n\n return props;\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // We may send duplicates, the server will dedup them.\n union_q[k] = union_q[k].concat(v);\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this._get_queue(queue);\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_queue = function(queue) {\n return this['props'][this._get_queue_key(queue)];\n};\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this['props'][EVENT_TIMERS_KEY] || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this['props'][EVENT_TIMERS_KEY] || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/*\n * This file is a js implementation for a subset in eval_node.c\n */\n\n/*\n * Constants\n */\n// Metadata keys\n/** @const */ var OPERATOR_KEY = 'operator';\n/** @const */ var PROPERTY_KEY = 'property';\n/** @const */ var WINDOW_KEY = 'window';\n/** @const */ var UNIT_KEY = 'unit';\n/** @const */ var VALUE_KEY = 'value';\n/** @const */ var HOUR_KEY = 'hour';\n/** @const */ var DAY_KEY = 'day';\n/** @const */ var WEEK_KEY = 'week';\n/** @const */ var MONTH_KEY = 'month';\n\n// Operands\n/** @const */ var EVENT_PROPERTY = 'event';\n/** @const */ var LITERAL_PROPERTY = 'literal';\n\n// Binary Operators\n/** @const */ var AND_OPERATOR = 'and';\n/** @const */ var OR_OPERATOR = 'or';\n/** @const */ var IN_OPERATOR = 'in';\n/** @const */ var NOT_IN_OPERATOR = 'not in';\n/** @const */ var PLUS_OPERATOR = '+';\n/** @const */ var MINUS_OPERATOR = '-';\n/** @const */ var MUL_OPERATOR = '*';\n/** @const */ var DIV_OPERATOR = '/';\n/** @const */ var MOD_OPERATOR = '%';\n/** @const */ var EQUALS_OPERATOR = '==';\n/** @const */ var NOT_EQUALS_OPERATOR = '!=';\n/** @const */ var GREATER_OPERATOR = '>';\n/** @const */ var LESS_OPERATOR = '<';\n/** @const */ var GREATER_EQUAL_OPERATOR = '>=';\n/** @const */ var LESS_EQUAL_OPERATOR = '<=';\n\n// Typecast Operators\n/** @const */ var BOOLEAN_OPERATOR = 'boolean';\n/** @const */ var DATETIME_OPERATOR = 'datetime';\n/** @const */ var LIST_OPERATOR = 'list';\n/** @const */ var NUMBER_OPERATOR = 'number';\n/** @const */ var STRING_OPERATOR = 'string';\n\n// Unary Operators\n/** @const */ var NOT_OPERATOR = 'not';\n/** @const */ var DEFINED_OPERATOR = 'defined';\n/** @const */ var NOT_DEFINED_OPERATOR = 'not defined';\n\n// Special literals\n/** @const */ var NOW_LITERAL = 'now';\n\n// Type cast functions\nfunction toNumber(value) {\n if (value === null) {\n return null;\n }\n\n switch (typeof(value)) {\n case 'object':\n if (_.isDate(value) && value.getTime() >= 0) {\n return value.getTime();\n }\n return null;\n case 'boolean':\n return Number(value);\n case 'number':\n return value;\n case 'string':\n value = Number(value);\n if (!isNaN(value)) {\n return value;\n }\n return 0;\n }\n return null;\n}\n\nfunction evaluateNumber(op, properties) {\n if (!op['operator'] || op['operator'] !== NUMBER_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw ('Invalid cast operator: number ' + op);\n }\n\n return toNumber(evaluateSelector(op['children'][0], properties));\n}\n\nfunction toBoolean(value) {\n if (value === null) {\n return false;\n }\n\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'number':\n return value !== 0.0;\n case 'string':\n return value.length > 0;\n case 'object':\n if (_.isArray(value) && value.length > 0) {\n return true;\n }\n if (_.isDate(value) && value.getTime() > 0) {\n return true;\n }\n if (_.isObject(value) && !_.isEmptyObject(value)) {\n return true;\n }\n return false;\n }\n return false;\n}\n\nfunction evaluateBoolean(op, properties) {\n if (!op['operator'] || op['operator'] !== BOOLEAN_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw ('Invalid cast operator: boolean ' + op);\n }\n\n return toBoolean(evaluateSelector(op['children'][0], properties));\n}\n\nfunction evaluateDateTime(op, properties) {\n if (!op['operator'] || op['operator'] !== DATETIME_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw ('Invalid cast operator: datetime ' + op);\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n if (v === null) {\n return null;\n }\n\n switch (typeof(v)) {\n case 'number':\n case 'string':\n var d = new Date(v);\n if (isNaN(d.getTime())) {\n return null;\n }\n return d;\n case 'object':\n if (_.isDate(v)) {\n return v;\n }\n }\n\n return null;\n}\n\nfunction evaluateList(op, properties) {\n if (!op['operator'] || op['operator'] !== LIST_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw ('Invalid cast operator: list ' + op);\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n if (v === null) {\n return null;\n }\n\n if (_.isArray(v)) {\n return v;\n }\n\n return null;\n}\n\nfunction evaluateString(op, properties) {\n if (!op['operator'] || op['operator'] !== STRING_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw ('Invalid cast operator: string ' + op);\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n switch (typeof(v)) {\n case 'object':\n if (_.isDate(v)) {\n return v.toJSON();\n }\n return JSON.stringify(v);\n }\n return String(v);\n}\n\n// Operators\nfunction evaluateAnd(op, properties) {\n if (!op['operator'] || op['operator'] !== AND_OPERATOR || !op['children'] || op['children'].length !== 2) {\n throw ('Invalid operator: AND ' + op);\n }\n\n return toBoolean(evaluateSelector(op['children'][0], properties)) && toBoolean(evaluateSelector(op['children'][1], properties));\n}\n\nfunction evaluateOr(op, properties) {\n if (!op['operator'] || op['operator'] !== OR_OPERATOR || !op['children'] || op['children'].length !== 2) {\n throw ('Invalid operator: OR ' + op);\n }\n\n return toBoolean(evaluateSelector(op['children'][0], properties)) || toBoolean(evaluateSelector(op['children'][1], properties));\n}\n\nfunction evaluateIn(op, properties) {\n if (!op['operator'] || [IN_OPERATOR, NOT_IN_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length !== 2) {\n throw ('Invalid operator: IN/NOT IN ' + op);\n }\n var leftValue = evaluateSelector(op['children'][0], properties);\n var rightValue = evaluateSelector(op['children'][1], properties);\n\n if (!_.isArray(rightValue) && !_.isString(rightValue)) {\n throw ('Invalid operand for operator IN: invalid type' + rightValue);\n }\n\n var v = rightValue.indexOf(leftValue) > -1;\n if (op['operator'] === NOT_IN_OPERATOR) {\n return !v;\n }\n return v;\n}\n\nfunction evaluatePlus(op, properties) {\n if (!op['operator'] || op['operator'] !== PLUS_OPERATOR || !op['children'] || op['children'].length < 2) {\n throw ('Invalid operator: PLUS ' + op);\n }\n var l = evaluateSelector(op['children'][0], properties);\n var r = evaluateSelector(op['children'][1], properties);\n\n if (typeof l === 'number' && typeof r === 'number') {\n return l + r;\n }\n if (typeof l === 'string' && typeof r === 'string') {\n return l + r;\n }\n return null;\n}\n\nfunction evaluateArithmetic(op, properties) {\n if (!op['operator'] || [MINUS_OPERATOR, MUL_OPERATOR, DIV_OPERATOR, MOD_OPERATOR].indexOf(op['operator']) === -1 ||\n !op['children'] || op['children'].length < 2) {\n throw ('Invalid arithmetic operator ' + op);\n }\n\n var l = evaluateSelector(op['children'][0], properties);\n var r = evaluateSelector(op['children'][1], properties);\n\n if (typeof l === 'number' && typeof r === 'number') {\n switch (op['operator']) {\n case MINUS_OPERATOR:\n return l - r;\n case MUL_OPERATOR:\n return l * r;\n case DIV_OPERATOR:\n if (r !== 0) {\n return l / r;\n }\n return null;\n case MOD_OPERATOR:\n if (r === 0) {\n return null;\n }\n if (l === 0) {\n return 0;\n }\n if ((l < 0 && r > 0) || (l > 0 && r < 0)) {\n /* Mimic python modulo - result takes sign of the divisor\n * if one operand is negative. */\n return -(Math.floor(l / r) * r - l);\n }\n return l % r;\n default:\n throw('Unknown operator: ' + op['operator']);\n }\n }\n\n return null;\n}\n\nfunction _isArrayEqual(l, r) {\n if (l === r) return true;\n if (l === null || r === null) return false;\n if (l.length !== r.length) return false;\n\n for (var i = 0; i < l.length; i++) {\n if (l[i] !== r[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isEqual(l, r) {\n if ( l === null && l === r ) {\n return true;\n }\n if (typeof l === typeof r) {\n switch (typeof l) {\n case 'number':\n case 'string':\n case 'boolean':\n return l === r;\n case 'object':\n if (_.isArray(l) && _.isArray(r)) {\n return _isArrayEqual(l, r);\n }\n if (_.isDate(l) && _.isDate(r)) {\n return l.getTime() === r.getTime();\n }\n if (_.isObject(l) && _.isObject(r)) {\n return JSON.stringify(l) === JSON.stringify(r);\n }\n }\n }\n return false;\n}\n\nfunction evaluateEquality(op, properties) {\n if (!op['operator'] || [EQUALS_OPERATOR, NOT_EQUALS_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length !== 2) {\n throw ('Invalid equality operator ' + op);\n }\n\n var v = _isEqual(evaluateSelector(op['children'][0], properties), evaluateSelector(op['children'][1], properties));\n\n switch (op['operator']) {\n case EQUALS_OPERATOR:\n return v;\n case NOT_EQUALS_OPERATOR:\n return !v;\n }\n}\n\nfunction evaluateComparison(op, properties) {\n if (!op['operator'] ||\n [GREATER_OPERATOR, GREATER_EQUAL_OPERATOR, LESS_OPERATOR, LESS_EQUAL_OPERATOR].indexOf(op['operator']) === -1 ||\n !op['children'] || op['children'].length !== 2) {\n throw ('Invalid comparison operator ' + op);\n }\n var l = evaluateSelector(op['children'][0], properties);\n var r = evaluateSelector(op['children'][1], properties);\n\n if (typeof(l) === typeof(r)) {\n if (typeof(r) === 'number' || _.isDate(r)) {\n l = toNumber(l);\n r = toNumber(r);\n switch (op['operator']) {\n case GREATER_OPERATOR:\n return l > r;\n case GREATER_EQUAL_OPERATOR:\n return l >= r;\n case LESS_OPERATOR:\n return l < r;\n case LESS_EQUAL_OPERATOR:\n return l <= r;\n }\n } else if (typeof(r) === 'string') {\n var compare = l.localeCompare(r);\n switch (op['operator']) {\n case GREATER_OPERATOR:\n return compare > 0;\n case GREATER_EQUAL_OPERATOR:\n return compare >= 0;\n case LESS_OPERATOR:\n return compare < 0;\n case LESS_EQUAL_OPERATOR:\n return compare <= 0;\n }\n }\n }\n\n return null;\n}\n\nfunction evaluateDefined(op, properties) {\n if (!op['operator'] || [DEFINED_OPERATOR, NOT_DEFINED_OPERATOR].indexOf(op['operator']) === -1 ||\n !op['children'] || op['children'].length !== 1) {\n throw ('Invalid defined/not defined operator: ' + op);\n }\n\n var b = evaluateSelector(op['children'][0], properties) !== null;\n if (op['operator'] === NOT_DEFINED_OPERATOR) {\n return !b;\n }\n\n return b;\n}\n\nfunction evaluateNot(op, properties) {\n if (!op['operator'] || op['operator'] !== NOT_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw ('Invalid not operator: ' + op);\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n if (v === null) {\n return true;\n }\n\n if (typeof(v) === 'boolean') {\n return !v;\n }\n\n return null;\n}\n\nfunction evaluateOperator(op, properties) {\n if (!op['operator']) {\n throw ('Invalid operator: operator key missing ' + op);\n }\n\n switch (op['operator']) {\n case AND_OPERATOR:\n return evaluateAnd(op, properties);\n case OR_OPERATOR:\n return evaluateOr(op, properties);\n case IN_OPERATOR:\n case NOT_IN_OPERATOR:\n return evaluateIn(op, properties);\n case PLUS_OPERATOR:\n return evaluatePlus(op, properties);\n case MINUS_OPERATOR:\n case MUL_OPERATOR:\n case DIV_OPERATOR:\n case MOD_OPERATOR:\n return evaluateArithmetic(op, properties);\n case EQUALS_OPERATOR:\n case NOT_EQUALS_OPERATOR:\n return evaluateEquality(op, properties);\n case GREATER_OPERATOR:\n case LESS_OPERATOR:\n case GREATER_EQUAL_OPERATOR:\n case LESS_EQUAL_OPERATOR:\n return evaluateComparison(op, properties);\n case BOOLEAN_OPERATOR:\n return evaluateBoolean(op, properties);\n case DATETIME_OPERATOR:\n return evaluateDateTime(op, properties);\n case LIST_OPERATOR:\n return evaluateList(op, properties);\n case NUMBER_OPERATOR:\n return evaluateNumber(op, properties);\n case STRING_OPERATOR:\n return evaluateString(op, properties);\n case DEFINED_OPERATOR:\n case NOT_DEFINED_OPERATOR:\n return evaluateDefined(op, properties);\n case NOT_OPERATOR:\n return evaluateNot(op, properties);\n }\n}\n\nfunction evaluateWindow(value) {\n var win = value[WINDOW_KEY];\n if (!win || !win[UNIT_KEY] || !win[VALUE_KEY]) {\n throw('Invalid window: missing required keys ' + JSON.stringify(value));\n }\n var out = new Date();\n switch (win[UNIT_KEY]) {\n case HOUR_KEY:\n out.setTime(out.getTime() + (win[VALUE_KEY]*-1*60*60*1000));\n break;\n case DAY_KEY:\n out.setTime(out.getTime() + (win[VALUE_KEY]*-1*24*60*60*1000));\n break;\n case WEEK_KEY:\n out.setTime(out.getTime() + (win[VALUE_KEY]*-1*7*24*60*60*1000));\n break;\n case MONTH_KEY:\n out.setTime(out.getTime() + (win[VALUE_KEY]*-1*30*24*60*60*1000));\n break;\n default:\n throw('Invalid unit: ' + win[UNIT_KEY]);\n }\n\n return out;\n}\n\nfunction evaluateOperand(op, properties) {\n if (!op['property'] || !op['value']) {\n throw('Invalid operand: missing required keys ' + op);\n }\n switch (op['property']) {\n case EVENT_PROPERTY:\n if (properties[op['value']] !== undefined) {\n return properties[op['value']];\n }\n return null;\n case LITERAL_PROPERTY:\n if (op['value'] === NOW_LITERAL) {\n return new Date();\n }\n if (typeof(op['value']) === 'object') {\n return evaluateWindow(op['value']);\n }\n return op['value'];\n default:\n throw('Invalid operand: Invalid property type ' + op['property']);\n }\n}\n\nfunction evaluateSelector(filters, properties) {\n if (filters[PROPERTY_KEY]) {\n return evaluateOperand(filters, properties);\n }\n if (filters[OPERATOR_KEY]) {\n return evaluateOperator(filters, properties);\n }\n}\n\n// Internal class for notification display\n\nvar MixpanelNotification = function(notif_data, mixpanel_instance) {\n _.bind_instance_methods(this);\n\n this.mixpanel = mixpanel_instance;\n this.persistence = this.mixpanel['persistence'];\n this.resource_protocol = this.mixpanel.get_config('inapp_protocol');\n this.cdn_host = this.mixpanel.get_config('cdn');\n\n this.campaign_id = _.escapeHTML(notif_data['id']);\n this.message_id = _.escapeHTML(notif_data['message_id']);\n\n this.body = (_.escapeHTML(notif_data['body']) || '').replace(/\\n/g, '
');\n this.cta = _.escapeHTML(notif_data['cta']) || 'Close';\n this.notif_type = _.escapeHTML(notif_data['type']) || 'takeover';\n this.style = _.escapeHTML(notif_data['style']) || 'light';\n this.title = _.escapeHTML(notif_data['title']) || '';\n this.video_width = MixpanelNotification.VIDEO_WIDTH;\n this.video_height = MixpanelNotification.VIDEO_HEIGHT;\n\n this.display_triggers = notif_data['display_triggers'] || [];\n\n // These fields are url-sanitized in the backend already.\n this.dest_url = notif_data['cta_url'] || null;\n this.image_url = notif_data['image_url'] || null;\n this.thumb_image_url = notif_data['thumb_image_url'] || null;\n this.video_url = notif_data['video_url'] || null;\n\n if (this.thumb_image_url && this.thumb_image_url.indexOf('//') === 0) {\n this.thumb_image_url = this.thumb_image_url.replace('//', this.resource_protocol);\n }\n\n this.clickthrough = true;\n if (!this.dest_url) {\n this.dest_url = '#dismiss';\n this.clickthrough = false;\n }\n\n this.mini = this.notif_type === 'mini';\n if (!this.mini) {\n this.notif_type = 'takeover';\n }\n this.notif_width = !this.mini ? MixpanelNotification.NOTIF_WIDTH : MixpanelNotification.NOTIF_WIDTH_MINI;\n\n this._set_client_config();\n this.imgs_to_preload = this._init_image_html();\n this._init_video();\n};\n\nMixpanelNotification.ANIM_TIME = 200;\nMixpanelNotification.MARKUP_PREFIX = 'mixpanel-notification';\nMixpanelNotification.BG_OPACITY = 0.6;\nMixpanelNotification.NOTIF_TOP = 25;\nMixpanelNotification.NOTIF_START_TOP = 200;\nMixpanelNotification.NOTIF_WIDTH = 388;\nMixpanelNotification.NOTIF_WIDTH_MINI = 420;\nMixpanelNotification.NOTIF_HEIGHT_MINI = 85;\nMixpanelNotification.THUMB_BORDER_SIZE = 5;\nMixpanelNotification.THUMB_IMG_SIZE = 60;\nMixpanelNotification.THUMB_OFFSET = Math.round(MixpanelNotification.THUMB_IMG_SIZE / 2);\nMixpanelNotification.VIDEO_WIDTH = 595;\nMixpanelNotification.VIDEO_HEIGHT = 334;\n\nMixpanelNotification.prototype.show = function() {\n var self = this;\n this._set_client_config();\n\n // don't display until HTML body exists\n if (!this.body_el) {\n setTimeout(function() { self.show(); }, 300);\n return;\n }\n\n this._init_styles();\n this._init_notification_el();\n\n // wait for any images to load before showing notification\n this._preload_images(this._attach_and_animate);\n};\n\nMixpanelNotification.prototype.dismiss = _.safewrap(function() {\n if (!this.marked_as_shown) {\n // unexpected condition: user interacted with notif even though we didn't consider it\n // visible (see _mark_as_shown()); send tracking signals to mark delivery\n this._mark_delivery({'invisible': true});\n }\n\n var exiting_el = this.showing_video ? this._get_el('video') : this._get_notification_display_el();\n if (this.use_transitions) {\n this._remove_class('bg', 'visible');\n this._add_class(exiting_el, 'exiting');\n setTimeout(this._remove_notification_el, MixpanelNotification.ANIM_TIME);\n } else {\n var notif_attr, notif_start, notif_goal;\n if (this.mini) {\n notif_attr = 'right';\n notif_start = 20;\n notif_goal = -100;\n } else {\n notif_attr = 'top';\n notif_start = MixpanelNotification.NOTIF_TOP;\n notif_goal = MixpanelNotification.NOTIF_START_TOP + MixpanelNotification.NOTIF_TOP;\n }\n this._animate_els([\n {\n el: this._get_el('bg'),\n attr: 'opacity',\n start: MixpanelNotification.BG_OPACITY,\n goal: 0.0\n },\n {\n el: exiting_el,\n attr: 'opacity',\n start: 1.0,\n goal: 0.0\n },\n {\n el: exiting_el,\n attr: notif_attr,\n start: notif_start,\n goal: notif_goal\n }\n ], MixpanelNotification.ANIM_TIME, this._remove_notification_el);\n }\n});\n\nMixpanelNotification.prototype._add_class = _.safewrap(function(el, class_name) {\n class_name = MixpanelNotification.MARKUP_PREFIX + '-' + class_name;\n if (typeof el === 'string') {\n el = this._get_el(el);\n }\n if (!el.className) {\n el.className = class_name;\n } else if (!~(' ' + el.className + ' ').indexOf(' ' + class_name + ' ')) {\n el.className += ' ' + class_name;\n }\n});\nMixpanelNotification.prototype._remove_class = _.safewrap(function(el, class_name) {\n class_name = MixpanelNotification.MARKUP_PREFIX + '-' + class_name;\n if (typeof el === 'string') {\n el = this._get_el(el);\n }\n if (el.className) {\n el.className = (' ' + el.className + ' ')\n .replace(' ' + class_name + ' ', '')\n .replace(/^[\\s\\xA0]+/, '')\n .replace(/[\\s\\xA0]+$/, '');\n }\n});\n\nMixpanelNotification.prototype._animate_els = _.safewrap(function(anims, mss, done_cb, start_time) {\n var self = this,\n in_progress = false,\n ai, anim,\n cur_time = 1 * new Date(), time_diff;\n\n start_time = start_time || cur_time;\n time_diff = cur_time - start_time;\n\n for (ai = 0; ai < anims.length; ai++) {\n anim = anims[ai];\n if (typeof anim.val === 'undefined') {\n anim.val = anim.start;\n }\n if (anim.val !== anim.goal) {\n in_progress = true;\n var anim_diff = anim.goal - anim.start,\n anim_dir = anim.goal >= anim.start ? 1 : -1;\n anim.val = anim.start + anim_diff * time_diff / mss;\n if (anim.attr !== 'opacity') {\n anim.val = Math.round(anim.val);\n }\n if ((anim_dir > 0 && anim.val >= anim.goal) || (anim_dir < 0 && anim.val <= anim.goal)) {\n anim.val = anim.goal;\n }\n }\n }\n if (!in_progress) {\n if (done_cb) {\n done_cb();\n }\n return;\n }\n\n for (ai = 0; ai < anims.length; ai++) {\n anim = anims[ai];\n if (anim.el) {\n var suffix = anim.attr === 'opacity' ? '' : 'px';\n anim.el.style[anim.attr] = String(anim.val) + suffix;\n }\n }\n setTimeout(function() { self._animate_els(anims, mss, done_cb, start_time); }, 10);\n});\n\nMixpanelNotification.prototype._attach_and_animate = _.safewrap(function() {\n var self = this;\n\n // no possibility to double-display\n if (this.shown || this._get_shown_campaigns()[this.campaign_id]) {\n return;\n }\n this.shown = true;\n\n this.body_el.appendChild(this.notification_el);\n setTimeout(function() {\n var notif_el = self._get_notification_display_el();\n if (self.use_transitions) {\n if (!self.mini) {\n self._add_class('bg', 'visible');\n }\n self._add_class(notif_el, 'visible');\n self._mark_as_shown();\n } else {\n var notif_attr, notif_start, notif_goal;\n if (self.mini) {\n notif_attr = 'right';\n notif_start = -100;\n notif_goal = 20;\n } else {\n notif_attr = 'top';\n notif_start = MixpanelNotification.NOTIF_START_TOP + MixpanelNotification.NOTIF_TOP;\n notif_goal = MixpanelNotification.NOTIF_TOP;\n }\n self._animate_els([\n {\n el: self._get_el('bg'),\n attr: 'opacity',\n start: 0.0,\n goal: MixpanelNotification.BG_OPACITY\n },\n {\n el: notif_el,\n attr: 'opacity',\n start: 0.0,\n goal: 1.0\n },\n {\n el: notif_el,\n attr: notif_attr,\n start: notif_start,\n goal: notif_goal\n }\n ], MixpanelNotification.ANIM_TIME, self._mark_as_shown);\n }\n }, 100);\n _.register_event(self._get_el('cancel'), 'click', function(e) {\n e.preventDefault();\n self.dismiss();\n });\n var click_el = self._get_el('button') ||\n self._get_el('mini-content');\n _.register_event(click_el, 'click', function(e) {\n e.preventDefault();\n if (self.show_video) {\n self._track_event('$campaign_open', {'$resource_type': 'video'});\n self._switch_to_video();\n } else {\n self.dismiss();\n if (self.clickthrough) {\n var tracking_cb = null;\n if (self.mixpanel.get_config('inapp_link_new_window')) {\n window.open(self.dest_url);\n } else {\n tracking_cb = function() {\n window.location.href = self.dest_url;\n };\n }\n self._track_event('$campaign_open', {'$resource_type': 'link'}, tracking_cb);\n }\n }\n });\n});\n\nMixpanelNotification.prototype._get_el = function(id) {\n return document.getElementById(MixpanelNotification.MARKUP_PREFIX + '-' + id);\n};\n\nMixpanelNotification.prototype._get_notification_display_el = function() {\n return this._get_el(this.notif_type);\n};\n\nMixpanelNotification.prototype._get_shown_campaigns = function() {\n return this.persistence['props'][CAMPAIGN_IDS_KEY] || (this.persistence['props'][CAMPAIGN_IDS_KEY] = {});\n};\n\nMixpanelNotification.prototype._matches_event_data = _.safewrap(function(event_data) {\n var event_name = event_data['event'] || '';\n for (var i = 0; i < this.display_triggers.length; i++) {\n var display_trigger = this.display_triggers[i];\n var match_event = display_trigger['event'] || '';\n if (match_event === '$any_event' || event_name === display_trigger['event']) {\n if (display_trigger['selector'] && !_.isEmptyObject(display_trigger['selector'])) {\n if (evaluateSelector(display_trigger['selector'], event_data['properties'])) {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n return false;\n});\n\n\nMixpanelNotification.prototype._browser_lte = function(browser, version) {\n return this.browser_versions[browser] && this.browser_versions[browser] <= version;\n};\n\nMixpanelNotification.prototype._init_image_html = function() {\n var imgs_to_preload = [];\n\n if (!this.mini) {\n if (this.image_url) {\n imgs_to_preload.push(this.image_url);\n this.img_html = '';\n } else {\n this.img_html = '';\n }\n if (this.thumb_image_url) {\n imgs_to_preload.push(this.thumb_image_url);\n this.thumb_img_html =\n '
' +\n '' +\n '
';\n } else {\n this.thumb_img_html = '';\n }\n } else {\n this.thumb_image_url = this.thumb_image_url || (this.cdn_host + '/site_media/images/icons/notifications/mini-news-dark.png');\n imgs_to_preload.push(this.thumb_image_url);\n }\n\n return imgs_to_preload;\n};\n\nMixpanelNotification.prototype._init_notification_el = function() {\n var notification_html = '';\n var video_src = '';\n var video_html = '';\n var cancel_html = '
' +\n '
' +\n '
';\n\n this.notification_el = document.createElement('div');\n this.notification_el.id = MixpanelNotification.MARKUP_PREFIX + '-wrapper';\n if (!this.mini) {\n // TAKEOVER notification\n var close_html = (this.clickthrough || this.show_video) ? '' : '
',\n play_html = this.show_video ? '
' : '';\n if (this._browser_lte('ie', 7)) {\n close_html = '';\n play_html = '';\n }\n notification_html =\n '
';\n } else {\n // MINI notification\n notification_html =\n '
' +\n '
' +\n cancel_html +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' + this.body + '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n }\n if (this.youtube_video) {\n video_src = this.resource_protocol + 'www.youtube.com/embed/' + this.youtube_video +\n '?wmode=transparent&showinfo=0&modestbranding=0&rel=0&autoplay=1&loop=0&vq=hd1080';\n if (this.yt_custom) {\n video_src += '&enablejsapi=1&html5=1&controls=0';\n video_html =\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n }\n } else if (this.vimeo_video) {\n video_src = this.resource_protocol + 'player.vimeo.com/video/' + this.vimeo_video + '?autoplay=1&title=0&byline=0&portrait=0';\n }\n if (this.show_video) {\n this.video_iframe =\n '';\n video_html =\n '
' +\n '
' +\n '
' +\n video_html +\n '
' +\n '
';\n }\n var main_html = video_html + notification_html;\n if (this.flip_animate) {\n main_html =\n (this.mini ? notification_html : '') +\n '
' +\n (this.mini ? video_html : main_html) +\n '
';\n }\n\n this.notification_el.innerHTML =\n ('
' +\n '
' +\n '
' +\n '
' +\n main_html +\n '
' +\n '
' +\n '
')\n .replace(/class=\"/g, 'class=\"' + MixpanelNotification.MARKUP_PREFIX + '-')\n .replace(/id=\"/g, 'id=\"' + MixpanelNotification.MARKUP_PREFIX + '-');\n};\n\nMixpanelNotification.prototype._init_styles = function() {\n if (this.style === 'dark') {\n this.style_vals = {\n bg: '#1d1f25',\n bg_actions: '#282b32',\n bg_hover: '#3a4147',\n bg_light: '#4a5157',\n border_gray: '#32353c',\n cancel_opacity: '0.4',\n mini_hover: '#2a3137',\n text_title: '#fff',\n text_main: '#9498a3',\n text_tagline: '#464851',\n text_hover: '#ddd'\n };\n } else {\n this.style_vals = {\n bg: '#fff',\n bg_actions: '#e7eaee',\n bg_hover: '#eceff3',\n bg_light: '#f5f5f5',\n border_gray: '#e4ecf2',\n cancel_opacity: '1.0',\n mini_hover: '#fafafa',\n text_title: '#5c6578',\n text_main: '#8b949b',\n text_tagline: '#ced9e6',\n text_hover: '#7c8598'\n };\n }\n var shadow = '0px 0px 35px 0px rgba(45, 49, 56, 0.7)',\n video_shadow = shadow,\n mini_shadow = shadow,\n thumb_total_size = MixpanelNotification.THUMB_IMG_SIZE + MixpanelNotification.THUMB_BORDER_SIZE * 2,\n anim_seconds = (MixpanelNotification.ANIM_TIME / 1000) + 's';\n if (this.mini) {\n shadow = 'none';\n }\n\n // don't display on small viewports\n var notif_media_queries = {},\n min_width = MixpanelNotification.NOTIF_WIDTH_MINI + 20;\n notif_media_queries['@media only screen and (max-width: ' + (min_width - 1) + 'px)'] = {\n '#overlay': {\n 'display': 'none'\n }\n };\n var notif_styles = {\n '.flipped': {\n 'transform': 'rotateY(180deg)'\n },\n '#overlay': {\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'width': '100%',\n 'height': '100%',\n 'overflow': 'auto',\n 'text-align': 'center',\n 'z-index': '10000',\n 'font-family': '\"Helvetica\", \"Arial\", sans-serif',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale'\n },\n '#overlay.mini': {\n 'height': '0',\n 'overflow': 'visible'\n },\n '#overlay a': {\n 'width': 'initial',\n 'padding': '0',\n 'text-decoration': 'none',\n 'text-transform': 'none',\n 'color': 'inherit'\n },\n '#bgwrapper': {\n 'position': 'relative',\n 'width': '100%',\n 'height': '100%'\n },\n '#bg': {\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'width': '100%',\n 'height': '100%',\n 'min-width': this.doc_width * 4 + 'px',\n 'min-height': this.doc_height * 4 + 'px',\n 'background-color': 'black',\n 'opacity': '0.0',\n '-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)', // IE8\n 'filter': 'alpha(opacity=60)', // IE5-7\n 'transition': 'opacity ' + anim_seconds\n },\n '#bg.visible': {\n 'opacity': MixpanelNotification.BG_OPACITY\n },\n '.mini #bg': {\n 'width': '0',\n 'height': '0',\n 'min-width': '0'\n },\n '#flipcontainer': {\n 'perspective': '1000px',\n 'position': 'absolute',\n 'width': '100%'\n },\n '#flipper': {\n 'position': 'relative',\n 'transform-style': 'preserve-3d',\n 'transition': '0.3s'\n },\n '#takeover': {\n 'position': 'absolute',\n 'left': '50%',\n 'width': MixpanelNotification.NOTIF_WIDTH + 'px',\n 'margin-left': Math.round(-MixpanelNotification.NOTIF_WIDTH / 2) + 'px',\n 'backface-visibility': 'hidden',\n 'transform': 'rotateY(0deg)',\n 'opacity': '0.0',\n 'top': MixpanelNotification.NOTIF_START_TOP + 'px',\n 'transition': 'opacity ' + anim_seconds + ', top ' + anim_seconds\n },\n '#takeover.visible': {\n 'opacity': '1.0',\n 'top': MixpanelNotification.NOTIF_TOP + 'px'\n },\n '#takeover.exiting': {\n 'opacity': '0.0',\n 'top': MixpanelNotification.NOTIF_START_TOP + 'px'\n },\n '#thumbspacer': {\n 'height': MixpanelNotification.THUMB_OFFSET + 'px'\n },\n '#thumbborder-wrapper': {\n 'position': 'absolute',\n 'top': (-MixpanelNotification.THUMB_BORDER_SIZE) + 'px',\n 'left': (MixpanelNotification.NOTIF_WIDTH / 2 - MixpanelNotification.THUMB_OFFSET - MixpanelNotification.THUMB_BORDER_SIZE) + 'px',\n 'width': thumb_total_size + 'px',\n 'height': (thumb_total_size / 2) + 'px',\n 'overflow': 'hidden'\n },\n '#thumbborder': {\n 'position': 'absolute',\n 'width': thumb_total_size + 'px',\n 'height': thumb_total_size + 'px',\n 'border-radius': thumb_total_size + 'px',\n 'background-color': this.style_vals.bg_actions,\n 'opacity': '0.5'\n },\n '#thumbnail': {\n 'position': 'absolute',\n 'top': '0px',\n 'left': (MixpanelNotification.NOTIF_WIDTH / 2 - MixpanelNotification.THUMB_OFFSET) + 'px',\n 'width': MixpanelNotification.THUMB_IMG_SIZE + 'px',\n 'height': MixpanelNotification.THUMB_IMG_SIZE + 'px',\n 'overflow': 'hidden',\n 'z-index': '100',\n 'border-radius': MixpanelNotification.THUMB_IMG_SIZE + 'px'\n },\n '#mini': {\n 'position': 'absolute',\n 'right': '20px',\n 'top': MixpanelNotification.NOTIF_TOP + 'px',\n 'width': this.notif_width + 'px',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI * 2 + 'px',\n 'margin-top': 20 - MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'backface-visibility': 'hidden',\n 'opacity': '0.0',\n 'transform': 'rotateX(90deg)',\n 'transition': 'opacity 0.3s, transform 0.3s, right 0.3s'\n },\n '#mini.visible': {\n 'opacity': '1.0',\n 'transform': 'rotateX(0deg)'\n },\n '#mini.exiting': {\n 'opacity': '0.0',\n 'right': '-150px'\n },\n '#mainbox': {\n 'border-radius': '4px',\n 'box-shadow': shadow,\n 'text-align': 'center',\n 'background-color': this.style_vals.bg,\n 'font-size': '14px',\n 'color': this.style_vals.text_main\n },\n '#mini #mainbox': {\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'margin-top': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'border-radius': '3px',\n 'transition': 'background-color ' + anim_seconds\n },\n '#mini-border': {\n 'height': (MixpanelNotification.NOTIF_HEIGHT_MINI + 6) + 'px',\n 'width': (MixpanelNotification.NOTIF_WIDTH_MINI + 6) + 'px',\n 'position': 'absolute',\n 'top': '-3px',\n 'left': '-3px',\n 'margin-top': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'border-radius': '6px',\n 'opacity': '0.25',\n 'background-color': '#fff',\n 'z-index': '-1',\n 'box-shadow': mini_shadow\n },\n '#mini-icon': {\n 'position': 'relative',\n 'display': 'inline-block',\n 'width': '75px',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'border-radius': '3px 0 0 3px',\n 'background-color': this.style_vals.bg_actions,\n 'background': 'linear-gradient(135deg, ' + this.style_vals.bg_light + ' 0%, ' + this.style_vals.bg_actions + ' 100%)',\n 'transition': 'background-color ' + anim_seconds\n },\n '#mini:hover #mini-icon': {\n 'background-color': this.style_vals.mini_hover\n },\n '#mini:hover #mainbox': {\n 'background-color': this.style_vals.mini_hover\n },\n '#mini-icon-img': {\n 'position': 'absolute',\n 'background-image': 'url(' + this.thumb_image_url + ')',\n 'width': '48px',\n 'height': '48px',\n 'top': '20px',\n 'left': '12px'\n },\n '#content': {\n 'padding': '30px 20px 0px 20px'\n },\n '#mini-content': {\n 'text-align': 'left',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'cursor': 'pointer'\n },\n '#img': {\n 'width': '328px',\n 'margin-top': '30px',\n 'border-radius': '5px'\n },\n '#title': {\n 'max-height': '600px',\n 'overflow': 'hidden',\n 'word-wrap': 'break-word',\n 'padding': '25px 0px 20px 0px',\n 'font-size': '19px',\n 'font-weight': 'bold',\n 'color': this.style_vals.text_title\n },\n '#body': {\n 'max-height': '600px',\n 'margin-bottom': '25px',\n 'overflow': 'hidden',\n 'word-wrap': 'break-word',\n 'line-height': '21px',\n 'font-size': '15px',\n 'font-weight': 'normal',\n 'text-align': 'left'\n },\n '#mini #body': {\n 'display': 'inline-block',\n 'max-width': '250px',\n 'margin': '0 0 0 30px',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'font-size': '16px',\n 'letter-spacing': '0.8px',\n 'color': this.style_vals.text_title\n },\n '#mini #body-text': {\n 'display': 'table',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px'\n },\n '#mini #body-text div': {\n 'display': 'table-cell',\n 'vertical-align': 'middle'\n },\n '#tagline': {\n 'margin-bottom': '15px',\n 'font-size': '10px',\n 'font-weight': '600',\n 'letter-spacing': '0.8px',\n 'color': '#ccd7e0',\n 'text-align': 'left'\n },\n '#tagline a': {\n 'color': this.style_vals.text_tagline,\n 'transition': 'color ' + anim_seconds\n },\n '#tagline a:hover': {\n 'color': this.style_vals.text_hover\n },\n '#cancel': {\n 'position': 'absolute',\n 'right': '0',\n 'width': '8px',\n 'height': '8px',\n 'padding': '10px',\n 'border-radius': '20px',\n 'margin': '12px 12px 0 0',\n 'box-sizing': 'content-box',\n 'cursor': 'pointer',\n 'transition': 'background-color ' + anim_seconds\n },\n '#mini #cancel': {\n 'margin': '7px 7px 0 0'\n },\n '#cancel-icon': {\n 'width': '8px',\n 'height': '8px',\n 'overflow': 'hidden',\n 'background-image': 'url(' + this.cdn_host + '/site_media/images/icons/notifications/cancel-x.png)',\n 'opacity': this.style_vals.cancel_opacity\n },\n '#cancel:hover': {\n 'background-color': this.style_vals.bg_hover\n },\n '#button': {\n 'display': 'block',\n 'height': '60px',\n 'line-height': '60px',\n 'text-align': 'center',\n 'background-color': this.style_vals.bg_actions,\n 'border-radius': '0 0 4px 4px',\n 'overflow': 'hidden',\n 'cursor': 'pointer',\n 'transition': 'background-color ' + anim_seconds\n },\n '#button-close': {\n 'display': 'inline-block',\n 'width': '9px',\n 'height': '60px',\n 'margin-right': '8px',\n 'vertical-align': 'top',\n 'background-image': 'url(' + this.cdn_host + '/site_media/images/icons/notifications/close-x-' + this.style + '.png)',\n 'background-repeat': 'no-repeat',\n 'background-position': '0px 25px'\n },\n '#button-play': {\n 'display': 'inline-block',\n 'width': '30px',\n 'height': '60px',\n 'margin-left': '15px',\n 'background-image': 'url(' + this.cdn_host + '/site_media/images/icons/notifications/play-' + this.style + '-small.png)',\n 'background-repeat': 'no-repeat',\n 'background-position': '0px 15px'\n },\n 'a#button-link': {\n 'display': 'inline-block',\n 'vertical-align': 'top',\n 'text-align': 'center',\n 'font-size': '17px',\n 'font-weight': 'bold',\n 'overflow': 'hidden',\n 'word-wrap': 'break-word',\n 'color': this.style_vals.text_title,\n 'transition': 'color ' + anim_seconds\n },\n '#button:hover': {\n 'background-color': this.style_vals.bg_hover,\n 'color': this.style_vals.text_hover\n },\n '#button:hover a': {\n 'color': this.style_vals.text_hover\n },\n\n '#video-noflip': {\n 'position': 'relative',\n 'top': (-this.video_height * 2) + 'px'\n },\n '#video-flip': {\n 'backface-visibility': 'hidden',\n 'transform': 'rotateY(180deg)'\n },\n '#video': {\n 'position': 'absolute',\n 'width': (this.video_width - 1) + 'px',\n 'height': this.video_height + 'px',\n 'top': MixpanelNotification.NOTIF_TOP + 'px',\n 'margin-top': '100px',\n 'left': '50%',\n 'margin-left': Math.round(-this.video_width / 2) + 'px',\n 'overflow': 'hidden',\n 'border-radius': '5px',\n 'box-shadow': video_shadow,\n 'transform': 'translateZ(1px)', // webkit rendering bug http://stackoverflow.com/questions/18167981/clickable-link-area-unexpectedly-smaller-after-css-transform\n 'transition': 'opacity ' + anim_seconds + ', top ' + anim_seconds\n },\n '#video.exiting': {\n 'opacity': '0.0',\n 'top': this.video_height + 'px'\n },\n '#video-holder': {\n 'position': 'absolute',\n 'width': (this.video_width - 1) + 'px',\n 'height': this.video_height + 'px',\n 'overflow': 'hidden',\n 'border-radius': '5px'\n },\n '#video-frame': {\n 'margin-left': '-1px',\n 'width': this.video_width + 'px'\n },\n '#video-controls': {\n 'opacity': '0',\n 'transition': 'opacity 0.5s'\n },\n '#video:hover #video-controls': {\n 'opacity': '1.0'\n },\n '#video .video-progress-el': {\n 'position': 'absolute',\n 'bottom': '0',\n 'height': '25px',\n 'border-radius': '0 0 0 5px'\n },\n '#video-progress': {\n 'width': '90%'\n },\n '#video-progress-total': {\n 'width': '100%',\n 'background-color': this.style_vals.bg,\n 'opacity': '0.7'\n },\n '#video-elapsed': {\n 'width': '0',\n 'background-color': '#6cb6f5',\n 'opacity': '0.9'\n },\n '#video #video-time': {\n 'width': '10%',\n 'right': '0',\n 'font-size': '11px',\n 'line-height': '25px',\n 'color': this.style_vals.text_main,\n 'background-color': '#666',\n 'border-radius': '0 0 5px 0'\n }\n };\n\n // IE hacks\n if (this._browser_lte('ie', 8)) {\n _.extend(notif_styles, {\n '* html #overlay': {\n 'position': 'absolute'\n },\n '* html #bg': {\n 'position': 'absolute'\n },\n 'html, body': {\n 'height': '100%'\n }\n });\n }\n if (this._browser_lte('ie', 7)) {\n _.extend(notif_styles, {\n '#mini #body': {\n 'display': 'inline',\n 'zoom': '1',\n 'border': '1px solid ' + this.style_vals.bg_hover\n },\n '#mini #body-text': {\n 'padding': '20px'\n },\n '#mini #mini-icon': {\n 'display': 'none'\n }\n });\n }\n\n // add vendor-prefixed style rules\n var VENDOR_STYLES = [\n 'backface-visibility', 'border-radius', 'box-shadow', 'opacity',\n 'perspective', 'transform', 'transform-style', 'transition'\n ],\n VENDOR_PREFIXES = ['khtml', 'moz', 'ms', 'o', 'webkit'];\n for (var selector in notif_styles) {\n for (var si = 0; si < VENDOR_STYLES.length; si++) {\n var prop = VENDOR_STYLES[si];\n if (prop in notif_styles[selector]) {\n var val = notif_styles[selector][prop];\n for (var pi = 0; pi < VENDOR_PREFIXES.length; pi++) {\n notif_styles[selector]['-' + VENDOR_PREFIXES[pi] + '-' + prop] = val;\n }\n }\n }\n }\n\n var inject_styles = function(styles, media_queries) {\n var create_style_text = function(style_defs) {\n var st = '';\n for (var selector in style_defs) {\n var mp_selector = selector\n .replace(/#/g, '#' + MixpanelNotification.MARKUP_PREFIX + '-')\n .replace(/\\./g, '.' + MixpanelNotification.MARKUP_PREFIX + '-');\n st += '\\n' + mp_selector + ' {';\n var props = style_defs[selector];\n for (var k in props) {\n st += k + ':' + props[k] + ';';\n }\n st += '}';\n }\n return st;\n };\n var create_media_query_text = function(mq_defs) {\n var mqt = '';\n for (var mq in mq_defs) {\n mqt += '\\n' + mq + ' {' + create_style_text(mq_defs[mq]) + '\\n}';\n }\n return mqt;\n };\n\n var style_text = create_style_text(styles) + create_media_query_text(media_queries),\n head_el = document.head || document.getElementsByTagName('head')[0] || document.documentElement,\n style_el = document.createElement('style');\n head_el.appendChild(style_el);\n style_el.setAttribute('type', 'text/css');\n if (style_el.styleSheet) { // IE\n style_el.styleSheet.cssText = style_text;\n } else {\n style_el.textContent = style_text;\n }\n };\n inject_styles(notif_styles, notif_media_queries);\n};\n\nMixpanelNotification.prototype._init_video = _.safewrap(function() {\n if (!this.video_url) {\n return;\n }\n var self = this;\n\n // Youtube iframe API compatibility\n self.yt_custom = 'postMessage' in window;\n\n self.dest_url = self.video_url;\n var youtube_match = self.video_url.match(\n // http://stackoverflow.com/questions/2936467/parse-youtube-video-id-using-preg-match\n /(?:youtube(?:-nocookie)?\\.com\\/(?:[^/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?/ ]{11})/i\n ),\n vimeo_match = self.video_url.match(\n /vimeo\\.com\\/.*?(\\d+)/i\n );\n if (youtube_match) {\n self.show_video = true;\n self.youtube_video = youtube_match[1];\n\n if (self.yt_custom) {\n window['onYouTubeIframeAPIReady'] = function() {\n if (self._get_el('video-frame')) {\n self._yt_video_ready();\n }\n };\n\n // load Youtube iframe API; see https://developers.google.com/youtube/iframe_api_reference\n var tag = document.createElement('script');\n tag.src = self.resource_protocol + 'www.youtube.com/iframe_api';\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n }\n } else if (vimeo_match) {\n self.show_video = true;\n self.vimeo_video = vimeo_match[1];\n }\n\n // IE <= 7, FF <= 3: fall through to video link rather than embedded player\n if (self._browser_lte('ie', 7) || self._browser_lte('firefox', 3)) {\n self.show_video = false;\n self.clickthrough = true;\n }\n});\n\nMixpanelNotification.prototype._mark_as_shown = _.safewrap(function() {\n // click on background to dismiss\n var self = this;\n _.register_event(self._get_el('bg'), 'click', function() {\n self.dismiss();\n });\n\n var get_style = function(el, style_name) {\n var styles = {};\n if (document.defaultView && document.defaultView.getComputedStyle) {\n styles = document.defaultView.getComputedStyle(el, null); // FF3 requires both args\n } else if (el.currentStyle) { // IE\n styles = el.currentStyle;\n }\n return styles[style_name];\n };\n\n if (this.campaign_id) {\n var notif_el = this._get_el('overlay');\n if (notif_el && get_style(notif_el, 'visibility') !== 'hidden' && get_style(notif_el, 'display') !== 'none') {\n this._mark_delivery();\n }\n }\n});\n\nMixpanelNotification.prototype._mark_delivery = _.safewrap(function(extra_props) {\n if (!this.marked_as_shown) {\n this.marked_as_shown = true;\n\n if (this.campaign_id) {\n // mark notification shown (local cache)\n this._get_shown_campaigns()[this.campaign_id] = 1 * new Date();\n this.persistence.save();\n }\n\n // track delivery\n this._track_event('$campaign_delivery', extra_props);\n\n // mark notification shown (mixpanel property)\n this.mixpanel['people']['append']({\n '$campaigns': this.campaign_id,\n '$notifications': {\n 'campaign_id': this.campaign_id,\n 'message_id': this.message_id,\n 'type': 'web',\n 'time': new Date()\n }\n });\n }\n});\n\nMixpanelNotification.prototype._preload_images = function(all_loaded_cb) {\n var self = this;\n if (this.imgs_to_preload.length === 0) {\n all_loaded_cb();\n return;\n }\n\n var preloaded_imgs = 0;\n var img_objs = [];\n var onload = function() {\n preloaded_imgs++;\n if (preloaded_imgs === self.imgs_to_preload.length && all_loaded_cb) {\n all_loaded_cb();\n all_loaded_cb = null;\n }\n };\n for (var i = 0; i < this.imgs_to_preload.length; i++) {\n var img = new Image();\n img.onload = onload;\n img.src = this.imgs_to_preload[i];\n if (img.complete) {\n onload();\n }\n img_objs.push(img);\n }\n\n // IE6/7 doesn't fire onload reliably\n if (this._browser_lte('ie', 7)) {\n setTimeout(function() {\n var imgs_loaded = true;\n for (i = 0; i < img_objs.length; i++) {\n if (!img_objs[i].complete) {\n imgs_loaded = false;\n }\n }\n if (imgs_loaded && all_loaded_cb) {\n all_loaded_cb();\n all_loaded_cb = null;\n }\n }, 500);\n }\n};\n\nMixpanelNotification.prototype._remove_notification_el = _.safewrap(function() {\n window.clearInterval(this._video_progress_checker);\n this.notification_el.style.visibility = 'hidden';\n this.body_el.removeChild(this.notification_el);\n});\n\nMixpanelNotification.prototype._set_client_config = function() {\n var get_browser_version = function(browser_ex) {\n var match = navigator.userAgent.match(browser_ex);\n return match && match[1];\n };\n this.browser_versions = {};\n this.browser_versions['chrome'] = get_browser_version(/Chrome\\/(\\d+)/);\n this.browser_versions['firefox'] = get_browser_version(/Firefox\\/(\\d+)/);\n this.browser_versions['ie'] = get_browser_version(/MSIE (\\d+).+/);\n if (!this.browser_versions['ie'] && !(window.ActiveXObject) && 'ActiveXObject' in window) {\n this.browser_versions['ie'] = 11;\n }\n\n this.body_el = document.body || document.getElementsByTagName('body')[0];\n if (this.body_el) {\n this.doc_width = Math.max(\n this.body_el.scrollWidth, document.documentElement.scrollWidth,\n this.body_el.offsetWidth, document.documentElement.offsetWidth,\n this.body_el.clientWidth, document.documentElement.clientWidth\n );\n this.doc_height = Math.max(\n this.body_el.scrollHeight, document.documentElement.scrollHeight,\n this.body_el.offsetHeight, document.documentElement.offsetHeight,\n this.body_el.clientHeight, document.documentElement.clientHeight\n );\n }\n\n // detect CSS compatibility\n var ie_ver = this.browser_versions['ie'];\n var sample_styles = document.createElement('div').style,\n is_css_compatible = function(rule) {\n if (rule in sample_styles) {\n return true;\n }\n if (!ie_ver) {\n rule = rule[0].toUpperCase() + rule.slice(1);\n var props = ['O' + rule, 'Webkit' + rule, 'Moz' + rule];\n for (var i = 0; i < props.length; i++) {\n if (props[i] in sample_styles) {\n return true;\n }\n }\n }\n return false;\n };\n this.use_transitions = this.body_el &&\n is_css_compatible('transition') &&\n is_css_compatible('transform');\n this.flip_animate = (this.browser_versions['chrome'] >= 33 || this.browser_versions['firefox'] >= 15) &&\n this.body_el &&\n is_css_compatible('backfaceVisibility') &&\n is_css_compatible('perspective') &&\n is_css_compatible('transform');\n};\n\nMixpanelNotification.prototype._switch_to_video = _.safewrap(function() {\n var self = this,\n anims = [\n {\n el: self._get_notification_display_el(),\n attr: 'opacity',\n start: 1.0,\n goal: 0.0\n },\n {\n el: self._get_notification_display_el(),\n attr: 'top',\n start: MixpanelNotification.NOTIF_TOP,\n goal: -500\n },\n {\n el: self._get_el('video-noflip'),\n attr: 'opacity',\n start: 0.0,\n goal: 1.0\n },\n {\n el: self._get_el('video-noflip'),\n attr: 'top',\n start: -self.video_height * 2,\n goal: 0\n }\n ];\n\n if (self.mini) {\n var bg = self._get_el('bg'),\n overlay = self._get_el('overlay');\n bg.style.width = '100%';\n bg.style.height = '100%';\n overlay.style.width = '100%';\n\n self._add_class(self._get_notification_display_el(), 'exiting');\n self._add_class(bg, 'visible');\n\n anims.push({\n el: self._get_el('bg'),\n attr: 'opacity',\n start: 0.0,\n goal: MixpanelNotification.BG_OPACITY\n });\n }\n\n var video_el = self._get_el('video-holder');\n video_el.innerHTML = self.video_iframe;\n\n var video_ready = function() {\n if (window['YT'] && window['YT']['loaded']) {\n self._yt_video_ready();\n }\n self.showing_video = true;\n self._get_notification_display_el().style.visibility = 'hidden';\n };\n if (self.flip_animate) {\n self._add_class('flipper', 'flipped');\n setTimeout(video_ready, MixpanelNotification.ANIM_TIME);\n } else {\n self._animate_els(anims, MixpanelNotification.ANIM_TIME, video_ready);\n }\n});\n\nMixpanelNotification.prototype._track_event = function(event_name, properties, cb) {\n if (this.campaign_id) {\n properties = properties || {};\n properties = _.extend(properties, {\n 'campaign_id': this.campaign_id,\n 'message_id': this.message_id,\n 'message_type': 'web_inapp',\n 'message_subtype': this.notif_type\n });\n this.mixpanel['track'](event_name, properties, cb);\n } else if (cb) {\n cb.call();\n }\n};\n\nMixpanelNotification.prototype._yt_video_ready = _.safewrap(function() {\n var self = this;\n if (self.video_inited) {\n return;\n }\n self.video_inited = true;\n\n var progress_bar = self._get_el('video-elapsed'),\n progress_time = self._get_el('video-time'),\n progress_el = self._get_el('video-progress');\n\n new window['YT']['Player'](MixpanelNotification.MARKUP_PREFIX + '-video-frame', {\n 'events': {\n 'onReady': function(event) {\n var ytplayer = event['target'],\n video_duration = ytplayer['getDuration'](),\n pad = function(i) {\n return ('00' + i).slice(-2);\n },\n update_video_time = function(current_time) {\n var secs = Math.round(video_duration - current_time),\n mins = Math.floor(secs / 60),\n hours = Math.floor(mins / 60);\n secs -= mins * 60;\n mins -= hours * 60;\n progress_time.innerHTML = '-' + (hours ? hours + ':' : '') + pad(mins) + ':' + pad(secs);\n };\n update_video_time(0);\n self._video_progress_checker = window.setInterval(function() {\n var current_time = ytplayer['getCurrentTime']();\n progress_bar.style.width = (current_time / video_duration * 100) + '%';\n update_video_time(current_time);\n }, 250);\n _.register_event(progress_el, 'click', function(e) {\n var clickx = Math.max(0, e.pageX - progress_el.getBoundingClientRect().left);\n ytplayer['seekTo'](video_duration * clickx / progress_el.clientWidth, true);\n });\n }\n }\n });\n});\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n this._mixpanel['persistence'].get_referrer_info(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n* Record that you have charged the current user a certain amount\n* of money. Charges recorded with track_charge() will appear in the\n* Mixpanel revenue report.\n*\n* ### Usage:\n*\n* // charge a user $50\n* mixpanel.people.track_charge(50);\n*\n* // charge a user $30.50 on the 2nd of january\n* mixpanel.people.track_charge(30.50, {\n* '$time': new Date('jan 1 2012')\n* });\n*\n* @param {Number} amount The amount of money charged to the current user\n* @param {Object} [properties] An associative array of properties associated with the charge\n* @param {Function} [callback] If provided, the callback will be called when the server responds\n*/\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function(amount, properties, callback) {\n if (!_.isNumber(amount)) {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n console.error('Invalid value passed to mixpanel.people.track_charge - must be a number');\n return;\n }\n }\n\n return this.append('$transactions', _.extend({\n '$amount': amount\n }, properties), callback);\n});\n\n/*\n* Permanently clear all revenue report transactions from the\n* current user's people analytics profile.\n*\n* ### Usage:\n*\n* mixpanel.people.clear_charges();\n*\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/engage/',\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence']._get_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n var $append_queue = this._mixpanel['persistence']._get_queue(APPEND_ACTION);\n var $remove_queue = this._mixpanel['persistence']._get_queue(REMOVE_ACTION);\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_item = $append_queue.pop();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n // Save the shortened append queue\n _this._mixpanel['persistence'].save();\n }\n\n // same for $remove\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_item = $remove_queue.pop();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n _this._mixpanel['persistence'].save();\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n// ==ClosureCompiler==\n// @compilation_level ADVANCED_OPTIMIZATIONS\n// @output_file_name mixpanel-2.8.min.js\n// ==/ClosureCompiler==\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\nvar NOOP_FUNC = function() {};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (window$1.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator$1['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator$1['sendBeacon'].apply(navigator$1, arguments);\n };\n}\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'app_host': 'https://mixpanel.com',\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'store_google': true,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'inapp_protocol': '//',\n 'inapp_link_new_window': false,\n 'ignore_dnt': false,\n 'batch_requests': false, // for now\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {}\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n instance._user_decide_check_complete = false;\n instance._events_tracked_before_user_decide_check_complete = [];\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\nvar encode_data_for_request = function(data) {\n var json_data = _.JSONEncode(data);\n var encoded_data = _.base64Encode(json_data);\n return {'data': encoded_data};\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n console.error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n console.error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n this['_triggered_notifs'] = [];\n\n // rollout: enable batch_requests by default for 60% of projects\n // (only if they have not specified a value in their init config\n // and they aren't using a custom API host)\n var variable_features = {};\n var api_host = config['api_host'];\n var is_custom_api = !!api_host && !api_host.match(/\\.mixpanel\\.com$/);\n if (!('batch_requests' in config) && !is_custom_api && determine_eligibility(token, 'batch', 60)) {\n variable_features['batch_requests'] = true;\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n } else {\n this.init_batchers();\n if (sendBeacon && window$1.addEventListener) {\n window$1.addEventListener('unload', _.bind(function() {\n // Before page closes, attempt to flush any events queued up via navigator.sendBeacon.\n // Since sendBeacon doesn't report success/failure, events will not be removed from\n // the persistent store; if the site is loaded again, the events will be flushed again\n // on startup and deduplicated on the Mixpanel server side.\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this));\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': uuid,\n '$device_id': uuid\n }, '');\n }\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n if (this.get_config('store_google')) {\n this['persistence'].update_campaign_params();\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n console.error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n url += '?' + _.HTTPBuildQuery(data);\n\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n console.error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n console.error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n console.error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n console.error(error);\n if (callback) {\n if (verbose_mode) {\n callback({status: 0, error: error, xhr_req: req});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n console.error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n var token = this.get_config('token');\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n '__mpq_' + token + attrs.queue_suffix,\n {\n libConfig: this['config'],\n sendRequestFunc: _.bind(function(data, options, cb) {\n this._send_request(\n this.get_config('api_host') + attrs.endpoint,\n encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this)\n }\n );\n }, this);\n this.request_batchers = {\n events: batcher_for({type: 'events', endpoint: '/track/', queue_suffix: '_ev'}),\n people: batcher_for({type: 'people', endpoint: '/engage/', queue_suffix: '_pp'}),\n groups: batcher_for({type: 'groups', endpoint: '/groups/', queue_suffix: '_gr'})\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console.log('MIXPANEL REQUEST:');\n console.log(truncated_data);\n return this._send_request(\n endpoint,\n encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data, function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n console.error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = properties || {};\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties(),\n this['persistence'].properties(),\n this.unpersisted_superprops,\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n console.error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_config('api_host') + '/track/',\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n this._check_and_handle_triggered_notifications(data);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n if (old_values === undefined) {\n var prop = {};\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track mp_page_view event. This is now ignored by the server.\n *\n * @param {String} [page] The url of the page to record. If you don't include this, it defaults to the current url.\n * @deprecated\n */\nMixpanelLib.prototype.track_pageview = function(page) {\n if (_.isUndefined(page)) {\n page = document$1.location.href;\n }\n this.track('mp_page_view', _.info.pageviewInfo(page));\n};\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n console.error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * ID Merge\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n this.register({'$user_id': new_distinct_id});\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._check_and_handle_notifications(this.get_distinct_id());\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': uuid,\n '$device_id': uuid\n }, '');\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * ID Merge\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n console.critical('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n console.error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // turn on request-batching/queueing/retry\n * batch_requests: false,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // protocol for fetching in-app message resources, e.g.\n * // 'https://' or 'http://'; defaults to '//' (which defers to the\n * // current page's protocol)\n * inapp_protocol: '//'\n *\n * // whether to open in-app message link in new tab/window\n * inapp_link_new_window: false\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n console.error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence']['props'][property_name];\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\nMixpanelLib.prototype._check_and_handle_triggered_notifications = addOptOutCheckMixpanelLib(function(event_data) {\n if (!this._user_decide_check_complete) {\n this._events_tracked_before_user_decide_check_complete.push(event_data);\n } else {\n var arr = this['_triggered_notifs'];\n for (var i = 0; i < arr.length; i++) {\n var notif = new MixpanelNotification(arr[i], this);\n if (notif._matches_event_data(event_data)) {\n this._show_notification(arr[i]);\n return;\n }\n }\n }\n});\n\nMixpanelLib.prototype._check_and_handle_notifications = addOptOutCheckMixpanelLib(function(distinct_id) {\n if (\n !distinct_id ||\n this._flags.identify_called ||\n this.get_config('disable_notifications')\n ) {\n return;\n }\n\n console.log('MIXPANEL NOTIFICATION CHECK');\n\n var data = {\n 'verbose': true,\n 'version': '3',\n 'lib': 'web',\n 'token': this.get_config('token'),\n 'distinct_id': distinct_id\n };\n this._send_request(\n this.get_config('api_host') + '/decide/',\n data,\n {method: 'GET', transport: 'XHR'},\n this._prepare_callback(_.bind(function(result) {\n if (result['notifications'] && result['notifications'].length > 0) {\n this['_triggered_notifs'] = [];\n var notifications = [];\n _.each(result['notifications'], function(notif) {\n (notif['display_triggers'] && notif['display_triggers'].length > 0 ? this['_triggered_notifs'] : notifications).push(notif);\n }, this);\n if (notifications.length > 0) {\n this._show_notification.call(this, notifications[0]);\n }\n }\n this._handle_user_decide_check_complete();\n }, this))\n );\n});\n\nMixpanelLib.prototype._handle_user_decide_check_complete = function() {\n this._user_decide_check_complete = true;\n\n // check notifications against events that were tracked before decide call completed\n var events = this._events_tracked_before_user_decide_check_complete;\n while (events.length > 0) {\n var data = events.shift(); // replay in the same order they came in\n this._check_and_handle_triggered_notifications(data);\n }\n};\n\nMixpanelLib.prototype._show_notification = function(notif_data) {\n var notification = new MixpanelNotification(notif_data, this);\n notification.show();\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n _.each(this.request_batchers, function(batcher) {\n batcher.clear();\n });\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['_check_and_handle_notifications'] = MixpanelLib.prototype._check_and_handle_notifications;\nMixpanelLib.prototype['_handle_user_decide_check_complete'] = MixpanelLib.prototype._handle_user_decide_check_complete;\nMixpanelLib.prototype['_show_notification'] = MixpanelLib.prototype._show_notification;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n_.safewrap_class(MixpanelLib, ['identify', '_check_and_handle_notifications', '_show_notification']);\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n window$1[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = window$1.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(window$1, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module() {\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\nvar mixpanel = init_as_module();\n\nmodule.exports = mixpanel;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _wrapNativeSuper from '@babel/runtime/helpers/esm/wrapNativeSuper';\nimport _taggedTemplateLiteralLoose from '@babel/runtime/helpers/esm/taggedTemplateLiteralLoose';\n\nfunction last() {\n var _ref;\n\n return _ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref];\n}\n\nfunction negation(a) {\n return -a;\n}\n\nfunction addition(a, b) {\n return a + b;\n}\n\nfunction subtraction(a, b) {\n return a - b;\n}\n\nfunction multiplication(a, b) {\n return a * b;\n}\n\nfunction division(a, b) {\n return a / b;\n}\n\nfunction factorial(a) {\n if (a % 1 || !(+a >= 0)) return NaN;\n if (a > 170) return Infinity;else if (a === 0) return 1;else {\n return a * factorial(a - 1);\n }\n}\n\nfunction power(a, b) {\n return Math.pow(a, b);\n}\n\nfunction sqrt(a) {\n return Math.sqrt(a);\n}\n\nfunction max() {\n return Math.max.apply(Math, arguments);\n}\n\nfunction min() {\n return Math.min.apply(Math, arguments);\n}\n\nfunction comma() {\n return Array.of.apply(Array, arguments);\n}\n\nvar defaultMathSymbols = {\n symbols: {\n '!': {\n postfix: {\n symbol: '!',\n f: factorial,\n notation: 'postfix',\n precedence: 6,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '!',\n regSymbol: '!'\n },\n '^': {\n infix: {\n symbol: '^',\n f: power,\n notation: 'infix',\n precedence: 5,\n rightToLeft: 1,\n argCount: 2\n },\n symbol: '^',\n regSymbol: '\\\\^'\n },\n '*': {\n infix: {\n symbol: '*',\n f: multiplication,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '*',\n regSymbol: '\\\\*'\n },\n '/': {\n infix: {\n symbol: '/',\n f: division,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '/',\n regSymbol: '/'\n },\n '+': {\n infix: {\n symbol: '+',\n f: addition,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '+',\n f: last,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '+',\n regSymbol: '\\\\+'\n },\n '-': {\n infix: {\n symbol: '-',\n f: subtraction,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '-',\n f: negation,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '-',\n regSymbol: '-'\n },\n ',': {\n infix: {\n symbol: ',',\n f: comma,\n notation: 'infix',\n precedence: 1,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: ',',\n regSymbol: ','\n },\n '(': {\n prefix: {\n symbol: '(',\n f: last,\n notation: 'prefix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '(',\n regSymbol: '\\\\('\n },\n ')': {\n postfix: {\n symbol: ')',\n f: undefined,\n notation: 'postfix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: ')',\n regSymbol: '\\\\)'\n },\n min: {\n func: {\n symbol: 'min',\n f: min,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'min',\n regSymbol: 'min\\\\b'\n },\n max: {\n func: {\n symbol: 'max',\n f: max,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'max',\n regSymbol: 'max\\\\b'\n },\n sqrt: {\n func: {\n symbol: 'sqrt',\n f: sqrt,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'sqrt',\n regSymbol: 'sqrt\\\\b'\n }\n }\n};\n\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"16\": \"You must provide a template to this method.\\n\\n\",\n \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"36\": \"Property must be a string value.\\n\\n\",\n \"37\": \"Syntax Error at %s.\\n\\n\",\n \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"61\": \"Property must be a string value.\\n\\n\",\n \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"67\": \"You must provide a template to this method.\\n\\n\",\n \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n \"74\": \"CSS variable not found.\\n\\n\",\n \"75\": \"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\\n\"\n};\n/**\n * super basic version of sprintf\n * @private\n */\n\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var a = args[0];\n var b = [];\n var c;\n\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\n\n\nvar PolishedError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(PolishedError, _Error);\n\n function PolishedError(code) {\n var _this;\n\n if (process.env.NODE_ENV === 'production') {\n _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n } else {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;\n }\n\n return _assertThisInitialized(_this);\n }\n\n return PolishedError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar unitRegExp = /((?!\\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\\D|$)|ged|darg?|nrut)/g; // Merges additional math functionality into the defaults.\n\nfunction mergeSymbolMaps(additionalSymbols) {\n var symbolMap = {};\n symbolMap.symbols = additionalSymbols ? _extends({}, defaultMathSymbols.symbols, additionalSymbols.symbols) : _extends({}, defaultMathSymbols.symbols);\n return symbolMap;\n}\n\nfunction exec(operators, values) {\n var _ref;\n\n var op = operators.pop();\n values.push(op.f.apply(op, (_ref = []).concat.apply(_ref, values.splice(-op.argCount))));\n return op.precedence;\n}\n\nfunction calculate(expression, additionalSymbols) {\n var symbolMap = mergeSymbolMaps(additionalSymbols);\n var match;\n var operators = [symbolMap.symbols['('].prefix];\n var values = [];\n var pattern = new RegExp( // Pattern for numbers\n \"\\\\d+(?:\\\\.\\\\d+)?|\" + // ...and patterns for individual operators/function names\n Object.keys(symbolMap.symbols).map(function (key) {\n return symbolMap.symbols[key];\n }) // longer symbols should be listed first\n // $FlowFixMe\n .sort(function (a, b) {\n return b.symbol.length - a.symbol.length;\n }) // $FlowFixMe\n .map(function (val) {\n return val.regSymbol;\n }).join('|') + \"|(\\\\S)\", 'g');\n pattern.lastIndex = 0; // Reset regular expression object\n\n var afterValue = false;\n\n do {\n match = pattern.exec(expression);\n\n var _ref2 = match || [')', undefined],\n token = _ref2[0],\n bad = _ref2[1];\n\n var notNumber = symbolMap.symbols[token];\n var notNewValue = notNumber && !notNumber.prefix && !notNumber.func;\n var notAfterValue = !notNumber || !notNumber.postfix && !notNumber.infix; // Check for syntax errors:\n\n if (bad || (afterValue ? notAfterValue : notNewValue)) {\n throw new PolishedError(37, match ? match.index : expression.length, expression);\n }\n\n if (afterValue) {\n // We either have an infix or postfix operator (they should be mutually exclusive)\n var curr = notNumber.postfix || notNumber.infix;\n\n do {\n var prev = operators[operators.length - 1];\n if ((curr.precedence - prev.precedence || prev.rightToLeft) > 0) break; // Apply previous operator, since it has precedence over current one\n } while (exec(operators, values)); // Exit loop after executing an opening parenthesis or function\n\n\n afterValue = curr.notation === 'postfix';\n\n if (curr.symbol !== ')') {\n operators.push(curr); // Postfix always has precedence over any operator that follows after it\n\n if (afterValue) exec(operators, values);\n }\n } else if (notNumber) {\n // prefix operator or function\n operators.push(notNumber.prefix || notNumber.func);\n\n if (notNumber.func) {\n // Require an opening parenthesis\n match = pattern.exec(expression);\n\n if (!match || match[0] !== '(') {\n throw new PolishedError(38, match ? match.index : expression.length, expression);\n }\n }\n } else {\n // number\n values.push(+token);\n afterValue = true;\n }\n } while (match && operators.length);\n\n if (operators.length) {\n throw new PolishedError(39, match ? match.index : expression.length, expression);\n } else if (match) {\n throw new PolishedError(40, match ? match.index : expression.length, expression);\n } else {\n return values.pop();\n }\n}\n\nfunction reverseString(str) {\n return str.split('').reverse().join('');\n}\n/**\n * Helper for doing math with CSS Units. Accepts a formula as a string. All values in the formula must have the same unit (or be unitless). Supports complex formulas utliziing addition, subtraction, multiplication, division, square root, powers, factorial, min, max, as well as parentheses for order of operation.\n *\n *In cases where you need to do calculations with mixed units where one unit is a [relative length unit](https://developer.mozilla.org/en-US/docs/Web/CSS/length#Relative_length_units), you will want to use [CSS Calc](https://developer.mozilla.org/en-US/docs/Web/CSS/calc).\n *\n * *warning* While we've done everything possible to ensure math safely evalutes formulas expressed as strings, you should always use extreme caution when passing `math` user provided values.\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: math('12rem + 8rem'),\n * fontSize: math('(12px + 2px) * 3'),\n * fontSize: math('3px^2 + sqrt(4)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${math('12rem + 8rem')};\n * fontSize: ${math('(12px + 2px) * 3')};\n * fontSize: ${math('3px^2 + sqrt(4)')};\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * fontSize: '20rem',\n * fontSize: '42px',\n * fontSize: '11px',\n * }\n */\n\n\nfunction math(formula, additionalSymbols) {\n var reversedFormula = reverseString(formula);\n var formulaMatch = reversedFormula.match(unitRegExp); // Check that all units are the same\n\n if (formulaMatch && !formulaMatch.every(function (unit) {\n return unit === formulaMatch[0];\n })) {\n throw new PolishedError(41);\n }\n\n var cleanFormula = reverseString(reversedFormula.replace(unitRegExp, ''));\n return \"\" + calculate(cleanFormula, additionalSymbols) + (formulaMatch ? reverseString(formulaMatch[0]) : '');\n}\n\nvar cssVariableRegex = /--[\\S]*/g;\n/**\n * Fetches the value of a passed CSS Variable.\n *\n * Passthrough can be enabled (off by default) for when you are unsure of the input and want non-variable values to be returned instead of an error.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'background': cssVar('--background-color'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${cssVar('--background-color')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'background': 'red'\n * }\n */\n\nfunction cssVar(cssVariable, passThrough) {\n if (!cssVariable || !cssVariable.match(cssVariableRegex)) {\n if (passThrough) return cssVariable;\n throw new PolishedError(73);\n }\n\n var variableValue;\n /* eslint-disable */\n\n /* istanbul ignore next */\n\n if (typeof document !== 'undefined' && document.documentElement !== null) {\n variableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariable);\n }\n /* eslint-enable */\n\n\n if (variableValue) {\n return variableValue.trim();\n } else {\n throw new PolishedError(74);\n }\n}\n\n// @private\nfunction capitalizeString(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar positionMap = ['Top', 'Right', 'Bottom', 'Left'];\n\nfunction generateProperty(property, position) {\n if (!property) return position.toLowerCase();\n var splitProperty = property.split('-');\n\n if (splitProperty.length > 1) {\n splitProperty.splice(1, 0, position);\n return splitProperty.reduce(function (acc, val) {\n return \"\" + acc + capitalizeString(val);\n });\n }\n\n var joinedProperty = property.replace(/([a-z])([A-Z])/g, \"$1\" + position + \"$2\");\n return property === joinedProperty ? \"\" + property + position : joinedProperty;\n}\n\nfunction generateStyles(property, valuesWithDefaults) {\n var styles = {};\n\n for (var i = 0; i < valuesWithDefaults.length; i += 1) {\n if (valuesWithDefaults[i] || valuesWithDefaults[i] === 0) {\n styles[generateProperty(property, positionMap[i])] = valuesWithDefaults[i];\n }\n }\n\n return styles;\n}\n/**\n * Enables shorthand for direction-based properties. It accepts a property (hyphenated or camelCased) and up to four values that map to top, right, bottom, and left, respectively. You can optionally pass an empty string to get only the directional values as properties. You can also optionally pass a null argument for a directional value to ignore it.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...directionalProperty('padding', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${directionalProperty('padding', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'paddingTop': '12px',\n * 'paddingRight': '24px',\n * 'paddingBottom': '36px',\n * 'paddingLeft': '48px'\n * }\n */\n\n\nfunction directionalProperty(property) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n // prettier-ignore\n var firstValue = values[0],\n _values$ = values[1],\n secondValue = _values$ === void 0 ? firstValue : _values$,\n _values$2 = values[2],\n thirdValue = _values$2 === void 0 ? firstValue : _values$2,\n _values$3 = values[3],\n fourthValue = _values$3 === void 0 ? secondValue : _values$3;\n var valuesWithDefaults = [firstValue, secondValue, thirdValue, fourthValue];\n return generateStyles(property, valuesWithDefaults);\n}\n\n/**\n * Check if a string ends with something\n * @private\n */\nfunction endsWith(string, suffix) {\n return string.substr(-suffix.length) === suffix;\n}\n\nvar cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n/**\n * Returns a given CSS value minus its unit of measure.\n *\n * @deprecated - stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * '--dimension': stripUnit('100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * --dimension: ${stripUnit('100px')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * '--dimension': 100\n * }\n */\n\nfunction stripUnit(value, unitReturn) {\n if (typeof value !== 'string') return unitReturn ? [value, undefined] : value;\n var matchedValue = value.match(cssRegex);\n\n if (unitReturn) {\n // eslint-disable-next-line no-console\n console.warn(\"stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.\");\n if (matchedValue) return [parseFloat(value), matchedValue[2]];\n return [value, undefined];\n }\n\n if (matchedValue) return parseFloat(value);\n return value;\n}\n\n/**\n * Factory function that creates pixel-to-x converters\n * @private\n */\n\nvar pxtoFactory = function pxtoFactory(to) {\n return function (pxval, base) {\n if (base === void 0) {\n base = '16px';\n }\n\n var newPxval = pxval;\n var newBase = base;\n\n if (typeof pxval === 'string') {\n if (!endsWith(pxval, 'px')) {\n throw new PolishedError(69, to, pxval);\n }\n\n newPxval = stripUnit(pxval);\n }\n\n if (typeof base === 'string') {\n if (!endsWith(base, 'px')) {\n throw new PolishedError(70, to, base);\n }\n\n newBase = stripUnit(base);\n }\n\n if (typeof newPxval === 'string') {\n throw new PolishedError(71, pxval, to);\n }\n\n if (typeof newBase === 'string') {\n throw new PolishedError(72, base, to);\n }\n\n return \"\" + newPxval / newBase + to;\n };\n};\n\n/**\n * Convert pixel value to ems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': em('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${em('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '1em'\n * }\n */\n\nvar em = /*#__PURE__*/pxtoFactory('em');\n\nvar cssRegex$1 = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n/**\n * Returns a given CSS value and its unit as elements of an array.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * '--dimension': getValueAndUnit('100px')[0],\n * '--unit': getValueAndUnit('100px')[1],\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * --dimension: ${getValueAndUnit('100px')[0]};\n * --unit: ${getValueAndUnit('100px')[1]};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * '--dimension': 100,\n * '--unit': 'px',\n * }\n */\n\nfunction getValueAndUnit(value) {\n if (typeof value !== 'string') return [value, ''];\n var matchedValue = value.match(cssRegex$1);\n if (matchedValue) return [parseFloat(value), matchedValue[2]];\n return [value, undefined];\n}\n\nvar ratioNames = {\n minorSecond: 1.067,\n majorSecond: 1.125,\n minorThird: 1.2,\n majorThird: 1.25,\n perfectFourth: 1.333,\n augFourth: 1.414,\n perfectFifth: 1.5,\n minorSixth: 1.6,\n goldenSection: 1.618,\n majorSixth: 1.667,\n minorSeventh: 1.778,\n majorSeventh: 1.875,\n octave: 2,\n majorTenth: 2.5,\n majorEleventh: 2.667,\n majorTwelfth: 3,\n doubleOctave: 4\n};\n\nfunction getRatio(ratioName) {\n return ratioNames[ratioName];\n}\n/**\n * Establish consistent measurements and spacial relationships throughout your projects by incrementing an em or rem value up or down a defined scale. We provide a list of commonly used scales as pre-defined variables.\n * @example\n * // Styles as object usage\n * const styles = {\n * // Increment two steps up the default scale\n * 'fontSize': modularScale(2)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * // Increment two steps up the default scale\n * fontSize: ${modularScale(2)}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'fontSize': '1.77689em'\n * }\n */\n\n\nfunction modularScale(steps, base, ratio) {\n if (base === void 0) {\n base = '1em';\n }\n\n if (ratio === void 0) {\n ratio = 1.333;\n }\n\n if (typeof steps !== 'number') {\n throw new PolishedError(42);\n }\n\n if (typeof ratio === 'string' && !ratioNames[ratio]) {\n throw new PolishedError(43);\n }\n\n var _ref = typeof base === 'string' ? getValueAndUnit(base) : [base, ''],\n realBase = _ref[0],\n unit = _ref[1];\n\n var realRatio = typeof ratio === 'string' ? getRatio(ratio) : ratio;\n\n if (typeof realBase === 'string') {\n throw new PolishedError(44, base);\n }\n\n return \"\" + realBase * Math.pow(realRatio, steps) + (unit || '');\n}\n\n/**\n * Convert pixel value to rems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': rem('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${rem('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '1rem'\n * }\n */\n\nvar rem = /*#__PURE__*/pxtoFactory('rem');\n\n/**\n * Returns a CSS calc formula for linear interpolation of a property between two values. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px').\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: between('20px', '100px', '400px', '1000px'),\n * fontSize: between('20px', '100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${between('20px', '100px', '400px', '1000px')};\n * fontSize: ${between('20px', '100px')}\n * `\n *\n * // CSS as JS Output\n *\n * h1: {\n * 'fontSize': 'calc(-33.33333333333334px + 13.333333333333334vw)',\n * 'fontSize': 'calc(-9.090909090909093px + 9.090909090909092vw)'\n * }\n */\n\nfunction between(fromSize, toSize, minScreen, maxScreen) {\n if (minScreen === void 0) {\n minScreen = '320px';\n }\n\n if (maxScreen === void 0) {\n maxScreen = '1200px';\n }\n\n var _getValueAndUnit = getValueAndUnit(fromSize),\n unitlessFromSize = _getValueAndUnit[0],\n fromSizeUnit = _getValueAndUnit[1];\n\n var _getValueAndUnit2 = getValueAndUnit(toSize),\n unitlessToSize = _getValueAndUnit2[0],\n toSizeUnit = _getValueAndUnit2[1];\n\n var _getValueAndUnit3 = getValueAndUnit(minScreen),\n unitlessMinScreen = _getValueAndUnit3[0],\n minScreenUnit = _getValueAndUnit3[1];\n\n var _getValueAndUnit4 = getValueAndUnit(maxScreen),\n unitlessMaxScreen = _getValueAndUnit4[0],\n maxScreenUnit = _getValueAndUnit4[1];\n\n if (typeof unitlessMinScreen !== 'number' || typeof unitlessMaxScreen !== 'number' || !minScreenUnit || !maxScreenUnit || minScreenUnit !== maxScreenUnit) {\n throw new PolishedError(47);\n }\n\n if (typeof unitlessFromSize !== 'number' || typeof unitlessToSize !== 'number' || fromSizeUnit !== toSizeUnit) {\n throw new PolishedError(48);\n }\n\n if (fromSizeUnit !== minScreenUnit || toSizeUnit !== maxScreenUnit) {\n throw new PolishedError(75);\n }\n\n var slope = (unitlessFromSize - unitlessToSize) / (unitlessMinScreen - unitlessMaxScreen);\n var base = unitlessToSize - slope * unitlessMaxScreen;\n return \"calc(\" + base.toFixed(2) + (fromSizeUnit || '') + \" + \" + (100 * slope).toFixed(2) + \"vw)\";\n}\n\n/**\n * CSS to contain a float (credit to CSSMojo).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...clearFix(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${clearFix()}\n * `\n *\n * // CSS as JS Output\n *\n * '&::after': {\n * 'clear': 'both',\n * 'content': '\"\"',\n * 'display': 'table'\n * }\n */\nfunction clearFix(parent) {\n var _ref;\n\n if (parent === void 0) {\n parent = '&';\n }\n\n var pseudoSelector = parent + \"::after\";\n return _ref = {}, _ref[pseudoSelector] = {\n clear: 'both',\n content: '\"\"',\n display: 'table'\n }, _ref;\n}\n\n/**\n * CSS to fully cover an area. Can optionally be passed an offset to act as a \"padding\".\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...cover()\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${cover()}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'position': 'absolute',\n * 'top': '0',\n * 'right: '0',\n * 'bottom': '0',\n * 'left: '0'\n * }\n */\nfunction cover(offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n return {\n position: 'absolute',\n top: offset,\n right: offset,\n bottom: offset,\n left: offset\n };\n}\n\n/**\n * CSS to represent truncated text with an ellipsis.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...ellipsis('250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${ellipsis('250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'display': 'inline-block',\n * 'maxWidth': '250px',\n * 'overflow': 'hidden',\n * 'textOverflow': 'ellipsis',\n * 'whiteSpace': 'nowrap',\n * 'wordWrap': 'normal'\n * }\n */\nfunction ellipsis(width) {\n if (width === void 0) {\n width = '100%';\n }\n\n return {\n display: 'inline-block',\n maxWidth: width,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n wordWrap: 'normal'\n };\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Returns a set of media queries that resizes a property (or set of properties) between a provided fromSize and toSize. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px') to constrain the interpolation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...fluidRange(\n * {\n * prop: 'padding',\n * fromSize: '20px',\n * toSize: '100px',\n * },\n * '400px',\n * '1000px',\n * )\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${fluidRange(\n * {\n * prop: 'padding',\n * fromSize: '20px',\n * toSize: '100px',\n * },\n * '400px',\n * '1000px',\n * )}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * \"@media (min-width: 1000px)\": Object {\n * \"padding\": \"100px\",\n * },\n * \"@media (min-width: 400px)\": Object {\n * \"padding\": \"calc(-33.33333333333334px + 13.333333333333334vw)\",\n * },\n * \"padding\": \"20px\",\n * }\n */\nfunction fluidRange(cssProp, minScreen, maxScreen) {\n if (minScreen === void 0) {\n minScreen = '320px';\n }\n\n if (maxScreen === void 0) {\n maxScreen = '1200px';\n }\n\n if (!Array.isArray(cssProp) && typeof cssProp !== 'object' || cssProp === null) {\n throw new PolishedError(49);\n }\n\n if (Array.isArray(cssProp)) {\n var mediaQueries = {};\n var fallbacks = {};\n\n for (var _iterator = _createForOfIteratorHelperLoose(cssProp), _step; !(_step = _iterator()).done;) {\n var _extends2, _extends3;\n\n var obj = _step.value;\n\n if (!obj.prop || !obj.fromSize || !obj.toSize) {\n throw new PolishedError(50);\n }\n\n fallbacks[obj.prop] = obj.fromSize;\n mediaQueries[\"@media (min-width: \" + minScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + minScreen + \")\"], (_extends2 = {}, _extends2[obj.prop] = between(obj.fromSize, obj.toSize, minScreen, maxScreen), _extends2));\n mediaQueries[\"@media (min-width: \" + maxScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + maxScreen + \")\"], (_extends3 = {}, _extends3[obj.prop] = obj.toSize, _extends3));\n }\n\n return _extends({}, fallbacks, mediaQueries);\n } else {\n var _ref, _ref2, _ref3;\n\n if (!cssProp.prop || !cssProp.fromSize || !cssProp.toSize) {\n throw new PolishedError(51);\n }\n\n return _ref3 = {}, _ref3[cssProp.prop] = cssProp.fromSize, _ref3[\"@media (min-width: \" + minScreen + \")\"] = (_ref = {}, _ref[cssProp.prop] = between(cssProp.fromSize, cssProp.toSize, minScreen, maxScreen), _ref), _ref3[\"@media (min-width: \" + maxScreen + \")\"] = (_ref2 = {}, _ref2[cssProp.prop] = cssProp.toSize, _ref2), _ref3;\n }\n}\n\nvar dataURIRegex = /^\\s*data:([a-z]+\\/[a-z-]+(;[a-z-]+=[a-z-]+)?)?(;charset=[a-z0-9-]+)?(;base64)?,[a-z0-9!$&',()*+,;=\\-._~:@/?%\\s]*\\s*$/i;\nvar formatHintMap = {\n woff: 'woff',\n woff2: 'woff2',\n ttf: 'truetype',\n otf: 'opentype',\n eot: 'embedded-opentype',\n svg: 'svg',\n svgz: 'svg'\n};\n\nfunction generateFormatHint(format, formatHint) {\n if (!formatHint) return '';\n return \" format(\\\"\" + formatHintMap[format] + \"\\\")\";\n}\n\nfunction isDataURI(fontFilePath) {\n return !!fontFilePath.match(dataURIRegex);\n}\n\nfunction generateFileReferences(fontFilePath, fileFormats, formatHint) {\n if (isDataURI(fontFilePath)) {\n return \"url(\\\"\" + fontFilePath + \"\\\")\" + generateFormatHint(fileFormats[0], formatHint);\n }\n\n var fileFontReferences = fileFormats.map(function (format) {\n return \"url(\\\"\" + fontFilePath + \".\" + format + \"\\\")\" + generateFormatHint(format, formatHint);\n });\n return fileFontReferences.join(', ');\n}\n\nfunction generateLocalReferences(localFonts) {\n var localFontReferences = localFonts.map(function (font) {\n return \"local(\\\"\" + font + \"\\\")\";\n });\n return localFontReferences.join(', ');\n}\n\nfunction generateSources(fontFilePath, localFonts, fileFormats, formatHint) {\n var fontReferences = [];\n if (localFonts) fontReferences.push(generateLocalReferences(localFonts));\n\n if (fontFilePath) {\n fontReferences.push(generateFileReferences(fontFilePath, fileFormats, formatHint));\n }\n\n return fontReferences.join(', ');\n}\n/**\n * CSS for a @font-face declaration.\n *\n * @example\n * // Styles as object basic usage\n * const styles = {\n * ...fontFace({\n * 'fontFamily': 'Sans-Pro',\n * 'fontFilePath': 'path/to/file'\n * })\n * }\n *\n * // styled-components basic usage\n * const GlobalStyle = createGlobalStyle`${\n * fontFace({\n * 'fontFamily': 'Sans-Pro',\n * 'fontFilePath': 'path/to/file'\n * }\n * )}`\n *\n * // CSS as JS Output\n *\n * '@font-face': {\n * 'fontFamily': 'Sans-Pro',\n * 'src': 'url(\"path/to/file.eot\"), url(\"path/to/file.woff2\"), url(\"path/to/file.woff\"), url(\"path/to/file.ttf\"), url(\"path/to/file.svg\")',\n * }\n */\n\n\nfunction fontFace(_ref) {\n var fontFamily = _ref.fontFamily,\n fontFilePath = _ref.fontFilePath,\n fontStretch = _ref.fontStretch,\n fontStyle = _ref.fontStyle,\n fontVariant = _ref.fontVariant,\n fontWeight = _ref.fontWeight,\n _ref$fileFormats = _ref.fileFormats,\n fileFormats = _ref$fileFormats === void 0 ? ['eot', 'woff2', 'woff', 'ttf', 'svg'] : _ref$fileFormats,\n _ref$formatHint = _ref.formatHint,\n formatHint = _ref$formatHint === void 0 ? false : _ref$formatHint,\n localFonts = _ref.localFonts,\n unicodeRange = _ref.unicodeRange,\n fontDisplay = _ref.fontDisplay,\n fontVariationSettings = _ref.fontVariationSettings,\n fontFeatureSettings = _ref.fontFeatureSettings;\n // Error Handling\n if (!fontFamily) throw new PolishedError(55);\n\n if (!fontFilePath && !localFonts) {\n throw new PolishedError(52);\n }\n\n if (localFonts && !Array.isArray(localFonts)) {\n throw new PolishedError(53);\n }\n\n if (!Array.isArray(fileFormats)) {\n throw new PolishedError(54);\n }\n\n var fontFaceDeclaration = {\n '@font-face': {\n fontFamily: fontFamily,\n src: generateSources(fontFilePath, localFonts, fileFormats, formatHint),\n unicodeRange: unicodeRange,\n fontStretch: fontStretch,\n fontStyle: fontStyle,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n fontDisplay: fontDisplay,\n fontVariationSettings: fontVariationSettings,\n fontFeatureSettings: fontFeatureSettings\n }\n }; // Removes undefined fields for cleaner css object.\n\n return JSON.parse(JSON.stringify(fontFaceDeclaration));\n}\n\n/**\n * CSS to hide text to show a background image in a SEO-friendly way.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'backgroundImage': 'url(logo.png)',\n * ...hideText(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * backgroundImage: url(logo.png);\n * ${hideText()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'backgroundImage': 'url(logo.png)',\n * 'textIndent': '101%',\n * 'overflow': 'hidden',\n * 'whiteSpace': 'nowrap',\n * }\n */\nfunction hideText() {\n return {\n textIndent: '101%',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n };\n}\n\n/**\n * CSS to hide content visually but remain accessible to screen readers.\n * from [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate/blob/9a176f57af1cfe8ec70300da4621fb9b07e5fa31/src/css/main.css#L121)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...hideVisually(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${hideVisually()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'border': '0',\n * 'clip': 'rect(0 0 0 0)',\n * 'height': '1px',\n * 'margin': '-1px',\n * 'overflow': 'hidden',\n * 'padding': '0',\n * 'position': 'absolute',\n * 'whiteSpace': 'nowrap',\n * 'width': '1px',\n * }\n */\nfunction hideVisually() {\n return {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n };\n}\n\n/**\n * Generates a media query to target HiDPI devices.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * [hiDPI(1.5)]: {\n * width: 200px;\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${hiDPI(1.5)} {\n * width: 200px;\n * }\n * `\n *\n * // CSS as JS Output\n *\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),\n * only screen and (min--moz-device-pixel-ratio: 1.5),\n * only screen and (-o-min-device-pixel-ratio: 1.5/1),\n * only screen and (min-resolution: 144dpi),\n * only screen and (min-resolution: 1.5dppx)': {\n * 'width': '200px',\n * }\n */\nfunction hiDPI(ratio) {\n if (ratio === void 0) {\n ratio = 1.3;\n }\n\n return \"\\n @media only screen and (-webkit-min-device-pixel-ratio: \" + ratio + \"),\\n only screen and (min--moz-device-pixel-ratio: \" + ratio + \"),\\n only screen and (-o-min-device-pixel-ratio: \" + ratio + \"/1),\\n only screen and (min-resolution: \" + Math.round(ratio * 96) + \"dpi),\\n only screen and (min-resolution: \" + ratio + \"dppx)\\n \";\n}\n\nfunction constructGradientValue(literals) {\n var template = '';\n\n for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n substitutions[_key - 1] = arguments[_key];\n }\n\n for (var i = 0; i < literals.length; i += 1) {\n template += literals[i];\n\n if (i === substitutions.length - 1 && substitutions[i]) {\n var definedValues = substitutions.filter(function (substitute) {\n return !!substitute;\n }); // Adds leading coma if properties preceed color-stops\n\n if (definedValues.length > 1) {\n template = template.slice(0, -1);\n template += \", \" + substitutions[i]; // No trailing space if color-stops is the only param provided\n } else if (definedValues.length === 1) {\n template += \"\" + substitutions[i];\n }\n } else if (substitutions[i]) {\n template += substitutions[i] + \" \";\n }\n }\n\n return template.trim();\n}\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteralLoose([\"linear-gradient(\", \"\", \")\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n/**\n * CSS for declaring a linear gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...linearGradient({\n colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n toDirection: 'to top right',\n fallback: '#FFF',\n })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${linearGradient({\n colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n toDirection: 'to top right',\n fallback: '#FFF',\n })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n * 'backgroundColor': '#FFF',\n * 'backgroundImage': 'linear-gradient(to top right, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction linearGradient(_ref) {\n var colorStops = _ref.colorStops,\n fallback = _ref.fallback,\n _ref$toDirection = _ref.toDirection,\n toDirection = _ref$toDirection === void 0 ? '' : _ref$toDirection;\n\n if (!colorStops || colorStops.length < 2) {\n throw new PolishedError(56);\n }\n\n return {\n backgroundColor: fallback || colorStops[0].replace(/,\\s+/g, ',').split(' ')[0].replace(/,(?=\\S)/g, ', '),\n backgroundImage: constructGradientValue(_templateObject(), toDirection, colorStops.join(', ').replace(/,(?=\\S)/g, ', '))\n };\n}\n\n/**\n * CSS to normalize abnormalities across browsers (normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...normalize(),\n * }\n *\n * // styled-components usage\n * const GlobalStyle = createGlobalStyle`${normalize()}`\n *\n * // CSS as JS Output\n *\n * html {\n * lineHeight: 1.15,\n * textSizeAdjust: 100%,\n * } ...\n */\nfunction normalize() {\n var _ref;\n\n return [(_ref = {\n html: {\n lineHeight: '1.15',\n textSizeAdjust: '100%'\n },\n body: {\n margin: '0'\n },\n main: {\n display: 'block'\n },\n h1: {\n fontSize: '2em',\n margin: '0.67em 0'\n },\n hr: {\n boxSizing: 'content-box',\n height: '0',\n overflow: 'visible'\n },\n pre: {\n fontFamily: 'monospace, monospace',\n fontSize: '1em'\n },\n a: {\n backgroundColor: 'transparent'\n },\n 'abbr[title]': {\n borderBottom: 'none',\n textDecoration: 'underline'\n }\n }, _ref[\"b,\\n strong\"] = {\n fontWeight: 'bolder'\n }, _ref[\"code,\\n kbd,\\n samp\"] = {\n fontFamily: 'monospace, monospace',\n fontSize: '1em'\n }, _ref.small = {\n fontSize: '80%'\n }, _ref[\"sub,\\n sup\"] = {\n fontSize: '75%',\n lineHeight: '0',\n position: 'relative',\n verticalAlign: 'baseline'\n }, _ref.sub = {\n bottom: '-0.25em'\n }, _ref.sup = {\n top: '-0.5em'\n }, _ref.img = {\n borderStyle: 'none'\n }, _ref[\"button,\\n input,\\n optgroup,\\n select,\\n textarea\"] = {\n fontFamily: 'inherit',\n fontSize: '100%',\n lineHeight: '1.15',\n margin: '0'\n }, _ref[\"button,\\n input\"] = {\n overflow: 'visible'\n }, _ref[\"button,\\n select\"] = {\n textTransform: 'none'\n }, _ref[\"button,\\n html [type=\\\"button\\\"],\\n [type=\\\"reset\\\"],\\n [type=\\\"submit\\\"]\"] = {\n WebkitAppearance: 'button'\n }, _ref[\"button::-moz-focus-inner,\\n [type=\\\"button\\\"]::-moz-focus-inner,\\n [type=\\\"reset\\\"]::-moz-focus-inner,\\n [type=\\\"submit\\\"]::-moz-focus-inner\"] = {\n borderStyle: 'none',\n padding: '0'\n }, _ref[\"button:-moz-focusring,\\n [type=\\\"button\\\"]:-moz-focusring,\\n [type=\\\"reset\\\"]:-moz-focusring,\\n [type=\\\"submit\\\"]:-moz-focusring\"] = {\n outline: '1px dotted ButtonText'\n }, _ref.fieldset = {\n padding: '0.35em 0.625em 0.75em'\n }, _ref.legend = {\n boxSizing: 'border-box',\n color: 'inherit',\n display: 'table',\n maxWidth: '100%',\n padding: '0',\n whiteSpace: 'normal'\n }, _ref.progress = {\n verticalAlign: 'baseline'\n }, _ref.textarea = {\n overflow: 'auto'\n }, _ref[\"[type=\\\"checkbox\\\"],\\n [type=\\\"radio\\\"]\"] = {\n boxSizing: 'border-box',\n padding: '0'\n }, _ref[\"[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n [type=\\\"number\\\"]::-webkit-outer-spin-button\"] = {\n height: 'auto'\n }, _ref['[type=\"search\"]'] = {\n WebkitAppearance: 'textfield',\n outlineOffset: '-2px'\n }, _ref['[type=\"search\"]::-webkit-search-decoration'] = {\n WebkitAppearance: 'none'\n }, _ref['::-webkit-file-upload-button'] = {\n WebkitAppearance: 'button',\n font: 'inherit'\n }, _ref.details = {\n display: 'block'\n }, _ref.summary = {\n display: 'list-item'\n }, _ref.template = {\n display: 'none'\n }, _ref['[hidden]'] = {\n display: 'none'\n }, _ref), {\n 'abbr[title]': {\n textDecoration: 'underline dotted'\n }\n }];\n}\n\nfunction _templateObject$1() {\n var data = _taggedTemplateLiteralLoose([\"radial-gradient(\", \"\", \"\", \"\", \")\"]);\n\n _templateObject$1 = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n/**\n * CSS for declaring a radial gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...radialGradient({\n * colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n * extent: 'farthest-corner at 45px 45px',\n * position: 'center',\n * shape: 'ellipse',\n * })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${radialGradient({\n * colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n * extent: 'farthest-corner at 45px 45px',\n * position: 'center',\n * shape: 'ellipse',\n * })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n * 'backgroundColor': '#00FFFF',\n * 'backgroundImage': 'radial-gradient(center ellipse farthest-corner at 45px 45px, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction radialGradient(_ref) {\n var colorStops = _ref.colorStops,\n _ref$extent = _ref.extent,\n extent = _ref$extent === void 0 ? '' : _ref$extent,\n fallback = _ref.fallback,\n _ref$position = _ref.position,\n position = _ref$position === void 0 ? '' : _ref$position,\n _ref$shape = _ref.shape,\n shape = _ref$shape === void 0 ? '' : _ref$shape;\n\n if (!colorStops || colorStops.length < 2) {\n throw new PolishedError(57);\n }\n\n return {\n backgroundColor: fallback || colorStops[0].split(' ')[0],\n backgroundImage: constructGradientValue(_templateObject$1(), position, shape, extent, colorStops.join(', '))\n };\n}\n\n/**\n * A helper to generate a retina background image and non-retina\n * background image. The retina background image will output to a HiDPI media query. The mixin uses\n * a _2x.png filename suffix by default.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...retinaImage('my-img')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${retinaImage('my-img')}\n * `\n *\n * // CSS as JS Output\n * div {\n * backgroundImage: 'url(my-img.png)',\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.3),\n * only screen and (min--moz-device-pixel-ratio: 1.3),\n * only screen and (-o-min-device-pixel-ratio: 1.3/1),\n * only screen and (min-resolution: 144dpi),\n * only screen and (min-resolution: 1.5dppx)': {\n * backgroundImage: 'url(my-img_2x.png)',\n * }\n * }\n */\nfunction retinaImage(filename, backgroundSize, extension, retinaFilename, retinaSuffix) {\n var _ref;\n\n if (extension === void 0) {\n extension = 'png';\n }\n\n if (retinaSuffix === void 0) {\n retinaSuffix = '_2x';\n }\n\n if (!filename) {\n throw new PolishedError(58);\n } // Replace the dot at the beginning of the passed extension if one exists\n\n\n var ext = extension.replace(/^\\./, '');\n var rFilename = retinaFilename ? retinaFilename + \".\" + ext : \"\" + filename + retinaSuffix + \".\" + ext;\n return _ref = {\n backgroundImage: \"url(\" + filename + \".\" + ext + \")\"\n }, _ref[hiDPI()] = _extends({\n backgroundImage: \"url(\" + rFilename + \")\"\n }, backgroundSize ? {\n backgroundSize: backgroundSize\n } : {}), _ref;\n}\n\n/* eslint-disable key-spacing */\nvar functionsMap = {\n easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n easeInCirc: 'cubic-bezier(0.600, 0.040, 0.980, 0.335)',\n easeInCubic: 'cubic-bezier(0.550, 0.055, 0.675, 0.190)',\n easeInExpo: 'cubic-bezier(0.950, 0.050, 0.795, 0.035)',\n easeInQuad: 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n easeInQuart: 'cubic-bezier(0.895, 0.030, 0.685, 0.220)',\n easeInQuint: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n easeInSine: 'cubic-bezier(0.470, 0.000, 0.745, 0.715)',\n easeOutBack: 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',\n easeOutCubic: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n easeOutCirc: 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',\n easeOutExpo: 'cubic-bezier(0.190, 1.000, 0.220, 1.000)',\n easeOutQuad: 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',\n easeOutQuart: 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',\n easeOutQuint: 'cubic-bezier(0.230, 1.000, 0.320, 1.000)',\n easeOutSine: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n easeInOutBack: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',\n easeInOutCirc: 'cubic-bezier(0.785, 0.135, 0.150, 0.860)',\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',\n easeInOutExpo: 'cubic-bezier(1.000, 0.000, 0.000, 1.000)',\n easeInOutQuad: 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',\n easeInOutQuart: 'cubic-bezier(0.770, 0.000, 0.175, 1.000)',\n easeInOutQuint: 'cubic-bezier(0.860, 0.000, 0.070, 1.000)',\n easeInOutSine: 'cubic-bezier(0.445, 0.050, 0.550, 0.950)'\n};\n/* eslint-enable key-spacing */\n\nfunction getTimingFunction(functionName) {\n return functionsMap[functionName];\n}\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'transitionTimingFunction': timingFunctions('easeInQuad')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * transitionTimingFunction: ${timingFunctions('easeInQuad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'transitionTimingFunction': 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n * }\n */\n\n\nfunction timingFunctions(timingFunction) {\n return getTimingFunction(timingFunction);\n}\n\nvar getBorderWidth = function getBorderWidth(pointingDirection, height, width) {\n var fullWidth = \"\" + width[0] + (width[1] || '');\n var halfWidth = \"\" + width[0] / 2 + (width[1] || '');\n var fullHeight = \"\" + height[0] + (height[1] || '');\n var halfHeight = \"\" + height[0] / 2 + (height[1] || '');\n\n switch (pointingDirection) {\n case 'top':\n return \"0 \" + halfWidth + \" \" + fullHeight + \" \" + halfWidth;\n\n case 'topLeft':\n return fullWidth + \" \" + fullHeight + \" 0 0\";\n\n case 'left':\n return halfHeight + \" \" + fullWidth + \" \" + halfHeight + \" 0\";\n\n case 'bottomLeft':\n return fullWidth + \" 0 0 \" + fullHeight;\n\n case 'bottom':\n return fullHeight + \" \" + halfWidth + \" 0 \" + halfWidth;\n\n case 'bottomRight':\n return \"0 0 \" + fullWidth + \" \" + fullHeight;\n\n case 'right':\n return halfHeight + \" 0 \" + halfHeight + \" \" + fullWidth;\n\n case 'topRight':\n default:\n return \"0 \" + fullWidth + \" \" + fullHeight + \" 0\";\n }\n};\n\nvar getBorderColor = function getBorderColor(pointingDirection, foregroundColor) {\n switch (pointingDirection) {\n case 'top':\n case 'bottomRight':\n return {\n borderBottomColor: foregroundColor\n };\n\n case 'right':\n case 'bottomLeft':\n return {\n borderLeftColor: foregroundColor\n };\n\n case 'bottom':\n case 'topLeft':\n return {\n borderTopColor: foregroundColor\n };\n\n case 'left':\n case 'topRight':\n return {\n borderRightColor: foregroundColor\n };\n\n default:\n throw new PolishedError(59);\n }\n};\n/**\n * CSS to represent triangle with any pointing direction with an optional background color.\n *\n * @example\n * // Styles as object usage\n *\n * const styles = {\n * ...triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })\n * }\n *\n *\n * // styled-components usage\n * const div = styled.div`\n * ${triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })}\n *\n *\n * // CSS as JS Output\n *\n * div: {\n * 'borderColor': 'transparent transparent transparent red',\n * 'borderStyle': 'solid',\n * 'borderWidth': '50px 0 50px 100px',\n * 'height': '0',\n * 'width': '0',\n * }\n */\n\n\nfunction triangle(_ref) {\n var pointingDirection = _ref.pointingDirection,\n height = _ref.height,\n width = _ref.width,\n foregroundColor = _ref.foregroundColor,\n _ref$backgroundColor = _ref.backgroundColor,\n backgroundColor = _ref$backgroundColor === void 0 ? 'transparent' : _ref$backgroundColor;\n var widthAndUnit = getValueAndUnit(width);\n var heightAndUnit = getValueAndUnit(height);\n\n if (isNaN(heightAndUnit[0]) || isNaN(widthAndUnit[0])) {\n throw new PolishedError(60);\n }\n\n return _extends({\n width: '0',\n height: '0',\n borderColor: backgroundColor\n }, getBorderColor(pointingDirection, foregroundColor), {\n borderStyle: 'solid',\n borderWidth: getBorderWidth(pointingDirection, heightAndUnit, widthAndUnit)\n });\n}\n\n/**\n * Provides an easy way to change the `wordWrap` property.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...wordWrap('break-word')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${wordWrap('break-word')}\n * `\n *\n * // CSS as JS Output\n *\n * const styles = {\n * overflowWrap: 'break-word',\n * wordWrap: 'break-word',\n * wordBreak: 'break-all',\n * }\n */\nfunction wordWrap(wrap) {\n if (wrap === void 0) {\n wrap = 'break-word';\n }\n\n var wordBreak = wrap === 'break-word' ? 'break-all' : wrap;\n return {\n overflowWrap: wrap,\n wordWrap: wrap,\n wordBreak: wordBreak\n };\n}\n\nfunction colorToInt(color) {\n return Math.round(color * 255);\n}\n\nfunction convertToInt(red, green, blue) {\n return colorToInt(red) + \",\" + colorToInt(green) + \",\" + colorToInt(blue);\n}\n\nfunction hslToRgb(hue, saturation, lightness, convert) {\n if (convert === void 0) {\n convert = convertToInt;\n }\n\n if (saturation === 0) {\n // achromatic\n return convert(lightness, lightness, lightness);\n } // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n\n\n var huePrime = (hue % 360 + 360) % 360 / 60;\n var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;\n var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n var red = 0;\n var green = 0;\n var blue = 0;\n\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n\n var lightnessModification = lightness - chroma / 2;\n var finalRed = red + lightnessModification;\n var finalGreen = green + lightnessModification;\n var finalBlue = blue + lightnessModification;\n return convert(finalRed, finalGreen, finalBlue);\n}\n\nvar namedColorMap = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkgrey: 'a9a9a9',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '639',\n red: 'f00',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32'\n};\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n * @private\n */\n\nfunction nameToHex(color) {\n if (typeof color !== 'string') return color;\n var normalizedColorName = color.toLowerCase();\n return namedColorMap[normalizedColorName] ? \"#\" + namedColorMap[normalizedColorName] : color;\n}\n\nvar hexRegex = /^#[a-fA-F0-9]{6}$/;\nvar hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;\nvar reducedHexRegex = /^#[a-fA-F0-9]{3}$/;\nvar reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;\nvar rgbRegex = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i;\nvar rgbaRegex = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*([-+]?[0-9]*[.]?[0-9]+)\\s*\\)$/i;\nvar hslRegex = /^hsl\\(\\s*(\\d{0,3}[.]?[0-9]+)\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*\\)$/i;\nvar hslaRegex = /^hsla\\(\\s*(\\d{0,3}[.]?[0-9]+)\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*([-+]?[0-9]*[.]?[0-9]+)\\s*\\)$/i;\n/**\n * Returns an RgbColor or RgbaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a RgbColor or RgbaColor object back to a string.\n *\n * @example\n * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1\n * const color1 = parseToRgb('rgb(255, 0, 0)');\n * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2\n * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');\n */\n\nfunction parseToRgb(color) {\n if (typeof color !== 'string') {\n throw new PolishedError(3);\n }\n\n var normalizedColor = nameToHex(color);\n\n if (normalizedColor.match(hexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16)\n };\n }\n\n if (normalizedColor.match(hexRgbaRegex)) {\n var alpha = parseFloat((parseInt(\"\" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16),\n alpha: alpha\n };\n }\n\n if (normalizedColor.match(reducedHexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16)\n };\n }\n\n if (normalizedColor.match(reducedRgbaHexRegex)) {\n var _alpha = parseFloat((parseInt(\"\" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));\n\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16),\n alpha: _alpha\n };\n }\n\n var rgbMatched = rgbRegex.exec(normalizedColor);\n\n if (rgbMatched) {\n return {\n red: parseInt(\"\" + rgbMatched[1], 10),\n green: parseInt(\"\" + rgbMatched[2], 10),\n blue: parseInt(\"\" + rgbMatched[3], 10)\n };\n }\n\n var rgbaMatched = rgbaRegex.exec(normalizedColor);\n\n if (rgbaMatched) {\n return {\n red: parseInt(\"\" + rgbaMatched[1], 10),\n green: parseInt(\"\" + rgbaMatched[2], 10),\n blue: parseInt(\"\" + rgbaMatched[3], 10),\n alpha: parseFloat(\"\" + rgbaMatched[4])\n };\n }\n\n var hslMatched = hslRegex.exec(normalizedColor);\n\n if (hslMatched) {\n var hue = parseInt(\"\" + hslMatched[1], 10);\n var saturation = parseInt(\"\" + hslMatched[2], 10) / 100;\n var lightness = parseInt(\"\" + hslMatched[3], 10) / 100;\n var rgbColorString = \"rgb(\" + hslToRgb(hue, saturation, lightness) + \")\";\n var hslRgbMatched = rgbRegex.exec(rgbColorString);\n\n if (!hslRgbMatched) {\n throw new PolishedError(4, normalizedColor, rgbColorString);\n }\n\n return {\n red: parseInt(\"\" + hslRgbMatched[1], 10),\n green: parseInt(\"\" + hslRgbMatched[2], 10),\n blue: parseInt(\"\" + hslRgbMatched[3], 10)\n };\n }\n\n var hslaMatched = hslaRegex.exec(normalizedColor);\n\n if (hslaMatched) {\n var _hue = parseInt(\"\" + hslaMatched[1], 10);\n\n var _saturation = parseInt(\"\" + hslaMatched[2], 10) / 100;\n\n var _lightness = parseInt(\"\" + hslaMatched[3], 10) / 100;\n\n var _rgbColorString = \"rgb(\" + hslToRgb(_hue, _saturation, _lightness) + \")\";\n\n var _hslRgbMatched = rgbRegex.exec(_rgbColorString);\n\n if (!_hslRgbMatched) {\n throw new PolishedError(4, normalizedColor, _rgbColorString);\n }\n\n return {\n red: parseInt(\"\" + _hslRgbMatched[1], 10),\n green: parseInt(\"\" + _hslRgbMatched[2], 10),\n blue: parseInt(\"\" + _hslRgbMatched[3], 10),\n alpha: parseFloat(\"\" + hslaMatched[4])\n };\n }\n\n throw new PolishedError(5);\n}\n\nfunction rgbToHsl(color) {\n // make sure rgb are contained in a set of [0, 255]\n var red = color.red / 255;\n var green = color.green / 255;\n var blue = color.blue / 255;\n var max = Math.max(red, green, blue);\n var min = Math.min(red, green, blue);\n var lightness = (max + min) / 2;\n\n if (max === min) {\n // achromatic\n if (color.alpha !== undefined) {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness,\n alpha: color.alpha\n };\n } else {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness\n };\n }\n }\n\n var hue;\n var delta = max - min;\n var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n switch (max) {\n case red:\n hue = (green - blue) / delta + (green < blue ? 6 : 0);\n break;\n\n case green:\n hue = (blue - red) / delta + 2;\n break;\n\n default:\n // blue case\n hue = (red - green) / delta + 4;\n break;\n }\n\n hue *= 60;\n\n if (color.alpha !== undefined) {\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness,\n alpha: color.alpha\n };\n }\n\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness\n };\n}\n\n/**\n * Returns an HslColor or HslaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a HslColor or HslaColor object back to a string.\n *\n * @example\n * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1\n * const color1 = parseToHsl('rgb(255, 0, 0)');\n * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2\n * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');\n */\nfunction parseToHsl(color) {\n // Note: At a later stage we can optimize this function as right now a hsl\n // color would be parsed converted to rgb values and converted back to hsl.\n return rgbToHsl(parseToRgb(color));\n}\n\n/**\n * Reduces hex values if possible e.g. #ff8866 to #f86\n * @private\n */\nvar reduceHexValue = function reduceHexValue(value) {\n if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {\n return \"#\" + value[1] + value[3] + value[5];\n }\n\n return value;\n};\n\nfunction numberToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n}\n\nfunction colorToHex(color) {\n return numberToHex(Math.round(color * 255));\n}\n\nfunction convertToHex(red, green, blue) {\n return reduceHexValue(\"#\" + colorToHex(red) + colorToHex(green) + colorToHex(blue));\n}\n\nfunction hslToHex(hue, saturation, lightness) {\n return hslToRgb(hue, saturation, lightness, convertToHex);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsl(359, 0.75, 0.4),\n * background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsl(359, 0.75, 0.4)};\n * background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#b3191c\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsl(value, saturation, lightness) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {\n return hslToHex(value, saturation, lightness);\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {\n return hslToHex(value.hue, value.saturation, value.lightness);\n }\n\n throw new PolishedError(1);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsla(359, 0.75, 0.4, 0.7),\n * background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),\n * background: hsla(359, 0.75, 0.4, 1),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsla(359, 0.75, 0.4, 0.7)};\n * background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};\n * background: ${hsla(359, 0.75, 0.4, 1)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsla(value, saturation, lightness, alpha) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {\n return alpha >= 1 ? hslToHex(value, saturation, lightness) : \"rgba(\" + hslToRgb(value, saturation, lightness) + \",\" + alpha + \")\";\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {\n return value.alpha >= 1 ? hslToHex(value.hue, value.saturation, value.lightness) : \"rgba(\" + hslToRgb(value.hue, value.saturation, value.lightness) + \",\" + value.alpha + \")\";\n }\n\n throw new PolishedError(2);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgb(255, 205, 100),\n * background: rgb({ red: 255, green: 205, blue: 100 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgb(255, 205, 100)};\n * background: ${rgb({ red: 255, green: 205, blue: 100 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffcd64\";\n * background: \"#ffcd64\";\n * }\n */\nfunction rgb(value, green, blue) {\n if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {\n return reduceHexValue(\"#\" + numberToHex(value) + numberToHex(green) + numberToHex(blue));\n } else if (typeof value === 'object' && green === undefined && blue === undefined) {\n return reduceHexValue(\"#\" + numberToHex(value.red) + numberToHex(value.green) + numberToHex(value.blue));\n }\n\n throw new PolishedError(6);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgba(255, 205, 100, 0.7),\n * background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),\n * background: rgba(255, 205, 100, 1),\n * background: rgba('#ffffff', 0.4),\n * background: rgba('black', 0.7),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgba(255, 205, 100, 0.7)};\n * background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};\n * background: ${rgba(255, 205, 100, 1)};\n * background: ${rgba('#ffffff', 0.4)};\n * background: ${rgba('black', 0.7)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"#ffcd64\";\n * background: \"rgba(255,255,255,0.4)\";\n * background: \"rgba(0,0,0,0.7)\";\n * }\n */\nfunction rgba(firstValue, secondValue, thirdValue, fourthValue) {\n if (typeof firstValue === 'string' && typeof secondValue === 'number') {\n var rgbValue = parseToRgb(firstValue);\n return \"rgba(\" + rgbValue.red + \",\" + rgbValue.green + \",\" + rgbValue.blue + \",\" + secondValue + \")\";\n } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {\n return fourthValue >= 1 ? rgb(firstValue, secondValue, thirdValue) : \"rgba(\" + firstValue + \",\" + secondValue + \",\" + thirdValue + \",\" + fourthValue + \")\";\n } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {\n return firstValue.alpha >= 1 ? rgb(firstValue.red, firstValue.green, firstValue.blue) : \"rgba(\" + firstValue.red + \",\" + firstValue.green + \",\" + firstValue.blue + \",\" + firstValue.alpha + \")\";\n }\n\n throw new PolishedError(7);\n}\n\nvar isRgb = function isRgb(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\n\nvar isRgba = function isRgba(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';\n};\n\nvar isHsl = function isHsl(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\n\nvar isHsla = function isHsla(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';\n};\n/**\n * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: toColorString({ red: 255, green: 205, blue: 100 }),\n * background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${toColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\n\n\nfunction toColorString(color) {\n if (typeof color !== 'object') throw new PolishedError(8);\n if (isRgba(color)) return rgba(color);\n if (isRgb(color)) return rgb(color);\n if (isHsla(color)) return hsla(color);\n if (isHsl(color)) return hsl(color);\n throw new PolishedError(8);\n}\n\n// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\nfunction curried(f, length, acc) {\n return function fn() {\n // eslint-disable-next-line prefer-rest-params\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n} // eslint-disable-next-line no-redeclare\n\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}\n\n/**\n * Changes the hue of the color. Hue is a number between 0 to 360. The first\n * argument for adjustHue is the amount of degrees the color is rotated around\n * the color wheel, always producing a positive hue value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: adjustHue(180, '#448'),\n * background: adjustHue('180', 'rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${adjustHue(180, '#448')};\n * background: ${adjustHue('180', 'rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#888844\";\n * background: \"rgba(136,136,68,0.7)\";\n * }\n */\n\nfunction adjustHue(degree, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n hue: hslColor.hue + parseFloat(degree)\n }));\n} // prettier-ignore\n\n\nvar curriedAdjustHue = /*#__PURE__*/curry\n/* :: */\n(adjustHue);\n\n/**\n * Returns the complement of the provided color. This is identical to adjustHue(180, ).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: complement('#448'),\n * background: complement('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${complement('#448')};\n * background: ${complement('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#884\";\n * background: \"rgba(153,153,153,0.7)\";\n * }\n */\n\nfunction complement(color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n hue: (hslColor.hue + 180) % 360\n }));\n}\n\nfunction guard(lowerBoundary, upperBoundary, value) {\n return Math.max(lowerBoundary, Math.min(upperBoundary, value));\n}\n\n/**\n * Returns a string value for the darkened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: darken(0.2, '#FFCD64'),\n * background: darken('0.2', 'rgba(255,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${darken(0.2, '#FFCD64')};\n * background: ${darken('0.2', 'rgba(255,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffbd31\";\n * background: \"rgba(255,189,49,0.7)\";\n * }\n */\n\nfunction darken(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n lightness: guard(0, 1, hslColor.lightness - parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedDarken = /*#__PURE__*/curry\n/* :: */\n(darken);\n\n/**\n * Decreases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the desaturate function is the amount by how much the color\n * intensity should be decreased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: desaturate(0.2, '#CCCD64'),\n * background: desaturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${desaturate(0.2, '#CCCD64')};\n * background: ${desaturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#b8b979\";\n * background: \"rgba(184,185,121,0.7)\";\n * }\n */\n\nfunction desaturate(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n saturation: guard(0, 1, hslColor.saturation - parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedDesaturate = /*#__PURE__*/curry\n/* :: */\n(desaturate);\n\n/**\n * Returns a number (float) representing the luminance of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',\n * background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)',\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};\n * background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)'};\n *\n * // CSS in JS Output\n *\n * div {\n * background: \"#CCCD64\";\n * background: \"rgba(58, 133, 255, 1)\";\n * }\n */\n\nfunction getLuminance(color) {\n if (color === 'transparent') return 0;\n var rgbColor = parseToRgb(color);\n\n var _Object$keys$map = Object.keys(rgbColor).map(function (key) {\n var channel = rgbColor[key] / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n }),\n r = _Object$keys$map[0],\n g = _Object$keys$map[1],\n b = _Object$keys$map[2];\n\n return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));\n}\n\n/**\n * Returns the contrast ratio between two colors based on\n * [W3's recommended equation for calculating contrast](http://www.w3.org/TR/WCAG20/#contrast-ratiodef).\n *\n * @example\n * const contrastRatio = getContrast('#444', '#fff');\n */\n\nfunction getContrast(color1, color2) {\n var luminance1 = getLuminance(color1);\n var luminance2 = getLuminance(color2);\n return parseFloat((luminance1 > luminance2 ? (luminance1 + 0.05) / (luminance2 + 0.05) : (luminance2 + 0.05) / (luminance1 + 0.05)).toFixed(2));\n}\n\n/**\n * Converts the color to a grayscale, by reducing its saturation to 0.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: grayscale('#CCCD64'),\n * background: grayscale('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${grayscale('#CCCD64')};\n * background: ${grayscale('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#999\";\n * background: \"rgba(153,153,153,0.7)\";\n * }\n */\n\nfunction grayscale(color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n saturation: 0\n }));\n}\n\n/**\n * Converts a HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\nfunction hslToColorString(color) {\n if (typeof color === 'object' && typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number') {\n if (color.alpha && typeof color.alpha === 'number') {\n return hsla({\n hue: color.hue,\n saturation: color.saturation,\n lightness: color.lightness,\n alpha: color.alpha\n });\n }\n\n return hsl({\n hue: color.hue,\n saturation: color.saturation,\n lightness: color.lightness\n });\n }\n\n throw new PolishedError(45);\n}\n\n/**\n * Inverts the red, green and blue values of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: invert('#CCCD64'),\n * background: invert('rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${invert('#CCCD64')};\n * background: ${invert('rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#33329b\";\n * background: \"rgba(154,155,50,0.7)\";\n * }\n */\n\nfunction invert(color) {\n if (color === 'transparent') return color; // parse color string to rgb\n\n var value = parseToRgb(color);\n return toColorString(_extends({}, value, {\n red: 255 - value.red,\n green: 255 - value.green,\n blue: 255 - value.blue\n }));\n}\n\n/**\n * Returns a string value for the lightened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: lighten(0.2, '#CCCD64'),\n * background: lighten('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${lighten(0.2, '#FFCD64')};\n * background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e5e6b1\";\n * background: \"rgba(229,230,177,0.7)\";\n * }\n */\n\nfunction lighten(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n lightness: guard(0, 1, hslColor.lightness + parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedLighten = /*#__PURE__*/curry\n/* :: */\n(lighten);\n\n/**\n * Determines which contrast guidelines have been met for two colors.\n * Based on the [contrast calculations recommended by W3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced.html).\n *\n * @example\n * const scores = meetsContrastGuidelines('#444', '#fff');\n */\nfunction meetsContrastGuidelines(color1, color2) {\n var contrastRatio = getContrast(color1, color2);\n return {\n AA: contrastRatio >= 4.5,\n AALarge: contrastRatio >= 3,\n AAA: contrastRatio >= 7,\n AAALarge: contrastRatio >= 4.5\n };\n}\n\n/**\n * Mixes the two provided colors together by calculating the average of each of the RGB components weighted to the first color by the provided weight.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: mix(0.5, '#f00', '#00f')\n * background: mix(0.25, '#f00', '#00f')\n * background: mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${mix(0.5, '#f00', '#00f')};\n * background: ${mix(0.25, '#f00', '#00f')};\n * background: ${mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#7f007f\";\n * background: \"#3f00bf\";\n * background: \"rgba(63, 0, 191, 0.75)\";\n * }\n */\n\nfunction mix(weight, color, otherColor) {\n if (color === 'transparent') return otherColor;\n if (otherColor === 'transparent') return color;\n if (weight === 0) return otherColor;\n var parsedColor1 = parseToRgb(color);\n\n var color1 = _extends({}, parsedColor1, {\n alpha: typeof parsedColor1.alpha === 'number' ? parsedColor1.alpha : 1\n });\n\n var parsedColor2 = parseToRgb(otherColor);\n\n var color2 = _extends({}, parsedColor2, {\n alpha: typeof parsedColor2.alpha === 'number' ? parsedColor2.alpha : 1\n }); // The formula is copied from the original Sass implementation:\n // http://sass-lang.com/documentation/Sass/Script/Functions.html#mix-instance_method\n\n\n var alphaDelta = color1.alpha - color2.alpha;\n var x = parseFloat(weight) * 2 - 1;\n var y = x * alphaDelta === -1 ? x : x + alphaDelta;\n var z = 1 + x * alphaDelta;\n var weight1 = (y / z + 1) / 2.0;\n var weight2 = 1 - weight1;\n var mixedColor = {\n red: Math.floor(color1.red * weight1 + color2.red * weight2),\n green: Math.floor(color1.green * weight1 + color2.green * weight2),\n blue: Math.floor(color1.blue * weight1 + color2.blue * weight2),\n alpha: color1.alpha * (parseFloat(weight) / 1.0) + color2.alpha * (1 - parseFloat(weight) / 1.0)\n };\n return rgba(mixedColor);\n} // prettier-ignore\n\n\nvar curriedMix = /*#__PURE__*/curry\n/* :: */\n(mix);\n\n/**\n * Increases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: opacify(0.1, 'rgba(255, 255, 255, 0.9)');\n * background: opacify(0.2, 'hsla(0, 0%, 100%, 0.5)'),\n * background: opacify('0.5', 'rgba(255, 0, 0, 0.2)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${opacify(0.1, 'rgba(255, 255, 255, 0.9)')};\n * background: ${opacify(0.2, 'hsla(0, 0%, 100%, 0.5)')},\n * background: ${opacify('0.5', 'rgba(255, 0, 0, 0.2)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#fff\";\n * background: \"rgba(255,255,255,0.7)\";\n * background: \"rgba(255,0,0,0.7)\";\n * }\n */\n\nfunction opacify(amount, color) {\n if (color === 'transparent') return color;\n var parsedColor = parseToRgb(color);\n var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n var colorWithAlpha = _extends({}, parsedColor, {\n alpha: guard(0, 1, (alpha * 100 + parseFloat(amount) * 100) / 100)\n });\n\n return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedOpacify = /*#__PURE__*/curry\n/* :: */\n(opacify);\n\nvar defaultReturnIfLightColor = '#000';\nvar defaultReturnIfDarkColor = '#fff';\n/**\n * Returns black or white (or optional passed colors) for best\n * contrast depending on the luminosity of the given color.\n * When passing custom return colors, strict mode ensures that the\n * return color always meets or exceeds WCAG level AA or greater. If this test\n * fails, the default return color (black or white) is returned in place of the\n * custom return color. You can optionally turn off strict mode.\n *\n * Follows [W3C specs for readability](https://www.w3.org/TR/WCAG20-TECHS/G18.html).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * color: readableColor('#000'),\n * color: readableColor('black', '#001', '#ff8'),\n * color: readableColor('white', '#001', '#ff8'),\n * color: readableColor('red', '#333', '#ddd', true)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * color: ${readableColor('#000')};\n * color: ${readableColor('black', '#001', '#ff8')};\n * color: ${readableColor('white', '#001', '#ff8')};\n * color: ${readableColor('red', '#333', '#ddd', true)};\n * `\n *\n * // CSS in JS Output\n * element {\n * color: \"#fff\";\n * color: \"#ff8\";\n * color: \"#001\";\n * color: \"#000\";\n * }\n */\n\nfunction readableColor(color, returnIfLightColor, returnIfDarkColor, strict) {\n if (returnIfLightColor === void 0) {\n returnIfLightColor = defaultReturnIfLightColor;\n }\n\n if (returnIfDarkColor === void 0) {\n returnIfDarkColor = defaultReturnIfDarkColor;\n }\n\n if (strict === void 0) {\n strict = true;\n }\n\n var isColorLight = getLuminance(color) > 0.179;\n var preferredReturnColor = isColorLight ? returnIfLightColor : returnIfDarkColor;\n\n if (!strict || getContrast(color, preferredReturnColor) >= 4.5) {\n return preferredReturnColor;\n }\n\n return isColorLight ? defaultReturnIfLightColor : defaultReturnIfDarkColor;\n}\n\n/**\n * Converts a RgbColor or RgbaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb` or `rgba`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgbToColorString({ red: 255, green: 205, blue: 100 }),\n * background: rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgbToColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * }\n */\nfunction rgbToColorString(color) {\n if (typeof color === 'object' && typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number') {\n if (typeof color.alpha === 'number') {\n return rgba({\n red: color.red,\n green: color.green,\n blue: color.blue,\n alpha: color.alpha\n });\n }\n\n return rgb({\n red: color.red,\n green: color.green,\n blue: color.blue\n });\n }\n\n throw new PolishedError(46);\n}\n\n/**\n * Increases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the saturate function is the amount by how much the color\n * intensity should be increased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: saturate(0.2, '#CCCD64'),\n * background: saturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${saturate(0.2, '#FFCD64')};\n * background: ${saturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e0e250\";\n * background: \"rgba(224,226,80,0.7)\";\n * }\n */\n\nfunction saturate(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n saturation: guard(0, 1, hslColor.saturation + parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedSaturate = /*#__PURE__*/curry\n/* :: */\n(saturate);\n\n/**\n * Sets the hue of a color to the provided value. The hue range can be\n * from 0 and 359.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setHue(42, '#CCCD64'),\n * background: setHue('244', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setHue(42, '#CCCD64')};\n * background: ${setHue('244', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#cdae64\";\n * background: \"rgba(107,100,205,0.7)\";\n * }\n */\n\nfunction setHue(hue, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n hue: parseFloat(hue)\n }));\n} // prettier-ignore\n\n\nvar curriedSetHue = /*#__PURE__*/curry\n/* :: */\n(setHue);\n\n/**\n * Sets the lightness of a color to the provided value. The lightness range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setLightness(0.2, '#CCCD64'),\n * background: setLightness('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setLightness(0.2, '#CCCD64')};\n * background: ${setLightness('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#4d4d19\";\n * background: \"rgba(223,224,159,0.7)\";\n * }\n */\n\nfunction setLightness(lightness, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n lightness: parseFloat(lightness)\n }));\n} // prettier-ignore\n\n\nvar curriedSetLightness = /*#__PURE__*/curry\n/* :: */\n(setLightness);\n\n/**\n * Sets the saturation of a color to the provided value. The saturation range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setSaturation(0.2, '#CCCD64'),\n * background: setSaturation('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setSaturation(0.2, '#CCCD64')};\n * background: ${setSaturation('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#adad84\";\n * background: \"rgba(228,229,76,0.7)\";\n * }\n */\n\nfunction setSaturation(saturation, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n saturation: parseFloat(saturation)\n }));\n} // prettier-ignore\n\n\nvar curriedSetSaturation = /*#__PURE__*/curry\n/* :: */\n(setSaturation);\n\n/**\n * Shades a color by mixing it with black. `shade` can produce\n * hue shifts, where as `darken` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: shade(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${shade(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#00003f\";\n * }\n */\n\nfunction shade(percentage, color) {\n if (color === 'transparent') return color;\n return curriedMix(parseFloat(percentage), 'rgb(0, 0, 0)', color);\n} // prettier-ignore\n\n\nvar curriedShade = /*#__PURE__*/curry\n/* :: */\n(shade);\n\n/**\n * Tints a color by mixing it with white. `tint` can produce\n * hue shifts, where as `lighten` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: tint(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${tint(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#bfbfff\";\n * }\n */\n\nfunction tint(percentage, color) {\n if (color === 'transparent') return color;\n return curriedMix(parseFloat(percentage), 'rgb(255, 255, 255)', color);\n} // prettier-ignore\n\n\nvar curriedTint = /*#__PURE__*/curry\n/* :: */\n(tint);\n\n/**\n * Decreases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: transparentize(0.1, '#fff');\n * background: transparentize(0.2, 'hsl(0, 0%, 100%)'),\n * background: transparentize('0.5', 'rgba(255, 0, 0, 0.8)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${transparentize(0.1, '#fff')};\n * background: ${transparentize(0.2, 'hsl(0, 0%, 100%)')},\n * background: ${transparentize('0.5', 'rgba(255, 0, 0, 0.8)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,255,255,0.9)\";\n * background: \"rgba(255,255,255,0.8)\";\n * background: \"rgba(255,0,0,0.3)\";\n * }\n */\n\nfunction transparentize(amount, color) {\n if (color === 'transparent') return color;\n var parsedColor = parseToRgb(color);\n var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n var colorWithAlpha = _extends({}, parsedColor, {\n alpha: guard(0, 1, +(alpha * 100 - parseFloat(amount) * 100).toFixed(2) / 100)\n });\n\n return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedTransparentize = /*#__PURE__*/curry\n/* :: */\n(transparentize);\n\n/**\n * Shorthand for easily setting the animation property. Allows either multiple arrays with animations\n * or a single animation spread over the arguments.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'animation': 'rotate 1s ease-in-out, colorchange 2s'\n * }\n * @example\n * // Styles as object usage\n * const styles = {\n * ...animation('rotate', '1s', 'ease-in-out')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${animation('rotate', '1s', 'ease-in-out')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'animation': 'rotate 1s ease-in-out'\n * }\n */\nfunction animation() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // Allow single or multiple animations passed\n var multiMode = Array.isArray(args[0]);\n\n if (!multiMode && args.length > 8) {\n throw new PolishedError(64);\n }\n\n var code = args.map(function (arg) {\n if (multiMode && !Array.isArray(arg) || !multiMode && Array.isArray(arg)) {\n throw new PolishedError(65);\n }\n\n if (Array.isArray(arg) && arg.length > 8) {\n throw new PolishedError(66);\n }\n\n return Array.isArray(arg) ? arg.join(' ') : arg;\n }).join(', ');\n return {\n animation: code\n };\n}\n\n/**\n * Shorthand that accepts any number of backgroundImage values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'backgroundImage': 'url(\"/image/background.jpg\"), linear-gradient(red, green)'\n * }\n */\nfunction backgroundImages() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n\n return {\n backgroundImage: properties.join(', ')\n };\n}\n\n/**\n * Shorthand that accepts any number of background values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'background': 'url(\"/image/background.jpg\"), linear-gradient(red, green), center no-repeat'\n * }\n */\nfunction backgrounds() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n\n return {\n background: properties.join(', ')\n };\n}\n\nvar sideMap = ['top', 'right', 'bottom', 'left'];\n/**\n * Shorthand for the border property that splits out individual properties for use with tools like Fela and Styletron. A side keyword can optionally be passed to target only one side's border properties.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...border('1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${border('1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderColor': 'red',\n * 'borderStyle': 'solid',\n * 'borderWidth': `1px`,\n * }\n *\n * // Styles as object usage\n * const styles = {\n * ...border('top', '1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${border('top', '1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopColor': 'red',\n * 'borderTopStyle': 'solid',\n * 'borderTopWidth': `1px`,\n * }\n */\n\nfunction border(sideKeyword) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n if (typeof sideKeyword === 'string' && sideMap.indexOf(sideKeyword) >= 0) {\n var _ref;\n\n return _ref = {}, _ref[\"border\" + capitalizeString(sideKeyword) + \"Width\"] = values[0], _ref[\"border\" + capitalizeString(sideKeyword) + \"Style\"] = values[1], _ref[\"border\" + capitalizeString(sideKeyword) + \"Color\"] = values[2], _ref;\n } else {\n values.unshift(sideKeyword);\n return {\n borderWidth: values[0],\n borderStyle: values[1],\n borderColor: values[2]\n };\n }\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderColor('red', 'green', 'blue', 'yellow')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderColor('red', 'green', 'blue', 'yellow')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopColor': 'red',\n * 'borderRightColor': 'green',\n * 'borderBottomColor': 'blue',\n * 'borderLeftColor': 'yellow'\n * }\n */\nfunction borderColor() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['borderColor'].concat(values));\n}\n\n/**\n * Shorthand that accepts a value for side and a value for radius and applies the radius value to both corners of the side.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderRadius('top', '5px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderRadius('top', '5px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopRightRadius': '5px',\n * 'borderTopLeftRadius': '5px',\n * }\n */\nfunction borderRadius(side, radius) {\n var uppercaseSide = capitalizeString(side);\n\n if (!radius && radius !== 0) {\n throw new PolishedError(62);\n }\n\n if (uppercaseSide === 'Top' || uppercaseSide === 'Bottom') {\n var _ref;\n\n return _ref = {}, _ref[\"border\" + uppercaseSide + \"RightRadius\"] = radius, _ref[\"border\" + uppercaseSide + \"LeftRadius\"] = radius, _ref;\n }\n\n if (uppercaseSide === 'Left' || uppercaseSide === 'Right') {\n var _ref2;\n\n return _ref2 = {}, _ref2[\"borderTop\" + uppercaseSide + \"Radius\"] = radius, _ref2[\"borderBottom\" + uppercaseSide + \"Radius\"] = radius, _ref2;\n }\n\n throw new PolishedError(63);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderStyle('solid', 'dashed', 'dotted', 'double')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderStyle('solid', 'dashed', 'dotted', 'double')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopStyle': 'solid',\n * 'borderRightStyle': 'dashed',\n * 'borderBottomStyle': 'dotted',\n * 'borderLeftStyle': 'double'\n * }\n */\nfunction borderStyle() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['borderStyle'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderWidth('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderWidth('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopWidth': '12px',\n * 'borderRightWidth': '24px',\n * 'borderBottomWidth': '36px',\n * 'borderLeftWidth': '48px'\n * }\n */\nfunction borderWidth() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['borderWidth'].concat(values));\n}\n\nfunction generateSelectors(template, state) {\n var stateSuffix = state ? \":\" + state : '';\n return template(stateSuffix);\n}\n/**\n * Function helper that adds an array of states to a template of selectors. Used in textInputs and buttons.\n * @private\n */\n\n\nfunction statefulSelectors(states, template, stateMap) {\n if (!template) throw new PolishedError(67);\n if (states.length === 0) return generateSelectors(template, null);\n var selectors = [];\n\n for (var i = 0; i < states.length; i += 1) {\n if (stateMap && stateMap.indexOf(states[i]) < 0) {\n throw new PolishedError(68);\n }\n\n selectors.push(generateSelectors(template, states[i]));\n }\n\n selectors = selectors.join(',');\n return selectors;\n}\n\nvar stateMap = [undefined, null, 'active', 'focus', 'hover'];\n\nfunction template(state) {\n return \"button\" + state + \",\\n input[type=\\\"button\\\"]\" + state + \",\\n input[type=\\\"reset\\\"]\" + state + \",\\n input[type=\\\"submit\\\"]\" + state;\n}\n/**\n * Populates selectors that target all buttons. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n * [buttons('active')]: {\n * 'border': 'none'\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * > ${buttons('active')} {\n * border: none;\n * }\n * `\n *\n * // CSS in JS Output\n *\n * 'button:active,\n * 'input[type=\"button\"]:active,\n * 'input[type=\\\"reset\\\"]:active,\n * 'input[type=\\\"submit\\\"]:active: {\n * 'border': 'none'\n * }\n */\n\n\nfunction buttons() {\n for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n\n return statefulSelectors(states, template, stateMap);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...margin('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${margin('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'marginTop': '12px',\n * 'marginRight': '24px',\n * 'marginBottom': '36px',\n * 'marginLeft': '48px'\n * }\n */\nfunction margin() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['margin'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...padding('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${padding('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'paddingTop': '12px',\n * 'paddingRight': '24px',\n * 'paddingBottom': '36px',\n * 'paddingLeft': '48px'\n * }\n */\nfunction padding() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['padding'].concat(values));\n}\n\nvar positionMap$1 = ['absolute', 'fixed', 'relative', 'static', 'sticky'];\n/**\n * Shorthand accepts up to five values, including null to skip a value, and maps them to their respective directions. The first value can optionally be a position keyword.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...position('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${position('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'top': '12px',\n * 'right': '24px',\n * 'bottom': '36px',\n * 'left': '48px'\n * }\n *\n * // Styles as object usage\n * const styles = {\n * ...position('absolute', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${position('absolute', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'position': 'absolute',\n * 'top': '12px',\n * 'right': '24px',\n * 'bottom': '36px',\n * 'left': '48px'\n * }\n */\n\nfunction position(firstValue) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n if (positionMap$1.indexOf(firstValue) >= 0 && firstValue) {\n return _extends({}, directionalProperty.apply(void 0, [''].concat(values)), {\n position: firstValue\n });\n } else {\n return directionalProperty.apply(void 0, ['', firstValue].concat(values));\n }\n}\n\n/**\n * Shorthand to set the height and width properties in a single statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...size('300px', '250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${size('300px', '250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'height': '300px',\n * 'width': '250px',\n * }\n */\nfunction size(height, width) {\n if (width === void 0) {\n width = height;\n }\n\n return {\n height: height,\n width: width\n };\n}\n\nvar stateMap$1 = [undefined, null, 'active', 'focus', 'hover'];\n\nfunction template$1(state) {\n return \"input[type=\\\"color\\\"]\" + state + \",\\n input[type=\\\"date\\\"]\" + state + \",\\n input[type=\\\"datetime\\\"]\" + state + \",\\n input[type=\\\"datetime-local\\\"]\" + state + \",\\n input[type=\\\"email\\\"]\" + state + \",\\n input[type=\\\"month\\\"]\" + state + \",\\n input[type=\\\"number\\\"]\" + state + \",\\n input[type=\\\"password\\\"]\" + state + \",\\n input[type=\\\"search\\\"]\" + state + \",\\n input[type=\\\"tel\\\"]\" + state + \",\\n input[type=\\\"text\\\"]\" + state + \",\\n input[type=\\\"time\\\"]\" + state + \",\\n input[type=\\\"url\\\"]\" + state + \",\\n input[type=\\\"week\\\"]\" + state + \",\\n input:not([type])\" + state + \",\\n textarea\" + state;\n}\n/**\n * Populates selectors that target all text inputs. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n * [textInputs('active')]: {\n * 'border': 'none'\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * > ${textInputs('active')} {\n * border: none;\n * }\n * `\n *\n * // CSS in JS Output\n *\n * 'input[type=\"color\"]:active,\n * input[type=\"date\"]:active,\n * input[type=\"datetime\"]:active,\n * input[type=\"datetime-local\"]:active,\n * input[type=\"email\"]:active,\n * input[type=\"month\"]:active,\n * input[type=\"number\"]:active,\n * input[type=\"password\"]:active,\n * input[type=\"search\"]:active,\n * input[type=\"tel\"]:active,\n * input[type=\"text\"]:active,\n * input[type=\"time\"]:active,\n * input[type=\"url\"]:active,\n * input[type=\"week\"]:active,\n * input:not([type]):active,\n * textarea:active': {\n * 'border': 'none'\n * }\n */\n\n\nfunction textInputs() {\n for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n\n return statefulSelectors(states, template$1, stateMap$1);\n}\n\n/**\n * Accepts any number of transition values as parameters for creating a single transition statement. You may also pass an array of properties as the first parameter that you would like to apply the same transition values to (second parameter).\n * @example\n * // Styles as object usage\n * const styles = {\n * ...transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s'),\n * ...transitions(['color', 'background-color'], '2.0s ease-in 2s')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s')};\n * ${transitions(['color', 'background-color'], '2.0s ease-in 2s'),};\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'transition': 'opacity 1.0s ease-in 0s, width 2.0s ease-in 2s'\n * 'transition': 'color 2.0s ease-in 2s, background-color 2.0s ease-in 2s',\n * }\n */\n\nfunction transitions() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n\n if (Array.isArray(properties[0]) && properties.length === 2) {\n var value = properties[1];\n\n if (typeof value !== 'string') {\n throw new PolishedError(61);\n }\n\n var transitionsString = properties[0].map(function (property) {\n return property + \" \" + value;\n }).join(', ');\n return {\n transition: transitionsString\n };\n } else {\n return {\n transition: properties.join(', ')\n };\n }\n}\n\nexport { curriedAdjustHue as adjustHue, animation, backgroundImages, backgrounds, between, border, borderColor, borderRadius, borderStyle, borderWidth, buttons, clearFix, complement, cover, cssVar, curriedDarken as darken, curriedDesaturate as desaturate, directionalProperty, ellipsis, em, fluidRange, fontFace, getContrast, getLuminance, getValueAndUnit, grayscale, hiDPI, hideText, hideVisually, hsl, hslToColorString, hsla, invert, curriedLighten as lighten, linearGradient, margin, math, meetsContrastGuidelines, curriedMix as mix, modularScale, normalize, curriedOpacify as opacify, padding, parseToHsl, parseToRgb, position, radialGradient, readableColor, rem, retinaImage, rgb, rgbToColorString, rgba, curriedSaturate as saturate, curriedSetHue as setHue, curriedSetLightness as setLightness, curriedSetSaturation as setSaturation, curriedShade as shade, size, stripUnit, textInputs, timingFunctions, curriedTint as tint, toColorString, transitions, curriedTransparentize as transparentize, triangle, wordWrap };\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 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","/**\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","/**\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';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { createElement, Component } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar VIEWBOX_WIDTH = 100;\r\nvar VIEWBOX_HEIGHT = 100;\r\nvar VIEWBOX_HEIGHT_HALF = 50;\r\nvar VIEWBOX_CENTER_X = 50;\r\nvar VIEWBOX_CENTER_Y = 50;\n\nfunction Path(_a) {\r\n var className = _a.className, counterClockwise = _a.counterClockwise, dashRatio = _a.dashRatio, pathRadius = _a.pathRadius, strokeWidth = _a.strokeWidth, style = _a.style;\r\n return (createElement(\"path\", { className: className, style: Object.assign({}, style, getDashStyle({ pathRadius: pathRadius, dashRatio: dashRatio, counterClockwise: counterClockwise })), d: getPathDescription({\r\n pathRadius: pathRadius,\r\n counterClockwise: counterClockwise,\r\n }), strokeWidth: strokeWidth, fillOpacity: 0 }));\r\n}\r\nfunction getPathDescription(_a) {\r\n var pathRadius = _a.pathRadius, counterClockwise = _a.counterClockwise;\r\n var radius = pathRadius;\r\n var rotation = counterClockwise ? 1 : 0;\r\n return \"\\n M \" + VIEWBOX_CENTER_X + \",\" + VIEWBOX_CENTER_Y + \"\\n m 0,-\" + radius + \"\\n a \" + radius + \",\" + radius + \" \" + rotation + \" 1 1 0,\" + 2 * radius + \"\\n a \" + radius + \",\" + radius + \" \" + rotation + \" 1 1 0,-\" + 2 * radius + \"\\n \";\r\n}\r\nfunction getDashStyle(_a) {\r\n var counterClockwise = _a.counterClockwise, dashRatio = _a.dashRatio, pathRadius = _a.pathRadius;\r\n var diameter = Math.PI * 2 * pathRadius;\r\n var gapLength = (1 - dashRatio) * diameter;\r\n return {\r\n strokeDasharray: diameter + \"px \" + diameter + \"px\",\r\n strokeDashoffset: (counterClockwise ? -gapLength : gapLength) + \"px\",\r\n };\r\n}\n\nvar CircularProgressbar = (function (_super) {\r\n __extends(CircularProgressbar, _super);\r\n function CircularProgressbar() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CircularProgressbar.prototype.getBackgroundPadding = function () {\r\n if (!this.props.background) {\r\n return 0;\r\n }\r\n return this.props.backgroundPadding;\r\n };\r\n CircularProgressbar.prototype.getPathRadius = function () {\r\n return VIEWBOX_HEIGHT_HALF - this.props.strokeWidth / 2 - this.getBackgroundPadding();\r\n };\r\n CircularProgressbar.prototype.getPathRatio = function () {\r\n var _a = this.props, value = _a.value, minValue = _a.minValue, maxValue = _a.maxValue;\r\n var boundedValue = Math.min(Math.max(value, minValue), maxValue);\r\n return (boundedValue - minValue) / (maxValue - minValue);\r\n };\r\n CircularProgressbar.prototype.render = function () {\r\n var _a = this.props, circleRatio = _a.circleRatio, className = _a.className, classes = _a.classes, counterClockwise = _a.counterClockwise, styles = _a.styles, strokeWidth = _a.strokeWidth, text = _a.text;\r\n var pathRadius = this.getPathRadius();\r\n var pathRatio = this.getPathRatio();\r\n return (createElement(\"svg\", { className: classes.root + \" \" + className, style: styles.root, viewBox: \"0 0 \" + VIEWBOX_WIDTH + \" \" + VIEWBOX_HEIGHT, \"data-test-id\": \"CircularProgressbar\" },\r\n this.props.background ? (createElement(\"circle\", { className: classes.background, style: styles.background, cx: VIEWBOX_CENTER_X, cy: VIEWBOX_CENTER_Y, r: VIEWBOX_HEIGHT_HALF })) : null,\r\n createElement(Path, { className: classes.trail, counterClockwise: counterClockwise, dashRatio: circleRatio, pathRadius: pathRadius, strokeWidth: strokeWidth, style: styles.trail }),\r\n createElement(Path, { className: classes.path, counterClockwise: counterClockwise, dashRatio: pathRatio * circleRatio, pathRadius: pathRadius, strokeWidth: strokeWidth, style: styles.path }),\r\n text ? (createElement(\"text\", { className: classes.text, style: styles.text, x: VIEWBOX_CENTER_X, y: VIEWBOX_CENTER_Y }, text)) : null));\r\n };\r\n CircularProgressbar.defaultProps = {\r\n background: false,\r\n backgroundPadding: 0,\r\n circleRatio: 1,\r\n classes: {\r\n root: 'CircularProgressbar',\r\n trail: 'CircularProgressbar-trail',\r\n path: 'CircularProgressbar-path',\r\n text: 'CircularProgressbar-text',\r\n background: 'CircularProgressbar-background',\r\n },\r\n counterClockwise: false,\r\n className: '',\r\n maxValue: 100,\r\n minValue: 0,\r\n strokeWidth: 8,\r\n styles: {\r\n root: {},\r\n trail: {},\r\n path: {},\r\n text: {},\r\n background: {},\r\n },\r\n text: '',\r\n };\r\n return CircularProgressbar;\r\n}(Component));\n\nfunction CircularProgressbarWithChildren(props) {\r\n var children = props.children, circularProgressbarProps = __rest(props, [\"children\"]);\r\n return (createElement(\"div\", { \"data-test-id\": \"CircularProgressbarWithChildren\" },\r\n createElement(\"div\", { style: { position: 'relative', width: '100%', height: '100%' } },\r\n createElement(CircularProgressbar, __assign({}, circularProgressbarProps)),\r\n props.children ? (createElement(\"div\", { \"data-test-id\": \"CircularProgressbarWithChildren__children\", style: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n marginTop: '-100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n } }, props.children)) : null)));\r\n}\n\nfunction buildStyles(_a) {\r\n var rotation = _a.rotation, strokeLinecap = _a.strokeLinecap, textColor = _a.textColor, textSize = _a.textSize, pathColor = _a.pathColor, pathTransition = _a.pathTransition, pathTransitionDuration = _a.pathTransitionDuration, trailColor = _a.trailColor, backgroundColor = _a.backgroundColor;\r\n var rotationTransform = rotation == null ? undefined : \"rotate(\" + rotation + \"turn)\";\r\n var rotationTransformOrigin = rotation == null ? undefined : 'center center';\r\n return {\r\n root: {},\r\n path: removeUndefinedValues({\r\n stroke: pathColor,\r\n strokeLinecap: strokeLinecap,\r\n transform: rotationTransform,\r\n transformOrigin: rotationTransformOrigin,\r\n transition: pathTransition,\r\n transitionDuration: pathTransitionDuration == null ? undefined : pathTransitionDuration + \"s\",\r\n }),\r\n trail: removeUndefinedValues({\r\n stroke: trailColor,\r\n strokeLinecap: strokeLinecap,\r\n transform: rotationTransform,\r\n transformOrigin: rotationTransformOrigin,\r\n }),\r\n text: removeUndefinedValues({\r\n fill: textColor,\r\n fontSize: textSize,\r\n }),\r\n background: removeUndefinedValues({\r\n fill: backgroundColor,\r\n }),\r\n };\r\n}\r\nfunction removeUndefinedValues(obj) {\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] == null) {\r\n delete obj[key];\r\n }\r\n });\r\n return obj;\r\n}\n\nexport { CircularProgressbar, CircularProgressbarWithChildren, buildStyles };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @license React\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\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(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 z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(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){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(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(ra,sa);z[b]=new v(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(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(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 ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction 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 A({},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 ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(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\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(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 cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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 ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(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}}var wb=null;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(p(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>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=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)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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){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 Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=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&&Ne(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&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)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=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(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&128))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 Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"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[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,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=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(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.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(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.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;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 yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(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 bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=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.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== \"-\" || title.charAt(index - 1) === \"-\") && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}\n\n// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nfunction mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return typeof s === \"string\" && s.indexOf(\"@\") !== -1;\n}\nvar redacted = \"REDACTED (Potential Email Address)\";\nfunction redactEmail(string) {\n if (mightBeEmail(string)) {\n console.warn(\"This arg looks like an email address, redacting.\");\n return redacted;\n }\n return string;\n}\nfunction format() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var _str = s || \"\";\n if (titleCase) {\n _str = toTitleCase(s);\n }\n if (redactingEmail) {\n _str = redactEmail(_str);\n }\n return _str;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.GA4 = void 0;\nvar _gtag = _interopRequireDefault(require(\"./gtag\"));\nvar _format = _interopRequireDefault(require(\"./format\"));\nvar _excluded = [\"eventCategory\", \"eventAction\", \"eventLabel\", \"eventValue\", \"hitType\"],\n _excluded2 = [\"title\", \"location\"],\n _excluded3 = [\"page\", \"hitType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\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/*\nLinks\nhttps://developers.google.com/gtagjs/reference/api\nhttps://developers.google.com/tag-platform/gtagjs/reference\n*/\n/**\n * @typedef GaOptions\n * @type {Object}\n * @property {boolean} [cookieUpdate=true]\n * @property {number} [cookieExpires=63072000] Default two years\n * @property {string} [cookieDomain=\"auto\"]\n * @property {string} [cookieFlags]\n * @property {string} [userId]\n * @property {string} [clientId]\n * @property {boolean} [anonymizeIp]\n * @property {string} [contentGroup1]\n * @property {string} [contentGroup2]\n * @property {string} [contentGroup3]\n * @property {string} [contentGroup4]\n * @property {string} [contentGroup5]\n * @property {boolean} [allowAdFeatures=true]\n * @property {boolean} [allowAdPersonalizationSignals]\n * @property {boolean} [nonInteraction]\n * @property {string} [page]\n */\n/**\n * @typedef UaEventOptions\n * @type {Object}\n * @property {string} action\n * @property {string} category\n * @property {string} [label]\n * @property {number} [value]\n * @property {boolean} [nonInteraction]\n * @property {('beacon'|'xhr'|'image')} [transport]\n */\n/**\n * @typedef InitOptions\n * @type {Object}\n * @property {string} trackingId\n * @property {GaOptions|any} [gaOptions]\n * @property {Object} [gtagOptions] New parameter\n */\nvar GA4 = /*#__PURE__*/function () {\n function GA4() {\n var _this = this;\n _classCallCheck(this, GA4);\n _defineProperty(this, \"reset\", function () {\n _this.isInitialized = false;\n _this._testMode = false;\n _this._currentMeasurementId;\n _this._hasLoadedGA = false;\n _this._isQueuing = false;\n _this._queueGtag = [];\n });\n _defineProperty(this, \"_gtag\", function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (!_this._testMode) {\n if (_this._isQueuing) {\n _this._queueGtag.push(args);\n } else {\n _gtag[\"default\"].apply(void 0, args);\n }\n } else {\n _this._queueGtag.push(args);\n }\n });\n _defineProperty(this, \"_loadGA\", function (GA_MEASUREMENT_ID, nonce) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n if (!_this._hasLoadedGA) {\n // Global Site Tag (gtag.js) - Google Analytics\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = \"https://www.googletagmanager.com/gtag/js?id=\".concat(GA_MEASUREMENT_ID);\n if (nonce) {\n script.setAttribute(\"nonce\", nonce);\n }\n document.body.appendChild(script);\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n _this._hasLoadedGA = true;\n }\n });\n _defineProperty(this, \"_toGtagOptions\", function (gaOptions) {\n if (!gaOptions) {\n return;\n }\n var mapFields = {\n // Old https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#cookieUpdate\n // New https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#cookie_update\n cookieUpdate: \"cookie_update\",\n cookieExpires: \"cookie_expires\",\n cookieDomain: \"cookie_domain\",\n cookieFlags: \"cookie_flags\",\n // must be in set method?\n userId: \"user_id\",\n clientId: \"client_id\",\n anonymizeIp: \"anonymize_ip\",\n // https://support.google.com/analytics/answer/2853546?hl=en#zippy=%2Cin-this-article\n contentGroup1: \"content_group1\",\n contentGroup2: \"content_group2\",\n contentGroup3: \"content_group3\",\n contentGroup4: \"content_group4\",\n contentGroup5: \"content_group5\",\n // https://support.google.com/analytics/answer/9050852?hl=en\n allowAdFeatures: \"allow_google_signals\",\n allowAdPersonalizationSignals: \"allow_ad_personalization_signals\",\n nonInteraction: \"non_interaction\",\n page: \"page_path\",\n hitCallback: \"event_callback\"\n };\n var gtagOptions = Object.entries(gaOptions).reduce(function (prev, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n if (mapFields[key]) {\n prev[mapFields[key]] = value;\n } else {\n prev[key] = value;\n }\n return prev;\n }, {});\n return gtagOptions;\n });\n _defineProperty(this, \"initialize\", function (GA_MEASUREMENT_ID) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!GA_MEASUREMENT_ID) {\n throw new Error(\"Require GA_MEASUREMENT_ID\");\n }\n var initConfigs = typeof GA_MEASUREMENT_ID === \"string\" ? [{\n trackingId: GA_MEASUREMENT_ID\n }] : GA_MEASUREMENT_ID;\n _this._currentMeasurementId = initConfigs[0].trackingId;\n var gaOptions = options.gaOptions,\n gtagOptions = options.gtagOptions,\n nonce = options.nonce,\n _options$testMode = options.testMode,\n testMode = _options$testMode === void 0 ? false : _options$testMode;\n _this._testMode = testMode;\n if (!testMode) {\n _this._loadGA(_this._currentMeasurementId, nonce);\n }\n if (!_this.isInitialized) {\n _this._gtag(\"js\", new Date());\n initConfigs.forEach(function (config) {\n var mergedGtagOptions = _objectSpread(_objectSpread(_objectSpread({}, _this._toGtagOptions(_objectSpread(_objectSpread({}, gaOptions), config.gaOptions))), gtagOptions), config.gtagOptions);\n if (Object.keys(mergedGtagOptions).length) {\n _this._gtag(\"config\", config.trackingId, mergedGtagOptions);\n } else {\n _this._gtag(\"config\", config.trackingId);\n }\n });\n }\n _this.isInitialized = true;\n if (!testMode) {\n var queues = _toConsumableArray(_this._queueGtag);\n _this._queueGtag = [];\n _this._isQueuing = false;\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n if (queue[0] === \"get\") {\n _this._isQueuing = true;\n }\n }\n }\n });\n _defineProperty(this, \"set\", function (fieldsObject) {\n if (!fieldsObject) {\n console.warn(\"`fieldsObject` is required in .set()\");\n return;\n }\n if (_typeof(fieldsObject) !== \"object\") {\n console.warn(\"Expected `fieldsObject` arg to be an Object\");\n return;\n }\n if (Object.keys(fieldsObject).length === 0) {\n console.warn(\"empty `fieldsObject` given to .set()\");\n }\n _this._gaCommand(\"set\", fieldsObject);\n });\n _defineProperty(this, \"_gaCommandSendEvent\", function (eventCategory, eventAction, eventLabel, eventValue, fieldsObject) {\n _this._gtag(\"event\", eventAction, _objectSpread(_objectSpread({\n event_category: eventCategory,\n event_label: eventLabel,\n value: eventValue\n }, fieldsObject && {\n non_interaction: fieldsObject.nonInteraction\n }), _this._toGtagOptions(fieldsObject)));\n });\n _defineProperty(this, \"_gaCommandSendEventParameters\", function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendEvent.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$ = args[0],\n eventCategory = _args$.eventCategory,\n eventAction = _args$.eventAction,\n eventLabel = _args$.eventLabel,\n eventValue = _args$.eventValue,\n hitType = _args$.hitType,\n rest = _objectWithoutProperties(_args$, _excluded);\n _this._gaCommandSendEvent(eventCategory, eventAction, eventLabel, eventValue, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSendTiming\", function (timingCategory, timingVar, timingValue, timingLabel) {\n _this._gtag(\"event\", \"timing_complete\", {\n name: timingVar,\n value: timingValue,\n event_category: timingCategory,\n event_label: timingLabel\n });\n });\n _defineProperty(this, \"_gaCommandSendPageview\", function (page, fieldsObject) {\n if (fieldsObject && Object.keys(fieldsObject).length) {\n var _this$_toGtagOptions = _this._toGtagOptions(fieldsObject),\n title = _this$_toGtagOptions.title,\n location = _this$_toGtagOptions.location,\n rest = _objectWithoutProperties(_this$_toGtagOptions, _excluded2);\n _this._gtag(\"event\", \"page_view\", _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, page && {\n page_path: page\n }), title && {\n page_title: title\n }), location && {\n page_location: location\n }), rest));\n } else if (page) {\n _this._gtag(\"event\", \"page_view\", {\n page_path: page\n });\n } else {\n _this._gtag(\"event\", \"page_view\");\n }\n });\n _defineProperty(this, \"_gaCommandSendPageviewParameters\", function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendPageview.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$2 = args[0],\n page = _args$2.page,\n hitType = _args$2.hitType,\n rest = _objectWithoutProperties(_args$2, _excluded3);\n _this._gaCommandSendPageview(page, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSend\", function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var hitType = typeof args[0] === \"string\" ? args[0] : args[0].hitType;\n switch (hitType) {\n case \"event\":\n _this._gaCommandSendEventParameters.apply(_this, args);\n break;\n case \"pageview\":\n _this._gaCommandSendPageviewParameters.apply(_this, args);\n break;\n case \"timing\":\n _this._gaCommandSendTiming.apply(_this, _toConsumableArray(args.slice(1)));\n break;\n case \"screenview\":\n case \"transaction\":\n case \"item\":\n case \"social\":\n case \"exception\":\n console.warn(\"Unsupported send command: \".concat(hitType));\n break;\n default:\n console.warn(\"Send command doesn't exist: \".concat(hitType));\n }\n });\n _defineProperty(this, \"_gaCommandSet\", function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n if (typeof args[0] === \"string\") {\n args[0] = _defineProperty({}, args[0], args[1]);\n }\n _this._gtag(\"set\", _this._toGtagOptions(args[0]));\n });\n _defineProperty(this, \"_gaCommand\", function (command) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n switch (command) {\n case \"send\":\n _this._gaCommandSend.apply(_this, args);\n break;\n case \"set\":\n _this._gaCommandSet.apply(_this, args);\n break;\n default:\n console.warn(\"Command doesn't exist: \".concat(command));\n }\n });\n _defineProperty(this, \"ga\", function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommand.apply(_this, args);\n } else {\n var readyCallback = args[0];\n _this._gtag(\"get\", _this._currentMeasurementId, \"client_id\", function (clientId) {\n _this._isQueuing = false;\n var queues = _this._queueGtag;\n readyCallback({\n get: function get(property) {\n return property === \"clientId\" ? clientId : property === \"trackingId\" ? _this._currentMeasurementId : property === \"apiVersion\" ? \"1\" : undefined;\n }\n });\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n }\n });\n _this._isQueuing = true;\n }\n return _this.ga;\n });\n _defineProperty(this, \"event\", function (optionsOrName, params) {\n if (typeof optionsOrName === \"string\") {\n _this._gtag(\"event\", optionsOrName, _this._toGtagOptions(params));\n } else {\n var action = optionsOrName.action,\n category = optionsOrName.category,\n label = optionsOrName.label,\n value = optionsOrName.value,\n nonInteraction = optionsOrName.nonInteraction,\n transport = optionsOrName.transport;\n if (!category || !action) {\n console.warn(\"args.category AND args.action are required in event()\");\n return;\n }\n\n // Required Fields\n var fieldObject = {\n hitType: \"event\",\n eventCategory: (0, _format[\"default\"])(category),\n eventAction: (0, _format[\"default\"])(action)\n };\n\n // Optional Fields\n if (label) {\n fieldObject.eventLabel = (0, _format[\"default\"])(label);\n }\n if (typeof value !== \"undefined\") {\n if (typeof value !== \"number\") {\n console.warn(\"Expected `args.value` arg to be a Number.\");\n } else {\n fieldObject.eventValue = value;\n }\n }\n if (typeof nonInteraction !== \"undefined\") {\n if (typeof nonInteraction !== \"boolean\") {\n console.warn(\"`args.nonInteraction` must be a boolean.\");\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n if (typeof transport !== \"undefined\") {\n if (typeof transport !== \"string\") {\n console.warn(\"`args.transport` must be a string.\");\n } else {\n if ([\"beacon\", \"xhr\", \"image\"].indexOf(transport) === -1) {\n console.warn(\"`args.transport` must be either one of these values: `beacon`, `xhr` or `image`\");\n }\n fieldObject.transport = transport;\n }\n }\n _this._gaCommand(\"send\", fieldObject);\n }\n });\n _defineProperty(this, \"send\", function (fieldObject) {\n _this._gaCommand(\"send\", fieldObject);\n });\n this.reset();\n }\n _createClass(GA4, [{\n key: \"gtag\",\n value: function gtag() {\n this._gtag.apply(this, arguments);\n }\n }]);\n return GA4;\n}();\nexports.GA4 = GA4;\nvar _default = new GA4();\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar gtag = function gtag() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof window !== \"undefined\") {\n var _window;\n if (typeof window.gtag === \"undefined\") {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n }\n (_window = window).gtag.apply(_window, args);\n }\n};\nvar _default = gtag;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.ReactGAImplementation = void 0;\nvar _ga = _interopRequireWildcard(require(\"./ga4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ReactGAImplementation = _ga.GA4;\nexports.ReactGAImplementation = ReactGAImplementation;\nvar _default = _ga[\"default\"];\nexports[\"default\"] = _default;","var hotjar = require('./src/react-hotjar');\n\nfunction hj() {\n\tvar params = Array.prototype.slice.call(arguments);\n\tif (!window.hj) {\n\t\tthrow new Error('Hotjar is not initialized');\n\t}\n\n\twindow.hj.apply(undefined, params)\n}\n\nmodule.exports = {\n\thotjar: {\n\t\tinitialize: function initialize(id, sv) {\n\t\t\thotjar(id, sv);\n\t\t},\n\t\tidentify: function identify(userId, properties) {\n\t\t\thj('identify', userId, properties);\n\t\t},\n\t\tevent: function event(event) {\n\t\t\thj('event', event);\n\t\t},\n\t\tstateChange: function stateChange(relativePath) {\n\t\t\thj('stateChange', relativePath);\n\t\t}\n\t}\n};\n","module.exports = function(id, sv) {\n\t(function(h, o, t, j, a, r) {\n\t\th.hj =\n\t\t\th.hj ||\n\t\t\tfunction() {\n\t\t\t\t(h.hj.q = h.hj.q || []).push(arguments);\n\t\t\t};\n\t\th._hjSettings = { hjid: id, hjsv: sv };\n\t\th._scriptPath = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n\t\tif(!document.querySelector(\n\t\t\t'script[src*=\"' + h._scriptPath + '\"]'\n\t\t)){\n\t\t\ta = o.getElementsByTagName('head')[0];\n\t\t\tr = o.createElement('script');\n\t\t\tr.async = 1;\n\t\t\tr.src = h._scriptPath;\n\t\t\ta.appendChild(r);\n\t\t}\n\t})(window, document, '//static.hotjar.com/c/hotjar-', '.js?sv=');\n};\n","import { __assign } from \"tslib\";\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { IntlMessageFormat, } from 'intl-messageformat';\nimport { MissingTranslationError, MessageFormatError } from './error';\nimport { TYPE } from '@formatjs/icu-messageformat-parser';\nfunction setTimeZoneInOptions(opts, timeZone) {\n return Object.keys(opts).reduce(function (all, k) {\n all[k] = __assign({ timeZone: timeZone }, opts[k]);\n return all;\n }, {});\n}\nfunction deepMergeOptions(opts1, opts2) {\n var keys = Object.keys(__assign(__assign({}, opts1), opts2));\n return keys.reduce(function (all, k) {\n all[k] = __assign(__assign({}, (opts1[k] || {})), (opts2[k] || {}));\n return all;\n }, {});\n}\nfunction deepMergeFormatsAndSetTimeZone(f1, timeZone) {\n if (!timeZone) {\n return f1;\n }\n var mfFormats = IntlMessageFormat.formats;\n return __assign(__assign(__assign({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });\n}\nexport function formatMessage(_a, state, messageDescriptor, values, opts) {\n var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, onError = _a.onError, timeZone = _a.timeZone, defaultRichTextElements = _a.defaultRichTextElements;\n if (messageDescriptor === void 0) { messageDescriptor = { id: '' }; }\n var msgId = messageDescriptor.id, defaultMessage = messageDescriptor.defaultMessage;\n // `id` is a required field of a Message Descriptor.\n invariant(!!msgId, \"[@formatjs/intl] An `id` must be provided to format a message. You can either:\\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\\nto autofix this issue\");\n var id = String(msgId);\n var message = \n // In case messages is Object.create(null)\n // e.g import('foo.json') from webpack)\n // See https://github.com/formatjs/formatjs/issues/1914\n messages &&\n Object.prototype.hasOwnProperty.call(messages, id) &&\n messages[id];\n // IMPORTANT: Hot path if `message` is AST with a single literal node\n if (Array.isArray(message) &&\n message.length === 1 &&\n message[0].type === TYPE.literal) {\n return message[0].value;\n }\n // IMPORTANT: Hot path straight lookup for performance\n if (!values &&\n message &&\n typeof message === 'string' &&\n !defaultRichTextElements) {\n return message.replace(/'\\{(.*?)\\}'/gi, \"{$1}\");\n }\n values = __assign(__assign({}, defaultRichTextElements), (values || {}));\n formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);\n defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);\n if (!message) {\n if (!defaultMessage ||\n (locale && locale.toLowerCase() !== defaultLocale.toLowerCase())) {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the for the\n // default locale.\n onError(new MissingTranslationError(messageDescriptor, locale));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting default message for: \\\"\" + id + \"\\\", rendering default message verbatim\", locale, messageDescriptor, e));\n return typeof defaultMessage === 'string' ? defaultMessage : id;\n }\n }\n return id;\n }\n // We have the translated message\n try {\n var formatter = state.getMessageFormat(message, locale, formats, __assign({ formatters: state }, (opts || {})));\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting message: \\\"\" + id + \"\\\", using \" + (defaultMessage ? 'default message' : 'id') + \" as fallback.\", locale, messageDescriptor, e));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting the default message for: \\\"\" + id + \"\\\", rendering message verbatim\", locale, messageDescriptor, e));\n }\n }\n if (typeof message === 'string') {\n return message;\n }\n if (typeof defaultMessage === 'string') {\n return defaultMessage;\n }\n return id;\n}\n","import { getNamedFormat, filterProps } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar NUMBER_FORMAT_OPTIONS = [\n 'localeMatcher',\n 'style',\n 'currency',\n 'currencyDisplay',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n // ES2020 NumberFormat\n 'compactDisplay',\n 'currencyDisplay',\n 'currencySign',\n 'notation',\n 'signDisplay',\n 'unit',\n 'unitDisplay',\n];\nexport function getFormatter(_a, getNumberFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = ((format &&\n getNamedFormat(formats, 'number', format, onError)) ||\n {});\n var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n return getNumberFormat(locale, filteredOptions);\n}\nexport function formatNumber(config, getNumberFormat, value, options) {\n if (options === void 0) { options = {}; }\n try {\n return getFormatter(config, getNumberFormat, options).format(value);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n }\n return String(value);\n}\nexport function formatNumberToParts(config, getNumberFormat, value, options) {\n if (options === void 0) { options = {}; }\n try {\n return getFormatter(config, getNumberFormat, options).formatToParts(value);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n }\n return [];\n}\n","import { getNamedFormat, filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { MessageFormatError } from './error';\nvar RELATIVE_TIME_FORMAT_OPTIONS = ['numeric', 'style'];\nfunction getFormatter(_a, getRelativeTimeFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = (!!format && getNamedFormat(formats, 'relative', format, onError)) || {};\n var filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults);\n return getRelativeTimeFormat(locale, filteredOptions);\n}\nexport function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options) {\n if (options === void 0) { options = {}; }\n if (!unit) {\n unit = 'second';\n }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n if (!RelativeTimeFormat) {\n config.onError(new FormatError(\"Intl.RelativeTimeFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-relativetimeformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n try {\n return getFormatter(config, getRelativeTimeFormat, options).format(value, unit);\n }\n catch (e) {\n config.onError(new MessageFormatError('Error formatting relative time.', e));\n }\n return String(value);\n}\n","import { __assign } from \"tslib\";\nimport { filterProps, getNamedFormat } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar DATE_TIME_FORMAT_OPTIONS = [\n 'localeMatcher',\n 'formatMatcher',\n 'timeZone',\n 'hour12',\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName',\n 'hourCycle',\n 'dateStyle',\n 'timeStyle',\n 'calendar',\n // 'dayPeriod',\n 'numberingSystem',\n];\nexport function getFormatter(_a, type, getDateTimeFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError, timeZone = _a.timeZone;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = __assign(__assign({}, (timeZone && { timeZone: timeZone })), (format && getNamedFormat(formats, type, format, onError)));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, \n // @ts-expect-error es2020 has a lot stuff from es2021 bleed in\n defaults);\n if (type === 'time' &&\n !filteredOptions.hour &&\n !filteredOptions.minute &&\n !filteredOptions.second &&\n !filteredOptions.timeStyle &&\n !filteredOptions.dateStyle) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = __assign(__assign({}, filteredOptions), { hour: 'numeric', minute: 'numeric' });\n }\n return getDateTimeFormat(locale, filteredOptions);\n}\nexport function formatDate(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).format(date);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n }\n return String(date);\n}\nexport function formatTime(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).format(date);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n }\n return String(date);\n}\nexport function formatDateTimeRange(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var from = _a[0], to = _a[1], _b = _a[2], options = _b === void 0 ? {} : _b;\n var timeZone = config.timeZone, locale = config.locale, onError = config.onError;\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? { timeZone: timeZone } : {});\n try {\n return getDateTimeFormat(locale, filteredOptions).formatRange(from, to);\n }\n catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date time range.', e));\n }\n return String(from);\n}\nexport function formatDateToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).formatToParts(date);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n }\n return [];\n}\nexport function formatTimeToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).formatToParts(date);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n }\n return [];\n}\n","import { filterProps } from './utils';\nimport { MessageFormatError } from './error';\nimport { ErrorCode, FormatError } from 'intl-messageformat';\nvar PLURAL_FORMAT_OPTIONS = [\n 'localeMatcher',\n 'type',\n];\nexport function formatPlural(_a, getPluralRules, value, options) {\n var locale = _a.locale, onError = _a.onError;\n if (options === void 0) { options = {}; }\n if (!Intl.PluralRules) {\n onError(new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n try {\n return getPluralRules(locale, filteredOptions).select(value);\n }\n catch (e) {\n onError(new MessageFormatError('Error formatting plural.', e));\n }\n return 'other';\n}\n","import { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlError, IntlErrorCode } from './error';\nvar LIST_FORMAT_OPTIONS = [\n 'localeMatcher',\n 'type',\n 'style',\n];\nvar now = Date.now();\nfunction generateToken(i) {\n return now + \"_\" + i + \"_\" + now;\n}\nexport function formatList(_a, getListFormat, values, options) {\n var locale = _a.locale, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var ListFormat = Intl.ListFormat;\n if (!ListFormat) {\n onError(new FormatError(\"Intl.ListFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-listformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, LIST_FORMAT_OPTIONS);\n try {\n var richValues_1 = {};\n var serializedValues = values.map(function (v, i) {\n if (typeof v === 'object') {\n var id = generateToken(i);\n richValues_1[id] = v;\n return id;\n }\n return String(v);\n });\n if (!Object.keys(richValues_1).length) {\n return getListFormat(locale, filteredOptions).format(serializedValues);\n }\n var parts = getListFormat(locale, filteredOptions).formatToParts(serializedValues);\n return parts.reduce(function (all, el) {\n var val = el.value;\n if (richValues_1[val]) {\n all.push(richValues_1[val]);\n }\n else if (typeof all[all.length - 1] === 'string') {\n all[all.length - 1] += val;\n }\n else {\n all.push(val);\n }\n return all;\n }, []);\n }\n catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting list.', e));\n }\n // @ts-ignore\n return values;\n}\n","import { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlErrorCode, IntlError } from './error';\nvar DISPLAY_NAMES_OPTONS = [\n 'localeMatcher',\n 'style',\n 'type',\n 'fallback',\n];\nexport function formatDisplayName(_a, getDisplayNames, value, options) {\n var locale = _a.locale, onError = _a.onError;\n var DisplayNames = Intl.DisplayNames;\n if (!DisplayNames) {\n onError(new FormatError(\"Intl.DisplayNames is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-displaynames\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, DISPLAY_NAMES_OPTONS);\n try {\n return getDisplayNames(locale, filteredOptions).of(value);\n }\n catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting display name.', e));\n }\n}\n","import { __assign } from \"tslib\";\nimport { createFormatters, DEFAULT_INTL_CONFIG } from './utils';\nimport { InvalidConfigError, MissingDataError } from './error';\nimport { formatNumber, formatNumberToParts } from './number';\nimport { formatRelativeTime } from './relativeTime';\nimport { formatDate, formatDateToParts, formatTime, formatTimeToParts, formatDateTimeRange, } from './dateTime';\nimport { formatPlural } from './plural';\nimport { formatMessage } from './message';\nimport { formatList } from './list';\nimport { formatDisplayName } from './displayName';\nfunction messagesContainString(messages) {\n var firstMessage = messages ? messages[Object.keys(messages)[0]] : undefined;\n return typeof firstMessage === 'string';\n}\nfunction verifyConfigMessages(config) {\n if (config.defaultRichTextElements &&\n messagesContainString(config.messages || {})) {\n console.warn(\"[@formatjs/intl] \\\"defaultRichTextElements\\\" was specified but \\\"message\\\" was not pre-compiled. \\nPlease consider using \\\"@formatjs/cli\\\" to pre-compile your messages for performance.\\nFor more details see https://formatjs.io/docs/getting-started/message-distribution\");\n }\n}\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport function createIntl(config, cache) {\n var formatters = createFormatters(cache);\n var resolvedConfig = __assign(__assign({}, DEFAULT_INTL_CONFIG), config);\n var locale = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;\n if (!locale) {\n if (onError) {\n onError(new InvalidConfigError(\"\\\"locale\\\" was not configured, using \\\"\" + defaultLocale + \"\\\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details\"));\n }\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each contains a `defaultMessage` prop.\n resolvedConfig.locale = resolvedConfig.defaultLocale || 'en';\n }\n else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\" + locale + \"\\\" in Intl.NumberFormat. Using default locale: \\\"\" + defaultLocale + \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\"));\n }\n else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length &&\n onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\" + locale + \"\\\" in Intl.DateTimeFormat. Using default locale: \\\"\" + defaultLocale + \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\"));\n }\n verifyConfigMessages(resolvedConfig);\n return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), formatMessage: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __assign, __extends, __rest, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { Provider } from './injectIntl';\nimport { DEFAULT_INTL_CONFIG, invariantIntlContext, assignUniqueKeysToParts, shallowEqual, } from '../utils';\nimport { formatMessage as coreFormatMessage, createIntl as coreCreateIntl, createIntlCache, } from '@formatjs/intl';\nimport { isFormatXMLElementFn, } from 'intl-messageformat';\nfunction processIntlConfig(config) {\n return {\n locale: config.locale,\n timeZone: config.timeZone,\n formats: config.formats,\n textComponent: config.textComponent,\n messages: config.messages,\n defaultLocale: config.defaultLocale,\n defaultFormats: config.defaultFormats,\n onError: config.onError,\n wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,\n defaultRichTextElements: config.defaultRichTextElements,\n };\n}\nfunction assignUniqueKeysToFormatXMLElementFnArgument(values) {\n if (!values) {\n return values;\n }\n return Object.keys(values).reduce(function (acc, k) {\n var v = values[k];\n acc[k] = isFormatXMLElementFn(v)\n ? assignUniqueKeysToParts(v)\n : v;\n return acc;\n }, {});\n}\nvar formatMessage = function (config, formatters, descriptor, rawValues) {\n var rest = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n rest[_i - 4] = arguments[_i];\n }\n var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);\n var chunks = coreFormatMessage.apply(void 0, __spreadArray([config,\n formatters,\n descriptor, values], rest));\n if (Array.isArray(chunks)) {\n return React.Children.toArray(chunks);\n }\n return chunks;\n};\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport var createIntl = function (_a, cache) {\n var rawDefaultRichTextElements = _a.defaultRichTextElements, config = __rest(_a, [\"defaultRichTextElements\"]);\n var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);\n var coreIntl = coreCreateIntl(__assign(__assign(__assign({}, DEFAULT_INTL_CONFIG), config), { defaultRichTextElements: defaultRichTextElements }), cache);\n return __assign(__assign({}, coreIntl), { formatMessage: formatMessage.bind(null, {\n locale: coreIntl.locale,\n timeZone: coreIntl.timeZone,\n formats: coreIntl.formats,\n defaultLocale: coreIntl.defaultLocale,\n defaultFormats: coreIntl.defaultFormats,\n messages: coreIntl.messages,\n onError: coreIntl.onError,\n defaultRichTextElements: defaultRichTextElements,\n }, coreIntl.formatters) });\n};\nvar IntlProvider = /** @class */ (function (_super) {\n __extends(IntlProvider, _super);\n function IntlProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cache = createIntlCache();\n _this.state = {\n cache: _this.cache,\n intl: createIntl(processIntlConfig(_this.props), _this.cache),\n prevConfig: processIntlConfig(_this.props),\n };\n return _this;\n }\n IntlProvider.getDerivedStateFromProps = function (props, _a) {\n var prevConfig = _a.prevConfig, cache = _a.cache;\n var config = processIntlConfig(props);\n if (!shallowEqual(prevConfig, config)) {\n return {\n intl: createIntl(config, cache),\n prevConfig: config,\n };\n }\n return null;\n };\n IntlProvider.prototype.render = function () {\n invariantIntlContext(this.state.intl);\n return React.createElement(Provider, { value: this.state.intl }, this.props.children);\n };\n IntlProvider.displayName = 'IntlProvider';\n IntlProvider.defaultProps = DEFAULT_INTL_CONFIG;\n return IntlProvider;\n}(React.PureComponent));\nexport default IntlProvider;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import React, { createContext } from 'react';\nimport warning from 'tiny-warning';\nimport PropTypes from 'prop-types';\nimport hoist from 'hoist-non-react-statics';\nimport getDisplayName from 'react-display-name';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n}\n\nfunction createThemeProvider(context) {\n var ThemeProvider =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n\n function ThemeProvider() {\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\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cachedTheme\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastOuterTheme\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastTheme\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderProvider\", function (outerTheme) {\n var children = _this.props.children;\n return React.createElement(context.Provider, {\n value: _this.getTheme(outerTheme)\n }, children);\n });\n\n return _this;\n }\n\n var _proto = ThemeProvider.prototype;\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n _proto.getTheme = function getTheme(outerTheme) {\n if (this.props.theme !== this.lastTheme || outerTheme !== this.lastOuterTheme || !this.cachedTheme) {\n this.lastOuterTheme = outerTheme;\n this.lastTheme = this.props.theme;\n\n if (typeof this.lastTheme === 'function') {\n var theme = this.props.theme;\n this.cachedTheme = theme(outerTheme);\n process.env.NODE_ENV !== \"production\" ? warning(isObject(this.cachedTheme), '[ThemeProvider] Please return an object from your theme function') : void 0;\n } else {\n var _theme = this.props.theme;\n process.env.NODE_ENV !== \"production\" ? warning(isObject(_theme), '[ThemeProvider] Please make your theme prop a plain object') : void 0;\n this.cachedTheme = outerTheme ? _extends({}, outerTheme, _theme) : _theme;\n }\n }\n\n return this.cachedTheme;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n\n if (!children) {\n return null;\n }\n\n return React.createElement(context.Consumer, null, this.renderProvider);\n };\n\n return ThemeProvider;\n }(React.Component);\n\n if (process.env.NODE_ENV !== 'production') {\n ThemeProvider.propTypes = {\n // eslint-disable-next-line react/require-default-props\n children: PropTypes.node,\n theme: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.func]).isRequired\n };\n }\n\n return ThemeProvider;\n}\n\nfunction createWithTheme(context) {\n return function hoc(Component) {\n var withTheme = React.forwardRef(function (props, ref) {\n return React.createElement(context.Consumer, null, function (theme) {\n process.env.NODE_ENV !== \"production\" ? warning(isObject(theme), '[theming] Please use withTheme only with the ThemeProvider') : void 0;\n return React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n });\n\n if (process.env.NODE_ENV !== 'production') {\n withTheme.displayName = \"WithTheme(\" + getDisplayName(Component) + \")\";\n }\n\n hoist(withTheme, Component);\n return withTheme;\n };\n}\n\nfunction createUseTheme(context) {\n var useTheme = function useTheme() {\n var theme = React.useContext(context);\n process.env.NODE_ENV !== \"production\" ? warning(isObject(theme), '[theming] Please use useTheme only with the ThemeProvider') : void 0;\n return theme;\n };\n\n return useTheme;\n}\n\nfunction createTheming(context) {\n return {\n context: context,\n withTheme: createWithTheme(context),\n useTheme: createUseTheme(context),\n ThemeProvider: createThemeProvider(context)\n };\n}\n\nvar ThemeContext = createContext();\n\nvar _createTheming = createTheming(ThemeContext),\n withTheme = _createTheming.withTheme,\n ThemeProvider = _createTheming.ThemeProvider,\n useTheme = _createTheming.useTheme;\n\nexport { useTheme, ThemeContext, withTheme, createTheming, ThemeProvider };\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\\n\" + result + \"\\n\";\n return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.key = void 0;\n this.isProcessed = false;\n this.style = void 0;\n this.renderer = void 0;\n this.renderable = void 0;\n this.options = void 0;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n _this.selectorText = void 0;\n _this.id = void 0;\n _this.renderable = void 0;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(name, style, options) {\n if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(name, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.at = void 0;\n this.key = void 0;\n this.query = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.key = void 0;\n this.name = void 0;\n this.id = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\\n\" + children + \"\\n\";\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar plugin = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\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 = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n _this.renderable = void 0;\n return _this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.key = void 0;\n this.value = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Get a rule.\n */\n ;\n\n _proto.get = function get(name) {\n return this.map[name];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.map[name], data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var styleRule = rule;\n var style = styleRule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== styleRule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n for (var prop in styleRule.style) {\n var nextValue = styleRule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n styleRule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = styleRule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n styleRule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += '\\n';\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.options = void 0;\n this.deployed = void 0;\n this.attached = void 0;\n this.rules = void 0;\n this.renderer = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.queue = void 0;\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name.\n */\n ;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = void 0;\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n // $FlowFixMe[prop-missing]\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += '\\n';\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar registry = new SheetsRegistry();\n\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\n\nvar maxRules = 1e10;\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n return function (rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n\n/**\n * Get a style property value.\n */\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n\n/**\n * Set a style property.\n */\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n\n/**\n * Remove a style property.\n */\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n\n/**\n * Set the selector.\n */\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n var registry$1 = registry.registry;\n\n if (registry$1.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n var c = container;\n c.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n var _c = container;\n\n _c.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.element = void 0;\n this.sheet = void 0;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) registry.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules[index] = cssRule;\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n *\n * Only used for some old browsers because they can't set a selector.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.6.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = registry.index === 0 ? 0 : registry.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n registry.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n // $FlowFixMe[incompatible-call]\n return this.createRule(undefined, name, style);\n } // $FlowFixMe[incompatible-type]\n\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\nvar jss = create();\n\nexport default jss;\nexport { RuleList, SheetsManager, SheetsRegistry, create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, registry as sheets, toCssValue };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n } // $FlowFixMe[prop-missing]\n\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule; // $FlowFixMe[prop-missing]\n\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n } // $FlowFixMe[prop-missing]\n\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;\n","import $$observable from 'symbol-observable';\nimport { createRule } from 'jss';\n\nvar isObservable = function isObservable(value) {\n return value && value[$$observable] && value === value[$$observable]();\n};\n\nvar observablePlugin = function observablePlugin(updateOptions) {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (!isObservable(decl)) return null; // Cast `decl` to `Observable`, since it passed the type guard.\n\n var style$ = decl;\n var rule = createRule(name, {}, options); // TODO\n // Call `stream.subscribe()` returns a subscription, which should be explicitly\n // unsubscribed from when we know this sheet is no longer needed.\n\n style$.subscribe(function (style) {\n for (var prop in style) {\n rule.prop(prop, style[prop], updateOptions);\n }\n });\n return rule;\n },\n onProcessRule: function onProcessRule(rule) {\n if (rule && rule.type !== 'style') return;\n var styleRule = rule;\n var style = styleRule.style;\n\n var _loop = function _loop(prop) {\n var value = style[prop];\n if (!isObservable(value)) return \"continue\";\n delete style[prop];\n value.subscribe({\n next: function next(nextValue) {\n styleRule.prop(prop, nextValue, updateOptions);\n }\n });\n };\n\n for (var prop in style) {\n var _ret = _loop(prop);\n\n if (_ret === \"continue\") continue;\n }\n }\n };\n};\n\nexport default observablePlugin;\n","import warning from 'tiny-warning';\n\nvar semiWithNl = /;\\n/;\n\n/**\n * Naive CSS parser.\n * - Supports only rule body (no selectors)\n * - Requires semicolon and new line after the value (except of last line)\n * - No nested rules support\n */\nvar parse = function parse(cssText) {\n var style = {};\n var split = cssText.split(semiWithNl);\n\n for (var i = 0; i < split.length; i++) {\n var decl = (split[i] || '').trim();\n if (!decl) continue;\n var colonIndex = decl.indexOf(':');\n\n if (colonIndex === -1) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Malformed CSS string \\\"\" + decl + \"\\\"\") : void 0;\n continue;\n }\n\n var prop = decl.substr(0, colonIndex).trim();\n var value = decl.substr(colonIndex + 1).trim();\n style[prop] = value;\n }\n\n return style;\n};\n\nvar onProcessRule = function onProcessRule(rule) {\n if (typeof rule.style === 'string') {\n // $FlowFixMe[prop-missing] We can safely assume that rule has the style property\n rule.style = parse(rule.style);\n }\n};\n\nfunction templatePlugin() {\n return {\n onProcessRule: onProcessRule\n };\n}\n\nexport default templatePlugin;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.rules = void 0;\n this.options = void 0;\n this.key = void 0;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString() {\n return this.rules.toString();\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.options = void 0;\n this.rule = void 0;\n this.isProcessed = false;\n this.key = void 0;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar isObject = function isObject(obj) {\n return obj && typeof obj === 'object' && !Array.isArray(obj);\n};\n\nvar valueNs = \"extendCurrValue\" + Date.now();\n\nfunction mergeExtend(style, rule, sheet, newStyle) {\n var extendType = typeof style.extend; // Extend using a rule name.\n\n if (extendType === 'string') {\n if (!sheet) return;\n var refRule = sheet.getRule(style.extend);\n if (!refRule) return;\n\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] A rule tries to extend itself \\n\" + rule.toString()) : void 0;\n return;\n }\n\n var parent = refRule.options.parent;\n\n if (parent) {\n var originalStyle = parent.rules.raw[style.extend];\n extend(originalStyle, rule, sheet, newStyle);\n }\n\n return;\n } // Extend using an array.\n\n\n if (Array.isArray(style.extend)) {\n for (var index = 0; index < style.extend.length; index++) {\n var singleExtend = style.extend[index];\n var singleStyle = typeof singleExtend === 'string' ? _extends({}, style, {\n extend: singleExtend\n }) : style.extend[index];\n extend(singleStyle, rule, sheet, newStyle);\n }\n\n return;\n } // Extend is a style object.\n\n\n for (var prop in style.extend) {\n if (prop === 'extend') {\n extend(style.extend.extend, rule, sheet, newStyle);\n continue;\n }\n\n if (isObject(style.extend[prop])) {\n if (!(prop in newStyle)) newStyle[prop] = {};\n extend(style.extend[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n\n newStyle[prop] = style.extend[prop];\n }\n}\n\nfunction mergeRest(style, rule, sheet, newStyle) {\n // Copy base style.\n for (var prop in style) {\n if (prop === 'extend') continue;\n\n if (isObject(newStyle[prop]) && isObject(style[prop])) {\n extend(style[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n\n if (isObject(style[prop])) {\n newStyle[prop] = extend(style[prop], rule, sheet);\n continue;\n }\n\n newStyle[prop] = style[prop];\n }\n}\n/**\n * Recursively extend styles.\n */\n\n\nfunction extend(style, rule, sheet, newStyle) {\n if (newStyle === void 0) {\n newStyle = {};\n }\n\n mergeExtend(style, rule, sheet, newStyle);\n mergeRest(style, rule, sheet, newStyle);\n return newStyle;\n}\n/**\n * Handle `extend` property.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssExtend() {\n function onProcessStyle(style, rule, sheet) {\n if ('extend' in style) return extend(style, rule, sheet);\n return style;\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop !== 'extend') return value; // Value is empty, remove properties set previously.\n\n if (value == null || value === false) {\n // $FlowFixMe[prop-missing]\n for (var key in rule[valueNs]) {\n rule.prop(key, null);\n } // $FlowFixMe[prop-missing] Flow complains because there is no indexer property in StyleRule\n\n\n rule[valueNs] = null;\n return null;\n }\n\n if (typeof value === 'object') {\n // $FlowFixMe[invalid-in-rhs] This will be an object\n for (var _key in value) {\n // $FlowFixMe[incompatible-use] This will be an object\n rule.prop(_key, value[_key]);\n } // $FlowFixMe[prop-missing] Flow complains because there is no indexer property in StyleRule\n\n\n rule[valueNs] = value;\n } // Make sure we don't set the value in the core.\n\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssExtend;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n rule = rule;\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1 // $FlowFixMe[prop-missing]\n\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n container.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options) // Flow expects more options but they aren't required\n // And flow doesn't know this will always be a StyleRule which has the addRule method\n // $FlowFixMe[incompatible-use]\n // $FlowFixMe[prop-missing]\n .addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","import warning from 'tiny-warning';\n\n/**\n * Set selector.\n *\n * @param {Object} original rule\n * @param {String} className class string\n * @return {Boolean} flag, indicating function was successfull or not\n */\nfunction registerClass(rule, className) {\n // Skip falsy values\n if (!className) return true; // Support array of class names `{composes: ['foo', 'bar']}`\n\n if (Array.isArray(className)) {\n for (var index = 0; index < className.length; index++) {\n var isSetted = registerClass(rule, className[index]);\n if (!isSetted) return false;\n }\n\n return true;\n } // Support space separated class names `{composes: 'foo bar'}`\n\n\n if (className.indexOf(' ') > -1) {\n return registerClass(rule, className.split(' '));\n }\n\n var _ref = rule.options,\n parent = _ref.parent; // It is a ref to a local rule.\n\n if (className[0] === '$') {\n var refRule = parent.getRule(className.substr(1));\n\n if (!refRule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced rule is not defined. \\n\" + rule.toString()) : void 0;\n return false;\n }\n\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Cyclic composition detected. \\n\" + rule.toString()) : void 0;\n return false;\n }\n\n parent.classes[rule.key] += \" \" + parent.classes[refRule.key];\n return true;\n }\n\n parent.classes[rule.key] += \" \" + className;\n return true;\n}\n/**\n * Convert compose property to additional class, remove property from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssCompose() {\n function onProcessStyle(style, rule) {\n if (!('composes' in style)) return style;\n registerClass(rule, style.composes); // Remove composes property to prevent infinite loop.\n\n delete style.composes;\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssCompose;\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n *\n * @param {Object} style\n * @return {Object}\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n *\n * @param {Rule} rule\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n *\n * @type object\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var _key in obj) {\n newObj[_key] = obj[_key];\n newObj[_key.replace(regExp, replace)] = obj[_key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n } // eslint-disable-next-line no-restricted-globals\n\n } else if (typeof value === 'number' && isNaN(value) === false) {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","/**\n * A scheme for converting properties from array to regular style.\n * All properties listed below will be transformed to a string separated by space.\n */\nvar propArray = {\n 'background-size': true,\n 'background-position': true,\n border: true,\n 'border-bottom': true,\n 'border-left': true,\n 'border-top': true,\n 'border-right': true,\n 'border-radius': true,\n 'border-image': true,\n 'border-width': true,\n 'border-style': true,\n 'border-color': true,\n 'box-shadow': true,\n flex: true,\n margin: true,\n padding: true,\n outline: true,\n 'transform-origin': true,\n transform: true,\n transition: true\n /**\n * A scheme for converting arrays to regular styles inside of objects.\n * For e.g.: \"{position: [0, 0]}\" => \"background-position: 0 0;\".\n */\n\n};\nvar propArrayInObj = {\n position: true,\n // background-position\n size: true // background-size\n\n /**\n * A scheme for parsing and building correct styles from passed objects.\n */\n\n};\nvar propObj = {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n margin: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n background: {\n attachment: null,\n color: null,\n image: null,\n position: null,\n repeat: null\n },\n border: {\n width: null,\n style: null,\n color: null\n },\n 'border-top': {\n width: null,\n style: null,\n color: null\n },\n 'border-right': {\n width: null,\n style: null,\n color: null\n },\n 'border-bottom': {\n width: null,\n style: null,\n color: null\n },\n 'border-left': {\n width: null,\n style: null,\n color: null\n },\n outline: {\n width: null,\n style: null,\n color: null\n },\n 'list-style': {\n type: null,\n position: null,\n image: null\n },\n transition: {\n property: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed for avoiding comilation issues with jss-plugin-camel-case\n delay: null\n },\n animation: {\n name: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n delay: null,\n 'iteration-count': null,\n iterationCount: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n direction: null,\n 'fill-mode': null,\n fillMode: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'play-state': null,\n playState: null // Needed to avoid compilation issues with jss-plugin-camel-case\n\n },\n 'box-shadow': {\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n color: null,\n inset: null\n },\n 'text-shadow': {\n x: 0,\n y: 0,\n blur: null,\n color: null\n }\n /**\n * A scheme for converting non-standart properties inside object.\n * For e.g.: include 'border-radius' property inside 'border' object.\n */\n\n};\nvar customPropObj = {\n border: {\n radius: 'border-radius',\n image: 'border-image',\n width: 'border-width',\n style: 'border-style',\n color: 'border-color'\n },\n 'border-bottom': {\n width: 'border-bottom-width',\n style: 'border-bottom-style',\n color: 'border-bottom-color'\n },\n 'border-top': {\n width: 'border-top-width',\n style: 'border-top-style',\n color: 'border-top-color'\n },\n 'border-left': {\n width: 'border-left-width',\n style: 'border-left-style',\n color: 'border-left-color'\n },\n 'border-right': {\n width: 'border-right-width',\n style: 'border-right-style',\n color: 'border-right-color'\n },\n background: {\n size: 'background-size',\n image: 'background-image'\n },\n font: {\n style: 'font-style',\n variant: 'font-variant',\n weight: 'font-weight',\n stretch: 'font-stretch',\n size: 'font-size',\n family: 'font-family',\n lineHeight: 'line-height',\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'line-height': 'line-height'\n },\n flex: {\n grow: 'flex-grow',\n basis: 'flex-basis',\n direction: 'flex-direction',\n wrap: 'flex-wrap',\n flow: 'flex-flow',\n shrink: 'flex-shrink'\n },\n align: {\n self: 'align-self',\n items: 'align-items',\n content: 'align-content'\n },\n grid: {\n 'template-columns': 'grid-template-columns',\n templateColumns: 'grid-template-columns',\n 'template-rows': 'grid-template-rows',\n templateRows: 'grid-template-rows',\n 'template-areas': 'grid-template-areas',\n templateAreas: 'grid-template-areas',\n template: 'grid-template',\n 'auto-columns': 'grid-auto-columns',\n autoColumns: 'grid-auto-columns',\n 'auto-rows': 'grid-auto-rows',\n autoRows: 'grid-auto-rows',\n 'auto-flow': 'grid-auto-flow',\n autoFlow: 'grid-auto-flow',\n row: 'grid-row',\n column: 'grid-column',\n 'row-start': 'grid-row-start',\n rowStart: 'grid-row-start',\n 'row-end': 'grid-row-end',\n rowEnd: 'grid-row-end',\n 'column-start': 'grid-column-start',\n columnStart: 'grid-column-start',\n 'column-end': 'grid-column-end',\n columnEnd: 'grid-column-end',\n area: 'grid-area',\n gap: 'grid-gap',\n 'row-gap': 'grid-row-gap',\n rowGap: 'grid-row-gap',\n 'column-gap': 'grid-column-gap',\n columnGap: 'grid-column-gap'\n }\n};\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Map values by given prop.\n *\n * @param {Array} array of values\n * @param {String} original property\n * @param {String} original rule\n * @return {String} mapped values\n */\nfunction mapValuesByProp(value, prop, rule) {\n return value.map(function (item) {\n return objectToArray(item, prop, rule, false, true);\n });\n}\n/**\n * Convert array to nested array, if needed\n */\n\n\nfunction processArray(value, prop, scheme, rule) {\n if (scheme[prop] == null) return value;\n if (value.length === 0) return [];\n if (Array.isArray(value[0])) return processArray(value[0], prop, scheme, rule);\n\n if (typeof value[0] === 'object') {\n return mapValuesByProp(value, prop, rule);\n }\n\n return [value];\n}\n/**\n * Convert object to array.\n */\n\n\nfunction objectToArray(value, prop, rule, isFallback, isInArray) {\n if (!(propObj[prop] || customPropObj[prop])) return [];\n var result = []; // Check if exists any non-standard property\n\n if (customPropObj[prop]) {\n // eslint-disable-next-line no-param-reassign\n value = customPropsToStyle(value, rule, customPropObj[prop], isFallback);\n } // Pass throught all standart props\n\n\n if (Object.keys(value).length) {\n for (var baseProp in propObj[prop]) {\n if (value[baseProp]) {\n if (Array.isArray(value[baseProp])) {\n result.push(propArrayInObj[baseProp] === null ? value[baseProp] : value[baseProp].join(' '));\n } else result.push(value[baseProp]);\n\n continue;\n } // Add default value from props config.\n\n\n if (propObj[prop][baseProp] != null) {\n result.push(propObj[prop][baseProp]);\n }\n }\n }\n\n if (!result.length || isInArray) return result;\n return [result];\n}\n/**\n * Convert custom properties values to styles adding them to rule directly\n */\n\n\nfunction customPropsToStyle(value, rule, customProps, isFallback) {\n for (var prop in customProps) {\n var propName = customProps[prop]; // If current property doesn't exist already in rule - add new one\n\n if (typeof value[prop] !== 'undefined' && (isFallback || !rule.prop(propName))) {\n var _styleDetector;\n\n var appendedValue = styleDetector((_styleDetector = {}, _styleDetector[propName] = value[prop], _styleDetector), rule)[propName]; // Add style directly in rule\n\n if (isFallback) rule.style.fallbacks[propName] = appendedValue;else rule.style[propName] = appendedValue;\n } // Delete converted property to avoid double converting\n\n\n delete value[prop];\n }\n\n return value;\n}\n/**\n * Detect if a style needs to be converted.\n */\n\n\nfunction styleDetector(style, rule, isFallback) {\n for (var prop in style) {\n var value = style[prop];\n\n if (Array.isArray(value)) {\n // Check double arrays to avoid recursion.\n if (!Array.isArray(value[0])) {\n if (prop === 'fallbacks') {\n for (var index = 0; index < style.fallbacks.length; index++) {\n style.fallbacks[index] = styleDetector(style.fallbacks[index], rule, true);\n }\n\n continue;\n }\n\n style[prop] = processArray(value, prop, propArray, rule); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n style.fallbacks = styleDetector(style.fallbacks, rule, true);\n continue;\n }\n\n style[prop] = objectToArray(value, prop, rule, isFallback); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n } // Maybe a computed value resulting in an empty string\n else if (style[prop] === '') delete style[prop];\n }\n\n return style;\n}\n/**\n * Adds possibility to write expanded styles.\n */\n\n\nfunction jssExpand() {\n function onProcessStyle(style, rule) {\n if (!style || rule.type !== 'style') return style;\n\n if (Array.isArray(style)) {\n // Pass rules one by one and reformat them\n for (var index = 0; index < style.length; index++) {\n style[index] = styleDetector(style[index], rule);\n }\n\n return style;\n }\n\n return styleDetector(style, rule);\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssExpand;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\n\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\n\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\n\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\n\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n *\n * @api public\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import functions from 'jss-plugin-rule-value-function';\nimport observable from 'jss-plugin-rule-value-observable';\nimport template from 'jss-plugin-template';\nimport global from 'jss-plugin-global';\nimport extend from 'jss-plugin-extend';\nimport nested from 'jss-plugin-nested';\nimport compose from 'jss-plugin-compose';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport expand from 'jss-plugin-expand';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort';\n\nvar create = function create(options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n plugins: [functions(), observable(options.observable), template(), global(), extend(), nested(), compose(), camelCase(), defaultUnit(options.defaultUnit), expand(), vendorPrefixer(), propsSort()]\n };\n};\n\nexport default create;\n","function shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport { shallowEqualArrays, shallowEqualObjects };\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import { create } from 'jss';\nimport preset from 'jss-preset-default';\n\n// I have been trying to benchmark and I have seen a slow down after about 10k rules.\n// Since we are in a single sheet mode, user shouldn't care about this.\nvar MAX_RULES_PER_SHEET = 10000;\nvar defaultJss = create(preset());\n\nvar createCss = function createCss(jss) {\n if (jss === void 0) {\n jss = defaultJss;\n }\n\n var cache = new Map();\n var ruleIndex = 0;\n var sheet;\n\n var getSheet = function getSheet() {\n if (!sheet || sheet.rules.index.length > MAX_RULES_PER_SHEET) {\n sheet = jss.createStyleSheet().attach();\n }\n\n return sheet;\n };\n\n function css() {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments; // We can avoid the need for stringification with a babel plugin,\n // which could generate a hash at build time and add it to the object.\n\n var argsStr = JSON.stringify(args);\n var cached = cache.get(argsStr);\n if (cached) return cached.className;\n var flatArgs = []; // Flatten arguments which can be\n // - style objects\n // - array of style objects\n // - arrays of style objects\n\n for (var argIndex in args) {\n var arg = args[argIndex];\n\n if (!Array.isArray(arg)) {\n flatArgs.push(arg);\n continue;\n }\n\n for (var innerArgIndex = 0; innerArgIndex < arg.length; innerArgIndex++) {\n flatArgs.push(arg[innerArgIndex]);\n }\n }\n\n var mergedStyle = {};\n var labels = [];\n\n for (var i = 0; i < flatArgs.length; i++) {\n var style = flatArgs[i];\n if (!style) continue;\n var styleObject = style; // It can be a class name that css() has previously generated.\n\n if (typeof style === 'string') {\n // eslint-disable-next-line no-shadow\n var _cached = cache.get(style);\n\n if (_cached) {\n // eslint-disable-next-line prefer-spread\n if (_cached.labels.length) labels.push.apply(labels, _cached.labels);\n styleObject = _cached.style;\n }\n }\n\n if (styleObject.label && labels.indexOf(styleObject.label) === -1) labels.push(styleObject.label);\n Object.assign(mergedStyle, styleObject);\n }\n\n delete mergedStyle.label;\n var label = labels.length === 0 ? 'css' : labels.join('-');\n var key = label + \"-\" + ruleIndex++;\n getSheet().addRule(key, mergedStyle);\n var className = getSheet().classes[key];\n var cacheValue = {\n style: mergedStyle,\n labels: labels,\n className: className\n };\n cache.set(argsStr, cacheValue);\n cache.set(className, cacheValue);\n return className;\n } // For testing only.\n\n\n css.getSheet = getSheet;\n return css;\n};\n\nvar css = createCss();\n\nexport default css;\nexport { createCss as create };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport { createContext, forwardRef, createElement as createElement$1, Component, useRef, useContext, useMemo, useDebugValue, useEffect, useLayoutEffect } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { ThemeContext } from 'theming';\nexport { ThemeProvider, createTheming, useTheme, withTheme } from 'theming';\nimport warning from 'tiny-warning';\nimport defaultJss, { SheetsManager, create as create$1, getDynamicStyles, createGenerateId, SheetsRegistry } from 'jss';\nexport { SheetsRegistry, createGenerateId } from 'jss';\nimport preset from 'jss-preset-default';\nimport isInBrowser from 'is-in-browser';\nimport PropTypes from 'prop-types';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport isPropValid from '@emotion/is-prop-valid';\nimport defaultCss from 'css-jss';\n\n// eslint-disable-next-line no-unused-vars\nvar getDisplayName = function getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n};\n\nvar memoize = function memoize(fn) {\n var lastArgs;\n var lastResult;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (Array.isArray(lastArgs) && args.length === lastArgs.length) {\n var isSame = true;\n\n for (var i = 0; i < args.length; i++) {\n if (args[i] !== lastArgs[i]) {\n isSame = false;\n }\n }\n\n if (isSame) {\n return lastResult;\n }\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};\n\nvar mergeClasses = function mergeClasses(baseClasses, additionalClasses) {\n var combinedClasses = _extends({}, baseClasses);\n\n for (var name in additionalClasses) {\n combinedClasses[name] = name in combinedClasses ? combinedClasses[name] + \" \" + additionalClasses[name] : additionalClasses[name];\n }\n\n return combinedClasses;\n};\n\nvar JssContext = createContext({\n classNamePrefix: '',\n disableStylesGeneration: false\n});\n\n/**\n * Global index counter to preserve source order.\n * As we create the style sheet during componentWillMount lifecycle,\n * children are handled after the parents, so the order of style elements would\n * be parent->child. It is a problem though when a parent passes a className\n * which needs to override any childs styles. StyleSheet of the child has a higher\n * specificity, because of the source order.\n * So our solution is to render sheets them in the reverse order child->sheet, so\n * that parent has a higher specificity.\n *\n * We start at [Number.MIN_SAFE_INTEGER] to always insert sheets from react-jss first before any\n * sheet which might be inserted manually by the user.\n */\nvar index = Number.MIN_SAFE_INTEGER || -1e9;\n\nvar getSheetIndex = function getSheetIndex() {\n return index++;\n};\n\nvar defaultManagers = new Map();\nvar getManager = function getManager(context, managerId) {\n // If `managers` map is present in the context, we use it in order to\n // let JssProvider reset them when new response has to render server-side.\n if (context.managers) {\n if (!context.managers[managerId]) {\n context.managers[managerId] = new SheetsManager();\n }\n\n return context.managers[managerId];\n }\n\n var manager = defaultManagers.get(managerId);\n\n if (!manager) {\n manager = new SheetsManager();\n defaultManagers.set(managerId, manager);\n }\n\n return manager;\n};\nvar manageSheet = function manageSheet(options) {\n var sheet = options.sheet,\n context = options.context,\n index = options.index,\n theme = options.theme;\n\n if (!sheet) {\n return;\n }\n\n var manager = getManager(context, index);\n manager.manage(theme);\n\n if (context.registry) {\n context.registry.add(sheet);\n }\n};\nvar unmanageSheet = function unmanageSheet(options) {\n if (!options.sheet) {\n return;\n }\n\n var manager = getManager(options.context, options.index);\n manager.unmanage(options.theme);\n};\n\nvar jss = create$1(preset());\n\nvar sheetsMeta = new WeakMap();\nvar getMeta = function getMeta(sheet) {\n return sheetsMeta.get(sheet);\n};\nvar addMeta = function addMeta(sheet, meta) {\n sheetsMeta.set(sheet, meta);\n};\n\n// eslint-disable-next-line no-unused-vars\nvar getStyles = function getStyles(options) {\n var styles = options.styles;\n\n if (typeof styles !== 'function') {\n return styles;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(styles.length !== 0, \"[JSS] <\" + (options.name || 'Hook') + \" />'s styles function doesn't rely on the \\\"theme\\\" argument. We recommend declaring styles as an object instead.\") : void 0;\n return styles(options.theme);\n};\n\nfunction getSheetOptions(options, link) {\n var minify;\n\n if (options.context.id && options.context.id.minify != null) {\n minify = options.context.id.minify;\n }\n\n var classNamePrefix = options.context.classNamePrefix || '';\n\n if (options.name && !minify) {\n classNamePrefix += options.name.replace(/\\s/g, '-') + \"-\";\n }\n\n var meta = '';\n if (options.name) meta = options.name + \", \";\n meta += typeof options.styles === 'function' ? 'Themed' : 'Unthemed';\n return _extends({}, options.sheetOptions, {\n index: options.index,\n meta: meta,\n classNamePrefix: classNamePrefix,\n link: link,\n generateId: options.sheetOptions.generateId || options.context.generateId\n });\n}\n\n// eslint-disable-next-line no-unused-vars\nvar createStyleSheet = function createStyleSheet(options) {\n if (options.context.disableStylesGeneration) {\n return undefined;\n }\n\n var manager = getManager(options.context, options.index);\n var existingSheet = manager.get(options.theme);\n\n if (existingSheet) {\n return existingSheet;\n }\n\n var jss$1 = options.context.jss || jss;\n var styles = getStyles(options);\n var dynamicStyles = getDynamicStyles(styles);\n var sheet = jss$1.createStyleSheet(styles, getSheetOptions(options, dynamicStyles !== null));\n addMeta(sheet, {\n dynamicStyles: dynamicStyles,\n styles: styles\n });\n manager.add(options.theme, sheet);\n return sheet;\n};\nvar removeDynamicRules = function removeDynamicRules(sheet, rules) {\n // Loop over each dynamic rule and remove the dynamic rule\n // We can't just remove the whole sheet as this has all of the rules for every component instance\n for (var key in rules) {\n sheet.deleteRule(rules[key]);\n }\n};\nvar updateDynamicRules = function updateDynamicRules(data, sheet, rules) {\n // Loop over each dynamic rule and update it\n // We can't just update the whole sheet as this has all of the rules for every component instance\n for (var key in rules) {\n sheet.updateOne(rules[key], data);\n }\n};\nvar addDynamicRules = function addDynamicRules(sheet, data) {\n var meta = getMeta(sheet);\n\n if (!meta) {\n return undefined;\n }\n\n var rules = {}; // Loop over each dynamic rule and add it to the stylesheet\n\n for (var key in meta.dynamicStyles) {\n var initialRuleCount = sheet.rules.index.length;\n var originalRule = sheet.addRule(key, meta.dynamicStyles[key]); // Loop through all created rules, fixes updating dynamic rules\n\n for (var i = initialRuleCount; i < sheet.rules.index.length; i++) {\n var rule = sheet.rules.index[i];\n sheet.updateOne(rule, data); // If it's the original rule, we need to add it by the correct key so the hook and hoc\n // can correctly concat the dynamic class with the static one\n\n rules[originalRule === rule ? key : rule.key] = rule;\n }\n }\n\n return rules;\n};\n\nvar getSheetClasses = function getSheetClasses(sheet, dynamicRules) {\n if (!dynamicRules) {\n return sheet.classes;\n }\n\n var classes = {};\n var meta = getMeta(sheet);\n\n if (!meta) {\n return sheet.classes;\n }\n\n for (var key in meta.styles) {\n classes[key] = sheet.classes[key];\n\n if (key in dynamicRules) {\n classes[key] += \" \" + sheet.classes[dynamicRules[key].key];\n }\n }\n\n return classes;\n};\n\nvar NoRenderer = function NoRenderer(props) {\n return props.children || null;\n};\n\nvar noTheme = {};\n\n/**\n * HOC creator function that wrapps the user component.\n *\n * `withStyles(styles, [options])(Component)`\n */\nvar createWithStyles = function createWithStyles(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$index = _options.index,\n index = _options$index === void 0 ? getSheetIndex() : _options$index,\n theming = _options.theming,\n injectTheme = _options.injectTheme,\n sheetOptions = _objectWithoutPropertiesLoose(_options, [\"index\", \"theming\", \"injectTheme\"]);\n\n var isThemingEnabled = typeof styles === 'function';\n var ThemeConsumer = theming && theming.context.Consumer || ThemeContext.Consumer;\n return function (InnerComponent) {\n if (InnerComponent === void 0) {\n InnerComponent = NoRenderer;\n }\n\n var displayName = getDisplayName(InnerComponent);\n\n var getTheme = function getTheme(props) {\n return isThemingEnabled ? props.theme : noTheme;\n };\n\n var WithStyles =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(WithStyles, _React$Component);\n\n // $FlowFixMe[prop-missing]\n WithStyles.createState = function createState(props) {\n var sheet = createStyleSheet({\n styles: styles,\n theme: getTheme(props),\n index: index,\n name: displayName,\n context: props.jssContext,\n sheetOptions: sheetOptions\n });\n\n if (!sheet) {\n return {\n classes: {},\n dynamicRules: undefined,\n sheet: undefined\n };\n }\n\n var dynamicRules = addDynamicRules(sheet, props);\n return {\n sheet: sheet,\n dynamicRules: dynamicRules,\n classes: getSheetClasses(sheet, dynamicRules)\n };\n };\n\n WithStyles.manage = function manage(props, state) {\n var sheet = state.sheet;\n\n if (sheet) {\n manageSheet({\n sheet: sheet,\n index: index,\n context: props.jssContext,\n theme: getTheme(props)\n });\n }\n };\n\n WithStyles.unmanage = function unmanage(props, state) {\n var sheet = state.sheet,\n dynamicRules = state.dynamicRules;\n\n if (sheet) {\n unmanageSheet({\n context: props.jssContext,\n index: index,\n sheet: sheet,\n theme: getTheme(props)\n });\n\n if (dynamicRules) {\n removeDynamicRules(sheet, dynamicRules);\n }\n }\n };\n\n function WithStyles(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.mergeClassesProp = memoize(function (sheetClasses, classesProp) {\n return classesProp ? mergeClasses(sheetClasses, classesProp) : sheetClasses;\n });\n _this.state = WithStyles.createState(props);\n var registry = props.jssContext.registry;\n var sheet = _this.state.sheet;\n\n if (sheet && registry) {\n registry.add(sheet);\n }\n\n return _this;\n }\n\n var _proto = WithStyles.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var props = this.props,\n state = this.state;\n\n if (props && state) {\n WithStyles.manage(props, state);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (isThemingEnabled && this.props.theme !== prevProps.theme) {\n var newState = WithStyles.createState(this.props);\n WithStyles.manage(this.props, newState);\n WithStyles.unmanage(prevProps, prevState); // eslint-disable-next-line react/no-did-update-set-state\n\n this.setState(newState);\n } else if (this.state.sheet && this.state.dynamicRules) {\n // Only update the rules when we don't generate a new sheet\n updateDynamicRules(this.props, this.state.sheet, this.state.dynamicRules);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n WithStyles.unmanage(this.props, this.state);\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n innerRef = _this$props.innerRef,\n jssContext = _this$props.jssContext,\n theme = _this$props.theme,\n classes = _this$props.classes,\n rest = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"jssContext\", \"theme\", \"classes\"]);\n\n var sheetClasses = this.state.classes;\n\n var props = _extends({}, rest, {\n classes: this.mergeClassesProp(sheetClasses, classes)\n });\n\n if (innerRef) props.ref = innerRef;\n if (injectTheme) props.theme = theme;\n return createElement$1(InnerComponent, props);\n };\n\n return WithStyles;\n }(Component);\n\n WithStyles.displayName = \"WithStyles(\" + displayName + \")\";\n WithStyles.defaultProps = _extends({}, InnerComponent.defaultProps);\n var JssContextSubscriber = forwardRef(function (props, ref) {\n return createElement$1(JssContext.Consumer, null, function (context) {\n if (isThemingEnabled || injectTheme) {\n return createElement$1(ThemeConsumer, null, function (theme) {\n return createElement$1(WithStyles, _extends({\n innerRef: ref,\n theme: theme\n }, props, {\n jssContext: context\n }));\n });\n }\n\n return createElement$1(WithStyles, _extends({\n innerRef: ref\n }, props, {\n jssContext: context,\n theme: noTheme\n }));\n });\n });\n JssContextSubscriber.displayName = \"JssContextSubscriber(\" + displayName + \")\"; // $FlowFixMe[prop-missing] - React's types should allow custom static properties on component.\n\n JssContextSubscriber.InnerComponent = InnerComponent;\n return hoistNonReactStatics(JssContextSubscriber, InnerComponent);\n };\n};\n\nvar useEffectOrLayoutEffect = isInBrowser ? useLayoutEffect : useEffect;\nvar noTheme$1 = {};\n\nvar createUseStyles = function createUseStyles(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$index = _options.index,\n index = _options$index === void 0 ? getSheetIndex() : _options$index,\n theming = _options.theming,\n name = _options.name,\n sheetOptions = _objectWithoutPropertiesLoose(_options, [\"index\", \"theming\", \"name\"]);\n\n var ThemeContext$1 = theming && theming.context || ThemeContext;\n var useTheme = typeof styles === 'function' ? // $FlowFixMe[incompatible-return]\n function () {\n return useContext(ThemeContext$1) || noTheme$1;\n } : // $FlowFixMe[incompatible-return]\n function () {\n return noTheme$1;\n };\n return function useStyles(data) {\n var isFirstMount = useRef(true);\n var context = useContext(JssContext);\n var theme = useTheme();\n\n var _React$useMemo = useMemo(function () {\n var newSheet = createStyleSheet({\n context: context,\n styles: styles,\n name: name,\n theme: theme,\n index: index,\n sheetOptions: sheetOptions\n });\n var newDynamicRules = newSheet ? addDynamicRules(newSheet, data) : null;\n\n if (newSheet) {\n manageSheet({\n index: index,\n context: context,\n sheet: newSheet,\n theme: theme\n });\n }\n\n return [newSheet, newDynamicRules];\n }, [context, theme]),\n sheet = _React$useMemo[0],\n dynamicRules = _React$useMemo[1];\n\n useEffectOrLayoutEffect(function () {\n // We only need to update the rules on a subsequent update and not in the first mount\n if (sheet && dynamicRules && !isFirstMount.current) {\n updateDynamicRules(data, sheet, dynamicRules);\n }\n }, [data]);\n useEffectOrLayoutEffect(function () {\n return (// cleanup only\n function () {\n if (sheet) {\n unmanageSheet({\n index: index,\n context: context,\n sheet: sheet,\n theme: theme\n });\n }\n\n if (sheet && dynamicRules) {\n removeDynamicRules(sheet, dynamicRules);\n }\n }\n );\n }, [sheet]);\n var classes = sheet && dynamicRules ? getSheetClasses(sheet, dynamicRules) : {};\n useDebugValue(classes);\n useDebugValue(theme === noTheme$1 ? 'No theme' : theme);\n useEffect(function () {\n isFirstMount.current = false;\n });\n return classes;\n };\n};\n\nvar initialContext = {};\n\nvar JssProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(JssProvider, _React$Component);\n\n function JssProvider() {\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.managers = {};\n\n _this.createContext = function (parentContext, prevContext) {\n if (prevContext === void 0) {\n prevContext = initialContext;\n }\n\n var _this$props = _this.props,\n registry = _this$props.registry,\n classNamePrefix = _this$props.classNamePrefix,\n jss = _this$props.jss,\n generateId = _this$props.generateId,\n disableStylesGeneration = _this$props.disableStylesGeneration,\n media = _this$props.media,\n id = _this$props.id;\n\n var context = _extends({}, parentContext);\n\n if (registry) {\n context.registry = registry; // This way we identify a new request on the server, because user will create\n // a new Registry instance for each.\n\n if (registry !== _this.registry) {\n // We reset managers because we have to regenerate all sheets for the new request.\n _this.managers = {};\n _this.registry = registry;\n }\n }\n\n context.managers = _this.managers;\n\n if (id !== undefined) {\n context.id = id;\n }\n\n if (generateId !== undefined) {\n context.generateId = generateId;\n } else if (!context.generateId || !prevContext || context.id !== prevContext.id) {\n context.generateId = createGenerateId(context.id);\n }\n\n if (classNamePrefix) {\n context.classNamePrefix = (context.classNamePrefix || '') + classNamePrefix;\n }\n\n if (media !== undefined) {\n context.media = media;\n }\n\n if (jss) {\n context.jss = jss;\n }\n\n if (disableStylesGeneration !== undefined) {\n context.disableStylesGeneration = disableStylesGeneration;\n }\n\n if (prevContext && shallowEqualObjects(prevContext, context)) {\n return prevContext;\n }\n\n return context;\n };\n\n _this.prevContext = void 0;\n _this.generateId = void 0;\n _this.registry = void 0;\n\n _this.renderProvider = function (parentContext) {\n var children = _this.props.children;\n\n var context = _this.createContext(parentContext, _this.prevContext);\n\n _this.prevContext = context;\n return createElement$1(JssContext.Provider, {\n value: context\n }, children);\n };\n\n return _this;\n }\n\n var _proto = JssProvider.prototype;\n\n _proto.render = function render() {\n return createElement$1(JssContext.Consumer, null, this.renderProvider);\n };\n\n return JssProvider;\n}(Component);\n\nJssProvider.propTypes = {\n registry: PropTypes.instanceOf(SheetsRegistry),\n jss: PropTypes.instanceOf(defaultJss.constructor),\n generateId: PropTypes.func,\n classNamePrefix: PropTypes.string,\n disableStylesGeneration: PropTypes.bool,\n children: PropTypes.node.isRequired,\n media: PropTypes.string,\n id: PropTypes.shape({\n minify: PropTypes.bool\n })\n};\n\n// eslint-disable-next-line no-unused-vars\nvar parseStyles = function parseStyles(args) {\n var dynamicStyles = [];\n var staticStyle;\n var labels = []; // Not using ...rest to optimize perf.\n\n for (var key in args) {\n var style = args[key];\n if (!style) continue;\n\n if (typeof style === 'function') {\n dynamicStyles.push(style);\n } else {\n if (!staticStyle) staticStyle = {};\n Object.assign(staticStyle, style);\n\n if (staticStyle.label) {\n if (labels.indexOf(staticStyle.label) === -1) labels.push(staticStyle.label);\n }\n }\n }\n\n var styles = {};\n var label = labels.length === 0 ? 'sc' : labels.join('-');\n\n if (staticStyle) {\n // Label should not leak to the core.\n if ('label' in staticStyle) delete staticStyle.label;\n styles[label] = staticStyle;\n } // When there is only one function rule, we don't need to wrap it.\n\n\n if (dynamicStyles.length === 1) {\n styles['scd'] = dynamicStyles[0];\n } // We create a new function rule which will call all other function rules\n // and merge the styles they return.\n\n\n if (dynamicStyles.length > 1) {\n styles['scd'] = function (props) {\n var merged = {};\n\n for (var i = 0; i < dynamicStyles.length; i++) {\n var dynamicStyle = dynamicStyles[i](props);\n if (dynamicStyle) Object.assign(merged, dynamicStyle);\n }\n\n return merged;\n };\n }\n\n return {\n styles: styles,\n label: label\n };\n};\n\nvar shouldForwardPropSymbol = Symbol('react-jss-styled');\n\nvar getShouldForwardProp = function getShouldForwardProp(tagOrComponent, options) {\n var shouldForwardProp = options.shouldForwardProp; // $FlowFixMe[invalid-computed-prop]\n // $FlowFixMe[incompatible-type]\n\n var childShouldForwardProp = tagOrComponent[shouldForwardPropSymbol];\n var finalShouldForwardProp = shouldForwardProp || childShouldForwardProp;\n\n if (shouldForwardProp && childShouldForwardProp) {\n finalShouldForwardProp = function finalShouldForwardProp(prop) {\n return childShouldForwardProp(prop) && shouldForwardProp(prop);\n };\n }\n\n return finalShouldForwardProp;\n};\n\nvar getChildProps = function getChildProps(props, shouldForwardProp, isTag) {\n var childProps = {};\n\n for (var prop in props) {\n if (shouldForwardProp) {\n if (shouldForwardProp(prop) === true) {\n childProps[prop] = props[prop];\n }\n\n continue;\n } // We don't want to pass non-dom props to the DOM.\n\n\n if (isTag) {\n if (isPropValid(prop)) {\n childProps[prop] = props[prop];\n }\n\n continue;\n }\n\n childProps[prop] = props[prop];\n }\n\n return childProps;\n};\n\n// eslint-disable-next-line no-unused-vars\nvar configureStyled = function configureStyled(tagOrComponent, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n theming = _options.theming;\n var isTag = typeof tagOrComponent === 'string';\n var ThemeContext$1 = theming ? theming.context : ThemeContext;\n var shouldForwardProp = getShouldForwardProp(tagOrComponent, options);\n\n var _options2 = options,\n _ = _options2.shouldForwardProp,\n hookOptions = _objectWithoutPropertiesLoose(_options2, [\"shouldForwardProp\"]);\n\n return function createStyledComponent() {\n // eslint-disable-next-line prefer-rest-params\n var _parseStyles = parseStyles(arguments),\n styles = _parseStyles.styles,\n label = _parseStyles.label;\n\n var useStyles = createUseStyles(styles, hookOptions);\n\n var Styled = function Styled(props) {\n var as = props.as,\n className = props.className;\n var theme = useContext(ThemeContext$1);\n var propsWithTheme = Object.assign({\n theme: theme\n }, props);\n var classes = useStyles(propsWithTheme);\n var childProps = getChildProps(props, shouldForwardProp, isTag);\n var classNames = ((classes[label] || classes.sc || '') + \" \" + (classes.scd || '')).trim();\n childProps.className = className ? className + \" \" + classNames : classNames;\n\n if (!isTag && shouldForwardProp) {\n // $FlowFixMe[invalid-computed-prop] we are not supposed to attach random properties to component functions.\n // $FlowFixMe[incompatible-use]\n tagOrComponent[shouldForwardPropSymbol] = shouldForwardProp;\n }\n\n if (isTag && as) {\n return createElement$1(as, childProps);\n }\n\n return createElement$1(tagOrComponent, childProps);\n };\n\n return Styled;\n };\n};\n\n/* eslint-disable prefer-rest-params, prefer-spread */\nvar create = function create(css) {\n if (css === void 0) {\n css = defaultCss;\n }\n\n return function createElement(type, props\n /* :: , ..._args: any */\n ) {\n var args = arguments;\n\n if (props && props.css) {\n var className = css(props.css);\n var newProps = Object.assign({}, props);\n newProps.className = props.className ? props.className + \" \" + className : className;\n delete newProps.css;\n args[1] = newProps;\n } // $FlowFixMe[missing-arg]\n\n\n return createElement$1.apply(undefined, args);\n };\n};\nvar createElement = create();\n\nexport default createWithStyles;\nexport { JssContext, JssProvider, create as createJsx, createUseStyles, jss, createElement as jsx, configureStyled as styled, createWithStyles as withStyles };\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","/**\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","/**\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","import React from 'react';\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nconst defaultProps = {\n breakpointCols: undefined,\n // optional, number or object { default: number, [key: number]: number }\n className: undefined,\n // required, string\n columnClassName: undefined,\n // optional, string\n // Any React children. Typically an array of JSX items\n children: undefined,\n // Custom attributes, however it is advised against\n // using these to prevent unintended issues and future conflicts\n // ...any other attribute, will be added to the container\n columnAttrs: undefined,\n // object, added to the columns\n // Deprecated props\n // The column property is deprecated.\n // It is an alias of the `columnAttrs` property\n column: undefined\n};\nconst DEFAULT_COLUMNS = 2;\n\nclass Masonry extends React.Component {\n constructor(props) {\n super(props); // Correct scope for when methods are accessed externally\n\n this.reCalculateColumnCount = this.reCalculateColumnCount.bind(this);\n this.reCalculateColumnCountDebounce = this.reCalculateColumnCountDebounce.bind(this); // default state\n\n let columnCount;\n\n if (this.props.breakpointCols && this.props.breakpointCols.default) {\n columnCount = this.props.breakpointCols.default;\n } else {\n columnCount = parseInt(this.props.breakpointCols) || DEFAULT_COLUMNS;\n }\n\n this.state = {\n columnCount\n };\n }\n\n componentDidMount() {\n this.reCalculateColumnCount(); // window may not be available in some environments\n\n if (window) {\n window.addEventListener('resize', this.reCalculateColumnCountDebounce);\n }\n }\n\n componentDidUpdate() {\n this.reCalculateColumnCount();\n }\n\n componentWillUnmount() {\n if (window) {\n window.removeEventListener('resize', this.reCalculateColumnCountDebounce);\n }\n }\n\n reCalculateColumnCountDebounce() {\n if (!window || !window.requestAnimationFrame) {\n // IE10+\n this.reCalculateColumnCount();\n return;\n }\n\n if (window.cancelAnimationFrame) {\n // IE10+\n window.cancelAnimationFrame(this._lastRecalculateAnimationFrame);\n }\n\n this._lastRecalculateAnimationFrame = window.requestAnimationFrame(() => {\n this.reCalculateColumnCount();\n });\n }\n\n reCalculateColumnCount() {\n const windowWidth = window && window.innerWidth || Infinity;\n let breakpointColsObject = this.props.breakpointCols; // Allow passing a single number to `breakpointCols` instead of an object\n\n if (typeof breakpointColsObject !== 'object') {\n breakpointColsObject = {\n default: parseInt(breakpointColsObject) || DEFAULT_COLUMNS\n };\n }\n\n let matchedBreakpoint = Infinity;\n let columns = breakpointColsObject.default || DEFAULT_COLUMNS;\n\n for (let breakpoint in breakpointColsObject) {\n const optBreakpoint = parseInt(breakpoint);\n const isCurrentBreakpoint = optBreakpoint > 0 && windowWidth <= optBreakpoint;\n\n if (isCurrentBreakpoint && optBreakpoint < matchedBreakpoint) {\n matchedBreakpoint = optBreakpoint;\n columns = breakpointColsObject[breakpoint];\n }\n }\n\n columns = Math.max(1, parseInt(columns) || 1);\n\n if (this.state.columnCount !== columns) {\n this.setState({\n columnCount: columns\n });\n }\n }\n\n itemsInColumns() {\n const currentColumnCount = this.state.columnCount;\n const itemsInColumns = new Array(currentColumnCount); // Force children to be handled as an array\n\n const items = React.Children.toArray(this.props.children);\n\n for (let i = 0; i < items.length; i++) {\n const columnIndex = i % currentColumnCount;\n\n if (!itemsInColumns[columnIndex]) {\n itemsInColumns[columnIndex] = [];\n }\n\n itemsInColumns[columnIndex].push(items[i]);\n }\n\n return itemsInColumns;\n }\n\n renderColumns() {\n const {\n column,\n columnAttrs = {},\n columnClassName\n } = this.props;\n const childrenInColumns = this.itemsInColumns();\n const columnWidth = `${100 / childrenInColumns.length}%`;\n let className = columnClassName;\n\n if (className && typeof className !== 'string') {\n this.logDeprecated('The property \"columnClassName\" requires a string'); // This is a deprecated default and will be removed soon.\n\n if (typeof className === 'undefined') {\n className = 'my-masonry-grid_column';\n }\n }\n\n const columnAttributes = _objectSpread(_objectSpread(_objectSpread({}, column), columnAttrs), {}, {\n style: _objectSpread(_objectSpread({}, columnAttrs.style), {}, {\n width: columnWidth\n }),\n className\n });\n\n return childrenInColumns.map((items, i) => {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, columnAttributes, {\n key: i\n }), items);\n });\n }\n\n logDeprecated(message) {\n console.error('[Masonry]', message);\n }\n\n render() {\n const _this$props = this.props,\n {\n // ignored\n children,\n breakpointCols,\n columnClassName,\n columnAttrs,\n column,\n // used\n className\n } = _this$props,\n rest = _objectWithoutProperties(_this$props, [\"children\", \"breakpointCols\", \"columnClassName\", \"columnAttrs\", \"column\", \"className\"]);\n\n let classNameOutput = className;\n\n if (typeof className !== 'string') {\n this.logDeprecated('The property \"className\" requires a string'); // This is a deprecated default and will be removed soon.\n\n if (typeof className === 'undefined') {\n classNameOutput = 'my-masonry-grid';\n }\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, rest, {\n className: classNameOutput\n }), this.renderColumns());\n }\n\n}\n\nMasonry.defaultProps = defaultProps;\n\nexport default Masonry;\n","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\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.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\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.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!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 }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var method = replace ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\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});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\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\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = isActive ? joinClassnames(classNameProp, activeClassName) : classNameProp;\n var style = isActive ? _extends({}, styleProp, {}, activeStyle) : styleProp;\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar historyContext =\n/*#__PURE__*/\ncreateNamedContext(\"Router-History\");\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext$1 = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar context =\n/*#__PURE__*/\ncreateNamedContext$1(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\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 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 is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n };\n\n _proto.render = function render() {\n return React.createElement(context.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 }, React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\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.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' 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.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, 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 function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false) ;\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , 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 */\n\n\nvar StaticRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\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\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\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 return React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // 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 s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' 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.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(historyContext);\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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 = res[2] || defaultDelimiter\n var pattern = capture || group\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 ? '.*' : '[^' + escapeString(delimiter) + ']+?')\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\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","/**\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","/**\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","/**\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\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar long = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {left: -35%;right: 100%}\\n 60% {left: 100%;right: -90%}\\n 100% {left: 100%;right: -90%}\\n\"], [\"\\n 0% {left: -35%;right: 100%}\\n 60% {left: 100%;right: -90%}\\n 100% {left: 100%;right: -90%}\\n\"])));\nvar short = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {left: -200%;right: 100%}\\n 60% {left: 107%;right: -8%}\\n 100% {left: 107%;right: -8%}\\n\"], [\"\\n 0% {left: -200%;right: 100%}\\n 60% {left: 107%;right: -8%}\\n 100% {left: 107%;right: -8%}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, height = _a.height, color = _a.color;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n display: block;\\n border-radius: 2px;\\n will-change: left, right;\\n animation-fill-mode: forwards;\\n animation: \", \" 2.1s \", \"\\n \", \"\\n infinite;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n display: block;\\n border-radius: 2px;\\n will-change: left, right;\\n animation-fill-mode: forwards;\\n animation: \", \" 2.1s \", \"\\n \",\n \"\\n infinite;\\n \"])), helpers_1.cssValue(height), color, i === 1 ? long : short, i === 2 ? \"1.15s\" : \"\", i === 1\n ? \"cubic-bezier(0.65, 0.815, 0.735, 0.395)\"\n : \"cubic-bezier(0.165, 0.84, 0.44, 1)\");\n };\n _this.wrapper = function () {\n var _a = _this.props, width = _a.width, height = _a.height, color = _a.color;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n \"])), helpers_1.cssValue(width), helpers_1.cssValue(height), helpers_1.calculateRgba(color, 0.2));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }))) : null;\n };\n Loader.defaultProps = helpers_1.heightWidthDefaults(4, 100);\n return Loader;\n}(React.PureComponent));\nexports.Loader = Loader;\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar beat = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 50% {transform: scale(0.75);opacity: 0.2}\\n 100% {transform: scale(1);opacity: 1}\\n\"], [\"\\n 50% {transform: scale(0.75);opacity: 0.2}\\n 100% {transform: scale(1);opacity: 1}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, size = _a.size, margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation: \", \" 0.7s \", \" infinite linear;\\n animation-fill-mode: both;\\n \"], [\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation: \", \" 0.7s \", \" infinite linear;\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), beat, i % 2 ? \"0s\" : \"0.35s\");\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar bounce = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"], [\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, size = _a.size;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \" 2.1s \", \" infinite ease-in-out;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \" 2.1s \", \" infinite ease-in-out;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), color, bounce, i === 1 ? \"1s\" : \"0s\");\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar circle = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, size = _a.size, color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n border: 1px solid \", \";\\n border-radius: 100%;\\n transition: 2s;\\n border-bottom: none;\\n border-right: none;\\n top: \", \"%;\\n left: \", \"%;\\n animation-fill-mode: \\\"\\\";\\n animation: \", \" 1s \", \"s infinite linear;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n border: 1px solid \", \";\\n border-radius: 100%;\\n transition: 2s;\\n border-bottom: none;\\n border-right: none;\\n top: \", \"%;\\n left: \", \"%;\\n animation-fill-mode: \\\"\\\";\\n animation: \", \" 1s \", \"s infinite linear;\\n \"])), \"\" + value * (1 - i / 10) + unit, \"\" + value * (1 - i / 10) + unit, color, i * 0.7 * 2.5, i * 0.35 * 2.5, circle, i * 0.2);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(0) }),\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }),\n core_1.jsx(\"div\", { css: this.style(4) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar climbingBox = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform:translate(0, -1em) rotate(-45deg)}\\n 5% {transform:translate(0, -1em) rotate(-50deg)}\\n 20% {transform:translate(1em, -2em) rotate(47deg)}\\n 25% {transform:translate(1em, -2em) rotate(45deg)}\\n 30% {transform:translate(1em, -2em) rotate(40deg)}\\n 45% {transform:translate(2em, -3em) rotate(137deg)}\\n 50% {transform:translate(2em, -3em) rotate(135deg)}\\n 55% {transform:translate(2em, -3em) rotate(130deg)}\\n 70% {transform:translate(3em, -4em) rotate(217deg)}\\n 75% {transform:translate(3em, -4em) rotate(220deg)}\\n 100% {transform:translate(0, -1em) rotate(-225deg)}\\n\"], [\"\\n 0% {transform:translate(0, -1em) rotate(-45deg)}\\n 5% {transform:translate(0, -1em) rotate(-50deg)}\\n 20% {transform:translate(1em, -2em) rotate(47deg)}\\n 25% {transform:translate(1em, -2em) rotate(45deg)}\\n 30% {transform:translate(1em, -2em) rotate(40deg)}\\n 45% {transform:translate(2em, -3em) rotate(137deg)}\\n 50% {transform:translate(2em, -3em) rotate(135deg)}\\n 55% {transform:translate(2em, -3em) rotate(130deg)}\\n 70% {transform:translate(3em, -4em) rotate(217deg)}\\n 75% {transform:translate(3em, -4em) rotate(220deg)}\\n 100% {transform:translate(0, -1em) rotate(-225deg)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var color = _this.props.color;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0;\\n bottom: -0.1em;\\n height: 1em;\\n width: 1em;\\n background-color: transparent;\\n border-radius: 15%;\\n border: 0.25em solid \", \";\\n transform: translate(0, -1em) rotate(-45deg);\\n animation-fill-mode: both;\\n animation: \", \" 2.5s infinite cubic-bezier(0.79, 0, 0.47, 0.97);\\n \"], [\"\\n position: absolute;\\n left: 0;\\n bottom: -0.1em;\\n height: 1em;\\n width: 1em;\\n background-color: transparent;\\n border-radius: 15%;\\n border: 0.25em solid \", \";\\n transform: translate(0, -1em) rotate(-45deg);\\n animation-fill-mode: both;\\n animation: \", \" 2.5s infinite cubic-bezier(0.79, 0, 0.47, 0.97);\\n \"])), color, climbingBox);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -2.7em;\\n margin-left: -2.7em;\\n width: 5.4em;\\n height: 5.4em;\\n font-size: \", \";\\n \"], [\"\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -2.7em;\\n margin-left: -2.7em;\\n width: 5.4em;\\n height: 5.4em;\\n font-size: \", \";\\n \"])), helpers_1.cssValue(size));\n };\n _this.hill = function () {\n var color = _this.props.color;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: absolute;\\n width: 7.1em;\\n height: 7.1em;\\n top: 1.7em;\\n left: 1.7em;\\n border-left: 0.25em solid \", \";\\n transform: rotate(45deg);\\n \"], [\"\\n position: absolute;\\n width: 7.1em;\\n height: 7.1em;\\n top: 1.7em;\\n left: 1.7em;\\n border-left: 0.25em solid \", \";\\n transform: rotate(45deg);\\n \"])), color);\n };\n _this.container = function () {\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: relative;\\n width: 7.1em;\\n height: 7.1em;\\n \"], [\"\\n position: relative;\\n width: 7.1em;\\n height: 7.1em;\\n \"])));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.container(), css] },\n core_1.jsx(\"div\", { css: this.wrapper() },\n core_1.jsx(\"div\", { css: this.style() }),\n core_1.jsx(\"div\", { css: this.hill() })))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar clip = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg) scale(1)}\\n 50% {transform: rotate(180deg) scale(0.8)}\\n 100% {transform: rotate(360deg) scale(1)}\\n\"], [\"\\n 0% {transform: rotate(0deg) scale(1)}\\n 50% {transform: rotate(180deg) scale(0.8)}\\n 100% {transform: rotate(360deg) scale(1)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var _a = _this.props, size = _a.size, color = _a.color;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background: transparent !important;\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n border: 2px solid;\\n border-color: \", \";\\n border-bottom-color: transparent;\\n display: inline-block;\\n animation: \", \" 0.75s 0s infinite linear;\\n animation-fill-mode: both;\\n \"], [\"\\n background: transparent !important;\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n border: 2px solid;\\n border-color: \", \";\\n border-bottom-color: transparent;\\n display: inline-block;\\n animation: \", \" 0.75s 0s infinite linear;\\n animation-fill-mode: both;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), color, clip);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? core_1.jsx(\"div\", { css: [this.style(), css] }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(35);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar rotate = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 100% { transform: rotate(360deg) }\\n\"], [\"\\n 100% { transform: rotate(360deg) }\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.wrapper = function () {\n var _a = _this.props, size = _a.size, color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n background-color: transparent;\\n box-shadow: inset 0px 0px 0px 2px \", \";\\n border-radius: 50%;\\n\\n &:after,\\n &:before {\\n position: absolute;\\n content: \\\"\\\";\\n background-color: \", \";\\n }\\n\\n &:after {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 2s linear infinite;\\n }\\n\\n &:before {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 8s linear infinite;\\n }\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n background-color: transparent;\\n box-shadow: inset 0px 0px 0px 2px \", \";\\n border-radius: 50%;\\n\\n &:after,\\n &:before {\\n position: absolute;\\n content: \\\"\\\";\\n background-color: \", \";\\n }\\n\\n &:after {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 2s linear infinite;\\n }\\n\\n &:before {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 8s linear infinite;\\n }\\n \"])), \"\" + value + unit, \"\" + value + unit, color, color, value / 2.4, value / 2 - 1, value / 2 - 1, rotate, value / 3, value / 2 - 1, value / 2 - 1, rotate);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? core_1.jsx(\"div\", { css: [this.wrapper(), css] }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar rotate = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar bounce = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"], [\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, size = _a.size, color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: \", \";\\n bottom: \", \";\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n animation: \", \" 2s \", \" infinite linear;\\n \"], [\"\\n position: absolute;\\n top: \", \";\\n bottom: \", \";\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n animation: \", \" 2s \", \" infinite linear;\\n \"])), i % 2 ? \"0\" : \"auto\", i % 2 ? \"auto\" : \"0\", \"\" + value / 2 + unit, \"\" + value / 2 + unit, color, bounce, i === 2 ? \"-1s\" : \"0s\");\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation-fill-mode: forwards;\\n animation: \", \" 2s 0s infinite linear;\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation-fill-mode: forwards;\\n animation: \", \" 2s 0s infinite linear;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), rotate);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar fade = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 50% {opacity: 0.3}\\n 100% {opacity: 1}\\n\"], [\"\\n 50% {opacity: 0.3}\\n 100% {opacity: 1}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.radius = function () {\n var margin = _this.props.margin;\n var value = helpers_1.parseLengthAndUnit(margin).value;\n return value + 18;\n };\n _this.quarter = function () {\n return _this.radius() / 2 + _this.radius() / 5.5;\n };\n _this.style = function (i) {\n var _a = _this.props, height = _a.height, width = _a.width, margin = _a.margin, color = _a.color, radius = _a.radius;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n background-color: \", \";\\n border-radius: \", \";\\n transition: 2s;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" 1.2s \", \"s infinite ease-in-out;\\n \"], [\"\\n position: absolute;\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n background-color: \", \";\\n border-radius: \", \";\\n transition: 2s;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" 1.2s \", \"s infinite ease-in-out;\\n \"])), helpers_1.cssValue(width), helpers_1.cssValue(height), helpers_1.cssValue(margin), color, helpers_1.cssValue(radius), fade, i * 0.12);\n };\n _this.wrapper = function () {\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n font-size: 0;\\n top: \", \"px;\\n left: \", \"px;\\n width: \", \"px;\\n height: \", \"px;\\n \"], [\"\\n position: relative;\\n font-size: 0;\\n top: \", \"px;\\n left: \", \"px;\\n width: \", \"px;\\n height: \", \"px;\\n \"])), _this.radius(), _this.radius(), _this.radius() * 3, _this.radius() * 3);\n };\n _this.a = function () { return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"])), _this.style(1), _this.radius()); };\n _this.b = function () { return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"])), _this.style(2), _this.quarter(), _this.quarter()); };\n _this.c = function () { return core_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"], [\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"])), _this.style(3), _this.radius()); };\n _this.d = function () { return core_1.css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"])), _this.style(4), -_this.quarter(), _this.quarter()); };\n _this.e = function () { return core_1.css(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"])), _this.style(5), -_this.radius()); };\n _this.f = function () { return core_1.css(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"])), _this.style(6), -_this.quarter(), -_this.quarter()); };\n _this.g = function () { return core_1.css(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"], [\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"])), _this.style(7), -_this.radius()); };\n _this.h = function () { return core_1.css(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"])), _this.style(8), _this.quarter(), -_this.quarter()); };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.a() }),\n core_1.jsx(\"div\", { css: this.b() }),\n core_1.jsx(\"div\", { css: this.c() }),\n core_1.jsx(\"div\", { css: this.d() }),\n core_1.jsx(\"div\", { css: this.e() }),\n core_1.jsx(\"div\", { css: this.f() }),\n core_1.jsx(\"div\", { css: this.g() }),\n core_1.jsx(\"div\", { css: this.h() }))) : null;\n };\n Loader.defaultProps = helpers_1.heightWidthRadiusDefaults(15, 5, 2);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar grid = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(1)}\\n 50% {transform: scale(0.5); opacity: 0.7}\\n 100% {transform: scale(1);opacity: 1}\\n\"], [\"\\n 0% {transform: scale(1)}\\n 50% {transform: scale(0.5); opacity: 0.7}\\n 100% {transform: scale(1);opacity: 1}\\n\"])));\nvar random = function (top) { return Math.random() * top; };\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (rand) {\n var _a = _this.props, color = _a.color, size = _a.size, margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" \", \"s \", \"s infinite ease;\\n \"], [\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" \", \"s \", \"s infinite ease;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), grid, rand / 100 + 0.6, rand / 100 - 0.2);\n };\n _this.wrapper = function () {\n var _a = _this.props, size = _a.size, margin = _a.margin;\n var sizeWithUnit = helpers_1.parseLengthAndUnit(size);\n var marginWithUnit = helpers_1.parseLengthAndUnit(margin);\n var width = \"\" + (parseFloat(sizeWithUnit.value.toString()) * 3 +\n parseFloat(marginWithUnit.value.toString()) * 6) + sizeWithUnit.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: \", \";\\n font-size: 0;\\n \"], [\"\\n width: \", \";\\n font-size: 0;\\n \"])), width);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }),\n core_1.jsx(\"div\", { css: this.style(random(100)) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar index_1 = require(\"./helpers/index\");\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.thickness = function () {\n var size = _this.props.size;\n var value = index_1.parseLengthAndUnit(size).value;\n return value / 5;\n };\n _this.lat = function () {\n var size = _this.props.size;\n var value = index_1.parseLengthAndUnit(size).value;\n return (value - _this.thickness()) / 2;\n };\n _this.offset = function () { return _this.lat() - _this.thickness(); };\n _this.color = function () {\n var color = _this.props.color;\n return index_1.calculateRgba(color, 0.75);\n };\n _this.before = function () {\n var size = _this.props.size;\n var color = _this.color();\n var lat = _this.lat();\n var thickness = _this.thickness();\n var offset = _this.offset();\n return core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {width: \", \";box-shadow: 0 \", \"px \", \", 0 \", \"px \", \"}\\n 70% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"], [\"\\n 0% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {width: \", \";box-shadow: 0 \", \"px \", \", 0 \", \"px \", \"}\\n 70% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"])), thickness, lat, -offset, color, -lat, offset, color, index_1.cssValue(size), -offset, color, offset, color, thickness, -lat, -offset, color, lat, offset, color, lat, -offset, color, -lat, offset, color);\n };\n _this.after = function () {\n var size = _this.props.size;\n var color = _this.color();\n var lat = _this.lat();\n var thickness = _this.thickness();\n var offset = _this.offset();\n return core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {height: \", \";box-shadow: \", \"px 0 \", \", \", \"px 0 \", \"}\\n 70% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"], [\"\\n 0% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {height: \", \";box-shadow: \", \"px 0 \", \", \", \"px 0 \", \"}\\n 70% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"])), thickness, offset, lat, color, -offset, -lat, color, index_1.cssValue(size), offset, color, -offset, color, thickness, offset, -lat, color, -offset, lat, color, offset, lat, color, -offset, -lat, color);\n };\n _this.style = function (i) {\n var size = _this.props.size;\n var _a = index_1.parseLengthAndUnit(size), value = _a.value, unit = _a.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n content: \\\"\\\";\\n top: 50%;\\n left: 50%;\\n display: block;\\n width: \", \";\\n height: \", \";\\n border-radius: \", \";\\n transform: translate(-50%, -50%);\\n animation-fill-mode: none;\\n animation: \", \" 2s infinite;\\n \"], [\"\\n position: absolute;\\n content: \\\"\\\";\\n top: 50%;\\n left: 50%;\\n display: block;\\n width: \", \";\\n height: \", \";\\n border-radius: \", \";\\n transform: translate(-50%, -50%);\\n animation-fill-mode: none;\\n animation: \", \" 2s infinite;\\n \"])), \"\" + value / 5 + unit, \"\" + value / 5 + unit, \"\" + value / 10 + unit, i === 1 ? _this.before() : _this.after());\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n transform: rotate(165deg);\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n transform: rotate(165deg);\\n \"])), index_1.cssValue(size), index_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }))) : null;\n };\n Loader.defaultProps = index_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar moon = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.moonSize = function () {\n var size = _this.props.size;\n var value = helpers_1.parseLengthAndUnit(size).value;\n return value / 7;\n };\n _this.ballStyle = function (size) {\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"], [\"\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n var _a = helpers_1.parseLengthAndUnit(size), value = _a.value, unit = _a.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"])), \"\" + (value + _this.moonSize() * 2) + unit, \"\" + (value + _this.moonSize() * 2) + unit, moon);\n };\n _this.ball = function () {\n var _a = _this.props, color = _a.color, size = _a.size;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n \", \";\\n background-color: \", \";\\n opacity: 0.8;\\n position: absolute;\\n top: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"], [\"\\n \", \";\\n background-color: \", \";\\n opacity: 0.8;\\n position: absolute;\\n top: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"])), _this.ballStyle(_this.moonSize()), color, \"\" + (value / 2 - _this.moonSize() / 2) + unit, moon);\n };\n _this.circle = function () {\n var _a = _this.props, size = _a.size, color = _a.color;\n var value = helpers_1.parseLengthAndUnit(size).value;\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n border: \", \"px solid \", \";\\n opacity: 0.1;\\n box-sizing: content-box;\\n \"], [\"\\n \", \";\\n border: \", \"px solid \", \";\\n opacity: 0.1;\\n box-sizing: content-box;\\n \"])), _this.ballStyle(value), _this.moonSize(), color);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.ball() }),\n core_1.jsx(\"div\", { css: this.circle() }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar pacman = [\n core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(-44deg)}\\n \"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(-44deg)}\\n \"]))),\n core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(44deg)}\\n \"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(44deg)}\\n \"])))\n];\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ball = function () {\n var size = _this.props.size;\n var _a = helpers_1.parseLengthAndUnit(size), value = _a.value, unit = _a.unit;\n return core_1.keyframes(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n 75% {opacity: 0.7}\\n 100% {transform: translate(\", \", \", \")}\\n \"], [\"\\n 75% {opacity: 0.7}\\n 100% {transform: translate(\", \", \", \")}\\n \"])), \"\" + -4 * value + unit, \"\" + -value / 4 + unit);\n };\n _this.ballStyle = function (i) {\n var _a = _this.props, color = _a.color, margin = _a.margin, size = _a.size;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n background-color: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n transform: translate(0, \", \");\\n position: absolute;\\n top: \", \";\\n left: \", \";\\n animation: \", \" 1s \", \"s infinite linear;\\n animation-fill-mode: both;\\n \"], [\"\\n width: \", \";\\n height: \", \";\\n background-color: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n transform: translate(0, \", \");\\n position: absolute;\\n top: \", \";\\n left: \", \";\\n animation: \", \" 1s \", \"s infinite linear;\\n animation-fill-mode: both;\\n \"])), \"\" + value / 3 + unit, \"\" + value / 3 + unit, color, helpers_1.cssValue(margin), \"\" + -value / 4 + unit, \"\" + value + unit, \"\" + value * 4 + unit, _this.ball(), i * 0.25);\n };\n _this.s1 = function () {\n var size = _this.props.size;\n return helpers_1.cssValue(size) + \" solid transparent\";\n };\n _this.s2 = function () {\n var _a = _this.props, size = _a.size, color = _a.color;\n return helpers_1.cssValue(size) + \" solid \" + color;\n };\n _this.pacmanStyle = function (i) {\n var size = _this.props.size;\n var s1 = _this.s1();\n var s2 = _this.s2();\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n width: 0;\\n height: 0;\\n border-right: \", \";\\n border-top: \", \";\\n border-left: \", \";\\n border-bottom: \", \";\\n border-radius: \", \";\\n position: absolute;\\n animation: \", \" 0.8s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"], [\"\\n width: 0;\\n height: 0;\\n border-right: \", \";\\n border-top: \", \";\\n border-left: \", \";\\n border-bottom: \", \";\\n border-radius: \", \";\\n position: absolute;\\n animation: \", \" 0.8s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"])), s1, i === 0 ? s1 : s2, s2, i === 0 ? s2 : s1, helpers_1.cssValue(size), pacman[i]);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: relative;\\n font-size: 0;\\n height: \", \";\\n width: \", \";\\n \"], [\"\\n position: relative;\\n font-size: 0;\\n height: \", \";\\n width: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n _this.pac = function () { return _this.pacmanStyle(0); };\n _this.man = function () { return _this.pacmanStyle(1); };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.pac() }),\n core_1.jsx(\"div\", { css: this.man() }),\n core_1.jsx(\"div\", { css: this.ballStyle(2) }),\n core_1.jsx(\"div\", { css: this.ballStyle(3) }),\n core_1.jsx(\"div\", { css: this.ballStyle(4) }),\n core_1.jsx(\"div\", { css: this.ballStyle(5) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(25);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\n// 1.5 4.5 7.5\nvar distance = [1, 3, 5];\nvar propagate = [\n core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[2]),\n core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[1]),\n core_1.keyframes(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 75% {transform: translateX(-\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 75% {transform: translateX(-\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[0]),\n core_1.keyframes(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 75% {transform: translateX(\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 75% {transform: translateX(\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[0]),\n core_1.keyframes(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[1]),\n core_1.keyframes(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[2])\n];\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, size = _a.size, color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n position: absolute;\\n font-size: \", \";\\n width: \", \";\\n height: \", \";\\n background: \", \";\\n border-radius: 50%;\\n animation: \", \" 1.5s infinite;\\n animation-fill-mode: forwards;\\n \"], [\"\\n position: absolute;\\n font-size: \", \";\\n width: \", \";\\n height: \", \";\\n background: \", \";\\n border-radius: 50%;\\n animation: \", \" 1.5s infinite;\\n animation-fill-mode: forwards;\\n \"])), \"\" + value / 3 + unit, \"\" + value + unit, \"\" + value + unit, color, propagate[i]);\n };\n _this.wrapper = function () {\n return core_1.css(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n position: relative;\\n \"], [\"\\n position: relative;\\n \"])));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(0) }),\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }),\n core_1.jsx(\"div\", { css: this.style(4) }),\n core_1.jsx(\"div\", { css: this.style(5) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar pulse = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(1);opacity: 1}\\n 45% {transform: scale(0.1);opacity: 0.7}\\n 80% {transform: scale(1);opacity: 1}\\n\"], [\"\\n 0% {transform: scale(1);opacity: 1}\\n 45% {transform: scale(0.1);opacity: 0.7}\\n 80% {transform: scale(1);opacity: 1}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, size = _a.size, margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.75s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.75s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), pulse, i * 0.12);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar right = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(180deg) rotateY(360deg) rotateZ(360deg)}\\n\"], [\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(180deg) rotateY(360deg) rotateZ(360deg)}\\n\"])));\nvar left = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(360deg) rotateY(180deg) rotateZ(360deg)}\\n\"], [\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(360deg) rotateY(180deg) rotateZ(360deg)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, size = _a.size, color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size), value = _b.value, unit = _b.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: \", \";\\n height: \", \";\\n border: \", \" solid \", \";\\n opacity: 0.4;\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n perspective: 800px;\\n animation: \", \" 2s 0s infinite linear;\\n \"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: \", \";\\n height: \", \";\\n border: \", \" solid \", \";\\n opacity: 0.4;\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n perspective: 800px;\\n animation: \", \" 2s 0s infinite linear;\\n \"])), \"\" + value + unit, \"\" + value + unit, \"\" + value / 10 + unit, color, i === 1 ? right : left);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n position: relative;\\n \"], [\"\\n width: \", \";\\n height: \", \";\\n position: relative;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar riseAmount = 30;\nvar even = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(1.1)}\\n 25% {transform: translateY(-\", \"px)}\\n 50% {transform: scale(0.4)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(1.0)}\\n\"], [\"\\n 0% {transform: scale(1.1)}\\n 25% {transform: translateY(-\", \"px)}\\n 50% {transform: scale(0.4)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(1.0)}\\n\"])), riseAmount, riseAmount);\nvar odd = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {transform: scale(0.4)}\\n 25% {transform: translateY(\", \"px)}\\n 50% {transform: scale(1.1)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(0.75)}\\n\"], [\"\\n 0% {transform: scale(0.4)}\\n 25% {transform: translateY(\", \"px)}\\n 50% {transform: scale(1.1)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(0.75)}\\n\"])), riseAmount, -riseAmount);\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, size = _a.size, margin = _a.margin;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.15, 0.46, 0.9, 0.6);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.15, 0.46, 0.9, 0.6);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), i % 2 === 0 ? even : odd);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }),\n core_1.jsx(\"div\", { css: this.style(4) }),\n core_1.jsx(\"div\", { css: this.style(5) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar rotate = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var margin = _this.props.margin;\n var value = helpers_1.parseLengthAndUnit(margin).value;\n var left = (i % 2 ? -1 : 1) * (26 + value);\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n opacity: 0.8;\\n position: absolute;\\n top: 0;\\n left: \", \"px;\\n \"], [\"\\n opacity: 0.8;\\n position: absolute;\\n top: 0;\\n left: \", \"px;\\n \"])), left);\n };\n _this.ball = function () {\n var _a = _this.props, color = _a.color, size = _a.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n _this.wrapper = function () {\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n \", \";\\n display: inline-block;\\n position: relative;\\n animation-fill-mode: both;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.7, -0.13, 0.22, 0.86);\\n \"], [\"\\n \", \";\\n display: inline-block;\\n position: relative;\\n animation-fill-mode: both;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.7, -0.13, 0.22, 0.86);\\n \"])), _this.ball(), rotate);\n };\n _this.long = function () { return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n \"], [\"\\n \", \";\\n \", \";\\n \"])), _this.ball(), _this.style(1)); };\n _this.short = function () { return core_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n \"], [\"\\n \", \";\\n \", \";\\n \"])), _this.ball(), _this.style(2)); };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.long() }),\n core_1.jsx(\"div\", { css: this.short() }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar scale = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scaley(1.0)}\\n 50% {transform: scaley(0.4)}\\n 100% {transform: scaley(1.0)}\\n\"], [\"\\n 0% {transform: scaley(1.0)}\\n 50% {transform: scaley(0.4)}\\n 100% {transform: scaley(1.0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, width = _a.width, height = _a.height, margin = _a.margin, radius = _a.radius;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: \", \";\\n display: inline-block;\\n animation: \", \" 1s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: \", \";\\n display: inline-block;\\n animation: \", \" 1s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(width), helpers_1.cssValue(height), helpers_1.cssValue(margin), helpers_1.cssValue(radius), scale, i * 0.1);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }),\n core_1.jsx(\"div\", { css: this.style(4) }),\n core_1.jsx(\"div\", { css: this.style(5) }))) : null;\n };\n Loader.defaultProps = helpers_1.heightWidthRadiusDefaults(35, 4, 2);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar skew = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 25% {transform: perspective(100px) rotateX(180deg) rotateY(0)}\\n 50% {transform: perspective(100px) rotateX(180deg) rotateY(180deg)}\\n 75% {transform: perspective(100px) rotateX(0) rotateY(180deg)}\\n 100% {transform: perspective(100px) rotateX(0) rotateY(0)}\\n\"], [\"\\n 25% {transform: perspective(100px) rotateX(180deg) rotateY(0)}\\n 50% {transform: perspective(100px) rotateX(180deg) rotateY(180deg)}\\n 75% {transform: perspective(100px) rotateX(0) rotateY(180deg)}\\n 100% {transform: perspective(100px) rotateX(0) rotateY(0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var _a = _this.props, size = _a.size, color = _a.color;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: 0;\\n height: 0;\\n border-left: \", \" solid transparent;\\n border-right: \", \" solid transparent;\\n border-bottom: \", \" solid \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"], [\"\\n width: 0;\\n height: 0;\\n border-left: \", \" solid transparent;\\n border-right: \", \" solid transparent;\\n border-bottom: \", \" solid \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(size), color, skew);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? core_1.jsx(\"div\", { css: [this.style(), css] }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(20);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar square = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 25% {transform: rotateX(180deg) rotateY(0)}\\n 50% {transform: rotateX(180deg) rotateY(180deg)}\\n 75% {transform: rotateX(0) rotateY(180deg)}\\n 100% {transform: rotateX(0) rotateY(0)}\\n\"], [\"\\n 25% {transform: rotateX(180deg) rotateY(0)}\\n 50% {transform: rotateX(180deg) rotateY(180deg)}\\n 75% {transform: rotateX(0) rotateY(180deg)}\\n 100% {transform: rotateX(0) rotateY(0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var _a = _this.props, color = _a.color, size = _a.size;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), square);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? core_1.jsx(\"div\", { css: [this.style(), css] }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar proptypes_1 = require(\"./helpers/proptypes\");\nvar helpers_1 = require(\"./helpers\");\nvar sync = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 33% {transform: translateY(10px)}\\n 66% {transform: translateY(-10px)}\\n 100% {transform: translateY(0)}\\n\"], [\"\\n 33% {transform: translateY(10px)}\\n 66% {transform: translateY(-10px)}\\n 100% {transform: translateY(0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, size = _a.size, margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.6s \", \"s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.6s \", \"s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), sync, i * 0.07);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }),\n core_1.jsx(\"div\", { css: this.style(3) }))) : null;\n };\n Loader.defaultProps = proptypes_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BasicColors;\n(function (BasicColors) {\n BasicColors[\"maroon\"] = \"#800000\";\n BasicColors[\"red\"] = \"#FF0000\";\n BasicColors[\"orange\"] = \"#FFA500\";\n BasicColors[\"yellow\"] = \"#FFFF00\";\n BasicColors[\"olive\"] = \"#808000\";\n BasicColors[\"green\"] = \"#008000\";\n BasicColors[\"purple\"] = \"#800080\";\n BasicColors[\"fuchsia\"] = \"#FF00FF\";\n BasicColors[\"lime\"] = \"#00FF00\";\n BasicColors[\"teal\"] = \"#008080\";\n BasicColors[\"aqua\"] = \"#00FFFF\";\n BasicColors[\"blue\"] = \"#0000FF\";\n BasicColors[\"navy\"] = \"#000080\";\n BasicColors[\"black\"] = \"#000000\";\n BasicColors[\"gray\"] = \"#808080\";\n BasicColors[\"silver\"] = \"#C0C0C0\";\n BasicColors[\"white\"] = \"#FFFFFF\";\n})(BasicColors || (BasicColors = {}));\nexports.calculateRgba = function (color, opacity) {\n if (Object.keys(BasicColors).includes(color)) {\n color = BasicColors[color];\n }\n if (color[0] === \"#\") {\n color = color.slice(1);\n }\n if (color.length === 3) {\n var res_1 = \"\";\n color.split(\"\").forEach(function (c) {\n res_1 += c;\n res_1 += c;\n });\n color = res_1;\n }\n var rgbValues = color\n .match(/.{2}/g)\n .map(function (hex) { return parseInt(hex, 16); })\n .join(\", \");\n return \"rgba(\" + rgbValues + \", \" + opacity + \")\";\n};\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./proptypes\"));\n__export(require(\"./colors\"));\n__export(require(\"./unitConverter\"));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar commonValues = {\n loading: true,\n color: \"#000000\",\n css: \"\"\n};\nfunction sizeDefaults(sizeValue) {\n return Object.assign({}, commonValues, { size: sizeValue });\n}\nexports.sizeDefaults = sizeDefaults;\nfunction sizeMarginDefaults(sizeValue) {\n return Object.assign({}, sizeDefaults(sizeValue), {\n margin: 2\n });\n}\nexports.sizeMarginDefaults = sizeMarginDefaults;\nfunction heightWidthDefaults(height, width) {\n return Object.assign({}, commonValues, {\n height: height,\n width: width\n });\n}\nexports.heightWidthDefaults = heightWidthDefaults;\nfunction heightWidthRadiusDefaults(height, width, radius) {\n if (radius === void 0) { radius = 2; }\n return Object.assign({}, heightWidthDefaults(height, width), {\n radius: radius,\n margin: 2\n });\n}\nexports.heightWidthRadiusDefaults = heightWidthRadiusDefaults;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssUnit = {\n cm: true,\n mm: true,\n in: true,\n px: true,\n pt: true,\n pc: true,\n em: true,\n ex: true,\n ch: true,\n rem: true,\n vw: true,\n vh: true,\n vmin: true,\n vmax: true,\n \"%\": true\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nfunction parseLengthAndUnit(size) {\n if (typeof size === \"number\") {\n return {\n value: size,\n unit: \"px\"\n };\n }\n var value;\n var valueString = size.match(/^[0-9.]*/).toString();\n if (valueString.includes(\".\")) {\n value = parseFloat(valueString);\n }\n else {\n value = parseInt(valueString, 10);\n }\n var unit = size.match(/[^0-9]*$/).toString();\n if (cssUnit[unit]) {\n return {\n value: value,\n unit: unit\n };\n }\n console.warn(\"React Spinners: \" + size + \" is not a valid css value. Defaulting to \" + value + \"px.\");\n return {\n value: value,\n unit: \"px\"\n };\n}\nexports.parseLengthAndUnit = parseLengthAndUnit;\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nfunction cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\" + lengthWithunit.value + lengthWithunit.unit;\n}\nexports.cssValue = cssValue;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BarLoader_1 = __importDefault(require(\"./BarLoader\"));\nvar BeatLoader_1 = __importDefault(require(\"./BeatLoader\"));\nvar BounceLoader_1 = __importDefault(require(\"./BounceLoader\"));\nvar CircleLoader_1 = __importDefault(require(\"./CircleLoader\"));\nvar ClimbingBoxLoader_1 = __importDefault(require(\"./ClimbingBoxLoader\"));\nvar ClipLoader_1 = __importDefault(require(\"./ClipLoader\"));\nvar ClockLoader_1 = __importDefault(require(\"./ClockLoader\"));\nvar DotLoader_1 = __importDefault(require(\"./DotLoader\"));\nvar FadeLoader_1 = __importDefault(require(\"./FadeLoader\"));\nvar GridLoader_1 = __importDefault(require(\"./GridLoader\"));\nvar HashLoader_1 = __importDefault(require(\"./HashLoader\"));\nvar MoonLoader_1 = __importDefault(require(\"./MoonLoader\"));\nvar PacmanLoader_1 = __importDefault(require(\"./PacmanLoader\"));\nvar PropagateLoader_1 = __importDefault(require(\"./PropagateLoader\"));\nvar PulseLoader_1 = __importDefault(require(\"./PulseLoader\"));\nvar RingLoader_1 = __importDefault(require(\"./RingLoader\"));\nvar RiseLoader_1 = __importDefault(require(\"./RiseLoader\"));\nvar RotateLoader_1 = __importDefault(require(\"./RotateLoader\"));\nvar ScaleLoader_1 = __importDefault(require(\"./ScaleLoader\"));\nvar SkewLoader_1 = __importDefault(require(\"./SkewLoader\"));\nvar SquareLoader_1 = __importDefault(require(\"./SquareLoader\"));\nvar SyncLoader_1 = __importDefault(require(\"./SyncLoader\"));\nexports.BarLoader = BarLoader_1.default;\nexports.BeatLoader = BeatLoader_1.default;\nexports.BounceLoader = BounceLoader_1.default;\nexports.CircleLoader = CircleLoader_1.default;\nexports.ClimbingBoxLoader = ClimbingBoxLoader_1.default;\nexports.ClipLoader = ClipLoader_1.default;\nexports.ClockLoader = ClockLoader_1.default;\nexports.DotLoader = DotLoader_1.default;\nexports.FadeLoader = FadeLoader_1.default;\nexports.GridLoader = GridLoader_1.default;\nexports.HashLoader = HashLoader_1.default;\nexports.MoonLoader = MoonLoader_1.default;\nexports.PacmanLoader = PacmanLoader_1.default;\nexports.PropagateLoader = PropagateLoader_1.default;\nexports.PulseLoader = PulseLoader_1.default;\nexports.RingLoader = RingLoader_1.default;\nexports.RiseLoader = RiseLoader_1.default;\nexports.RotateLoader = RotateLoader_1.default;\nexports.ScaleLoader = ScaleLoader_1.default;\nexports.SkewLoader = SkewLoader_1.default;\nexports.SquareLoader = SquareLoader_1.default;\nexports.SyncLoader = SyncLoader_1.default;\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\n\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n\n return ele;\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n if (typeof props.css === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-57a3a7a3.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-57a3a7a3.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n\n {\n insertStyles(context, serialized, false);\n }\n\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n\n return ele;\n });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport React, { useState, useCallback, forwardRef, useRef, useEffect, useImperativeHandle, useMemo } from 'react';\n\nconst is = {\n arr: Array.isArray,\n obj: a => Object.prototype.toString.call(a) === '[object Object]',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === void 0,\n nul: a => a === null,\n set: a => a instanceof Set,\n map: a => a instanceof Map,\n\n equ(a, b) {\n if (typeof a !== typeof b) return false;\n if (is.str(a) || is.num(a)) return a === b;\n if (is.obj(a) && is.obj(b) && Object.keys(a).length + Object.keys(b).length === 0) return true;\n let i;\n\n for (i in a) if (!(i in b)) return false;\n\n for (i in b) if (a[i] !== b[i]) return false;\n\n return is.und(i) ? a === b : true;\n }\n\n};\nfunction merge(target, lowercase) {\n if (lowercase === void 0) {\n lowercase = true;\n }\n\n return object => (is.arr(object) ? object : Object.keys(object)).reduce((acc, element) => {\n const key = lowercase ? element[0].toLowerCase() + element.substring(1) : element;\n acc[key] = target(key);\n return acc;\n }, target);\n}\nfunction useForceUpdate() {\n const _useState = useState(false),\n f = _useState[1];\n\n const forceUpdate = useCallback(() => f(v => !v), []);\n return forceUpdate;\n}\nfunction withDefault(value, defaultValue) {\n return is.und(value) || is.nul(value) ? defaultValue : value;\n}\nfunction toArray(a) {\n return !is.und(a) ? is.arr(a) ? a : [a] : [];\n}\nfunction callProp(obj) {\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 is.fun(obj) ? obj(...args) : obj;\n}\n\nfunction getForwardProps(props) {\n const to = props.to,\n from = props.from,\n config = props.config,\n onStart = props.onStart,\n onRest = props.onRest,\n onFrame = props.onFrame,\n children = props.children,\n reset = props.reset,\n reverse = props.reverse,\n force = props.force,\n immediate = props.immediate,\n delay = props.delay,\n attach = props.attach,\n destroyed = props.destroyed,\n interpolateTo = props.interpolateTo,\n ref = props.ref,\n lazy = props.lazy,\n forward = _objectWithoutPropertiesLoose(props, [\"to\", \"from\", \"config\", \"onStart\", \"onRest\", \"onFrame\", \"children\", \"reset\", \"reverse\", \"force\", \"immediate\", \"delay\", \"attach\", \"destroyed\", \"interpolateTo\", \"ref\", \"lazy\"]);\n\n return forward;\n}\n\nfunction interpolateTo(props) {\n const forward = getForwardProps(props);\n if (is.und(forward)) return _extends({\n to: forward\n }, props);\n const rest = Object.keys(props).reduce((a, k) => !is.und(forward[k]) ? a : _extends({}, a, {\n [k]: props[k]\n }), {});\n return _extends({\n to: forward\n }, rest);\n}\nfunction handleRef(ref, forward) {\n if (forward) {\n // If it's a function, assume it's a ref callback\n if (is.fun(forward)) forward(ref);else if (is.obj(forward)) {\n forward.current = ref;\n }\n }\n\n return ref;\n}\n\nclass Animated {\n constructor() {\n this.payload = void 0;\n this.children = [];\n }\n\n getAnimatedValue() {\n return this.getValue();\n }\n\n getPayload() {\n return this.payload || this;\n }\n\n attach() {}\n\n detach() {}\n\n getChildren() {\n return this.children;\n }\n\n addChild(child) {\n if (this.children.length === 0) this.attach();\n this.children.push(child);\n }\n\n removeChild(child) {\n const index = this.children.indexOf(child);\n this.children.splice(index, 1);\n if (this.children.length === 0) this.detach();\n }\n\n}\nclass AnimatedArray extends Animated {\n constructor() {\n super(...arguments);\n this.payload = [];\n\n this.attach = () => this.payload.forEach(p => p instanceof Animated && p.addChild(this));\n\n this.detach = () => this.payload.forEach(p => p instanceof Animated && p.removeChild(this));\n }\n\n}\nclass AnimatedObject extends Animated {\n constructor() {\n super(...arguments);\n this.payload = {};\n\n this.attach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.addChild(this));\n\n this.detach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.removeChild(this));\n }\n\n getValue(animated) {\n if (animated === void 0) {\n animated = false;\n }\n\n const payload = {};\n\n for (const key in this.payload) {\n const value = this.payload[key];\n if (animated && !(value instanceof Animated)) continue;\n payload[key] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value;\n }\n\n return payload;\n }\n\n getAnimatedValue() {\n return this.getValue(true);\n }\n\n}\n\nlet applyAnimatedValues;\nfunction injectApplyAnimatedValues(fn, transform) {\n applyAnimatedValues = {\n fn,\n transform\n };\n}\nlet colorNames;\nfunction injectColorNames(names) {\n colorNames = names;\n}\nlet requestFrame = cb => typeof window !== 'undefined' ? window.requestAnimationFrame(cb) : -1;\nlet cancelFrame = id => {\n typeof window !== 'undefined' && window.cancelAnimationFrame(id);\n};\nfunction injectFrame(raf, caf) {\n requestFrame = raf;\n cancelFrame = caf;\n}\nlet interpolation;\nfunction injectStringInterpolator(fn) {\n interpolation = fn;\n}\nlet now = () => Date.now();\nfunction injectNow(nowFn) {\n now = nowFn;\n}\nlet defaultElement;\nfunction injectDefaultElement(el) {\n defaultElement = el;\n}\nlet animatedApi = node => node.current;\nfunction injectAnimatedApi(fn) {\n animatedApi = fn;\n}\nlet createAnimatedStyle;\nfunction injectCreateAnimatedStyle(factory) {\n createAnimatedStyle = factory;\n}\nlet manualFrameloop;\nfunction injectManualFrameloop(callback) {\n manualFrameloop = callback;\n}\n\nvar Globals = /*#__PURE__*/Object.freeze({\n get applyAnimatedValues () { return applyAnimatedValues; },\n injectApplyAnimatedValues: injectApplyAnimatedValues,\n get colorNames () { return colorNames; },\n injectColorNames: injectColorNames,\n get requestFrame () { return requestFrame; },\n get cancelFrame () { return cancelFrame; },\n injectFrame: injectFrame,\n get interpolation () { return interpolation; },\n injectStringInterpolator: injectStringInterpolator,\n get now () { return now; },\n injectNow: injectNow,\n get defaultElement () { return defaultElement; },\n injectDefaultElement: injectDefaultElement,\n get animatedApi () { return animatedApi; },\n injectAnimatedApi: injectAnimatedApi,\n get createAnimatedStyle () { return createAnimatedStyle; },\n injectCreateAnimatedStyle: injectCreateAnimatedStyle,\n get manualFrameloop () { return manualFrameloop; },\n injectManualFrameloop: injectManualFrameloop\n});\n\n/**\n * Wraps the `style` property with `AnimatedStyle`.\n */\n\nclass AnimatedProps extends AnimatedObject {\n constructor(props, callback) {\n super();\n this.update = void 0;\n this.payload = !props.style ? props : _extends({}, props, {\n style: createAnimatedStyle(props.style)\n });\n this.update = callback;\n this.attach();\n }\n\n}\n\nconst isFunctionComponent = val => is.fun(val) && !(val.prototype instanceof React.Component);\n\nconst createAnimatedComponent = Component => {\n const AnimatedComponent = forwardRef((props, ref) => {\n const forceUpdate = useForceUpdate();\n const mounted = useRef(true);\n const propsAnimated = useRef(null);\n const node = useRef(null);\n const attachProps = useCallback(props => {\n const oldPropsAnimated = propsAnimated.current;\n\n const callback = () => {\n let didUpdate = false;\n\n if (node.current) {\n didUpdate = applyAnimatedValues.fn(node.current, propsAnimated.current.getAnimatedValue());\n }\n\n if (!node.current || didUpdate === false) {\n // If no referenced node has been found, or the update target didn't have a\n // native-responder, then forceUpdate the animation ...\n forceUpdate();\n }\n };\n\n propsAnimated.current = new AnimatedProps(props, callback);\n oldPropsAnimated && oldPropsAnimated.detach();\n }, []);\n useEffect(() => () => {\n mounted.current = false;\n propsAnimated.current && propsAnimated.current.detach();\n }, []);\n useImperativeHandle(ref, () => animatedApi(node, mounted, forceUpdate));\n attachProps(props);\n\n const _getValue = propsAnimated.current.getValue(),\n scrollTop = _getValue.scrollTop,\n scrollLeft = _getValue.scrollLeft,\n animatedProps = _objectWithoutPropertiesLoose(_getValue, [\"scrollTop\", \"scrollLeft\"]); // Functions cannot have refs, see:\n // See: https://github.com/react-spring/react-spring/issues/569\n\n\n const refFn = isFunctionComponent(Component) ? undefined : childRef => node.current = handleRef(childRef, ref);\n return React.createElement(Component, _extends({}, animatedProps, {\n ref: refFn\n }));\n });\n return AnimatedComponent;\n};\n\nlet active = false;\nconst controllers = new Set();\n\nconst update = () => {\n if (!active) return false;\n let time = now();\n\n for (let controller of controllers) {\n let isActive = false;\n\n for (let configIdx = 0; configIdx < controller.configs.length; configIdx++) {\n let config = controller.configs[configIdx];\n let endOfAnimation, lastTime;\n\n for (let valIdx = 0; valIdx < config.animatedValues.length; valIdx++) {\n let animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude\n\n if (animation.done) continue;\n let from = config.fromValues[valIdx];\n let to = config.toValues[valIdx];\n let position = animation.lastPosition;\n let isAnimated = to instanceof Animated;\n let velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity;\n if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state\n\n if (config.immediate) {\n animation.setValue(to);\n animation.done = true;\n continue;\n } // Break animation when string values are involved\n\n\n if (typeof from === 'string' || typeof to === 'string') {\n animation.setValue(to);\n animation.done = true;\n continue;\n }\n\n if (config.duration !== void 0) {\n /** Duration easing */\n position = from + config.easing((time - animation.startTime) / config.duration) * (to - from);\n endOfAnimation = time >= animation.startTime + config.duration;\n } else if (config.decay) {\n /** Decay easing */\n position = from + velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - animation.startTime)));\n endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1;\n if (endOfAnimation) to = position;\n } else {\n /** Spring easing */\n lastTime = animation.lastTime !== void 0 ? animation.lastTime : time;\n velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end.\n\n if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/\n\n let numSteps = Math.floor(time - lastTime);\n\n for (let i = 0; i < numSteps; ++i) {\n let force = -config.tension * (position - to);\n let damping = -config.friction * velocity;\n let acceleration = (force + damping) / config.mass;\n velocity = velocity + acceleration * 1 / 1000;\n position = position + velocity * 1 / 1000;\n } // Conditions for stopping the spring animation\n\n\n let isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false;\n let isVelocity = Math.abs(velocity) <= config.precision;\n let isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true;\n endOfAnimation = isOvershooting || isVelocity && isDisplacement;\n animation.lastVelocity = velocity;\n animation.lastTime = time;\n } // Trails aren't done until their parents conclude\n\n\n if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false;\n\n if (endOfAnimation) {\n // Ensure that we end up with a round value\n if (animation.value !== to) position = to;\n animation.done = true;\n } else isActive = true;\n\n animation.setValue(position);\n animation.lastPosition = position;\n } // Keep track of updated values only when necessary\n\n\n if (controller.props.onFrame) controller.values[config.name] = config.interpolation.getValue();\n } // Update callbacks in the end of the frame\n\n\n if (controller.props.onFrame) controller.props.onFrame(controller.values); // Either call onEnd or next frame\n\n if (!isActive) {\n controllers.delete(controller);\n controller.stop(true);\n }\n } // Loop over as long as there are controllers ...\n\n\n if (controllers.size) {\n if (manualFrameloop) manualFrameloop();else requestFrame(update);\n } else {\n active = false;\n }\n\n return active;\n};\n\nconst start = controller => {\n if (!controllers.has(controller)) controllers.add(controller);\n\n if (!active) {\n active = true;\n if (manualFrameloop) requestFrame(manualFrameloop);else requestFrame(update);\n }\n};\n\nconst stop = controller => {\n if (controllers.has(controller)) controllers.delete(controller);\n};\n\nfunction createInterpolator(range, output, extrapolate) {\n if (typeof range === 'function') {\n return range;\n }\n\n if (Array.isArray(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n\n if (interpolation && typeof range.output[0] === 'string') {\n return interpolation(range);\n }\n\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n const easing = config.easing || (t => t);\n\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n}\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input; // Extrapolate\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range\n\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing\n\n result = easing(result); // Output Range\n\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n return i - 1;\n}\n\nclass AnimatedInterpolation extends AnimatedArray {\n constructor(parents, range, output, extrapolate) {\n super();\n this.calc = void 0;\n this.payload = parents instanceof AnimatedArray && !(parents instanceof AnimatedInterpolation) ? parents.getPayload() : Array.isArray(parents) ? parents : [parents];\n this.calc = createInterpolator(range, output, extrapolate);\n }\n\n getValue() {\n return this.calc(...this.payload.map(value => value.getValue()));\n }\n\n updateConfig(range, output, extrapolate) {\n this.calc = createInterpolator(range, output, extrapolate);\n }\n\n interpolate(range, output, extrapolate) {\n return new AnimatedInterpolation(this, range, output, extrapolate);\n }\n\n}\n\nconst interpolate$1 = (parents, range, output) => parents && new AnimatedInterpolation(parents, range, output);\n\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\n\n/** API\n * useChain(references, timeSteps, timeFrame)\n */\n\nfunction useChain(refs, timeSteps, timeFrame) {\n if (timeFrame === void 0) {\n timeFrame = 1000;\n }\n\n const previous = useRef();\n useEffect(() => {\n if (is.equ(refs, previous.current)) refs.forEach((_ref) => {\n let current = _ref.current;\n return current && current.start();\n });else if (timeSteps) {\n refs.forEach((_ref2, index) => {\n let current = _ref2.current;\n\n if (current) {\n const ctrls = current.controllers;\n\n if (ctrls.length) {\n const t = timeFrame * timeSteps[index];\n ctrls.forEach(ctrl => {\n ctrl.queue = ctrl.queue.map(e => _extends({}, e, {\n delay: e.delay + t\n }));\n ctrl.start();\n });\n }\n }\n });\n } else refs.reduce((q, _ref3, rI) => {\n let current = _ref3.current;\n return q = q.then(() => current.start());\n }, Promise.resolve());\n previous.current = refs;\n });\n}\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an AnimatedValue is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction addAnimatedStyles(node, styles) {\n if ('update' in node) {\n styles.add(node);\n } else {\n node.getChildren().forEach(child => addAnimatedStyles(child, styles));\n }\n}\n\nclass AnimatedValue extends Animated {\n constructor(_value) {\n var _this;\n\n super();\n _this = this;\n this.animatedStyles = new Set();\n this.value = void 0;\n this.startPosition = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.startTime = void 0;\n this.lastTime = void 0;\n this.done = false;\n\n this.setValue = function (value, flush) {\n if (flush === void 0) {\n flush = true;\n }\n\n _this.value = value;\n if (flush) _this.flush();\n };\n\n this.value = _value;\n this.startPosition = _value;\n this.lastPosition = _value;\n }\n\n flush() {\n if (this.animatedStyles.size === 0) {\n addAnimatedStyles(this, this.animatedStyles);\n }\n\n this.animatedStyles.forEach(animatedStyle => animatedStyle.update());\n }\n\n clearStyles() {\n this.animatedStyles.clear();\n }\n\n getValue() {\n return this.value;\n }\n\n interpolate(range, output, extrapolate) {\n return new AnimatedInterpolation(this, range, output, extrapolate);\n }\n\n}\n\nclass AnimatedValueArray extends AnimatedArray {\n constructor(values) {\n super();\n this.payload = values.map(n => new AnimatedValue(n));\n }\n\n setValue(value, flush) {\n if (flush === void 0) {\n flush = true;\n }\n\n if (Array.isArray(value)) {\n if (value.length === this.payload.length) {\n value.forEach((v, i) => this.payload[i].setValue(v, flush));\n }\n } else {\n this.payload.forEach(p => p.setValue(value, flush));\n }\n }\n\n getValue() {\n return this.payload.map(v => v.getValue());\n }\n\n interpolate(range, output) {\n return new AnimatedInterpolation(this, range, output);\n }\n\n}\n\nlet G = 0;\n\nclass Controller {\n constructor() {\n this.id = void 0;\n this.idle = true;\n this.hasChanged = false;\n this.guid = 0;\n this.local = 0;\n this.props = {};\n this.merged = {};\n this.animations = {};\n this.interpolations = {};\n this.values = {};\n this.configs = [];\n this.listeners = [];\n this.queue = [];\n this.localQueue = void 0;\n\n this.getValues = () => this.interpolations;\n\n this.id = G++;\n }\n /** update(props)\n * This function filters input props and creates an array of tasks which are executed in .start()\n * Each task is allowed to carry a delay, which means it can execute asnychroneously */\n\n\n update(args) {\n //this._id = n + this.id\n if (!args) return this; // Extract delay and the to-prop from props\n\n const _ref = interpolateTo(args),\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay,\n to = _ref.to,\n props = _objectWithoutPropertiesLoose(_ref, [\"delay\", \"to\"]);\n\n if (is.arr(to) || is.fun(to)) {\n // If config is either a function or an array queue it up as is\n this.queue.push(_extends({}, props, {\n delay,\n to\n }));\n } else if (to) {\n // Otherwise go through each key since it could be delayed individually\n let ops = {};\n Object.entries(to).forEach((_ref2) => {\n let k = _ref2[0],\n v = _ref2[1];\n\n // Fetch delay and create an entry, consisting of the to-props, the delay, and basic props\n const entry = _extends({\n to: {\n [k]: v\n },\n delay: callProp(delay, k)\n }, props);\n\n const previous = ops[entry.delay] && ops[entry.delay].to;\n ops[entry.delay] = _extends({}, ops[entry.delay], entry, {\n to: _extends({}, previous, entry.to)\n });\n });\n this.queue = Object.values(ops);\n } // Sort queue, so that async calls go last\n\n\n this.queue = this.queue.sort((a, b) => a.delay - b.delay); // Diff the reduced props immediately (they'll contain the from-prop and some config)\n\n this.diff(props);\n return this;\n }\n /** start(onEnd)\n * This function either executes a queue, if present, or starts the frameloop, which animates */\n\n\n start(onEnd) {\n // If a queue is present we must excecute it\n if (this.queue.length) {\n this.idle = false; // Updates can interrupt trailing queues, in that case we just merge values\n\n if (this.localQueue) {\n this.localQueue.forEach((_ref3) => {\n let _ref3$from = _ref3.from,\n from = _ref3$from === void 0 ? {} : _ref3$from,\n _ref3$to = _ref3.to,\n to = _ref3$to === void 0 ? {} : _ref3$to;\n if (is.obj(from)) this.merged = _extends({}, from, this.merged);\n if (is.obj(to)) this.merged = _extends({}, this.merged, to);\n });\n } // The guid helps us tracking frames, a new queue over an old one means an override\n // We discard async calls in that caseÍ\n\n\n const local = this.local = ++this.guid;\n const queue = this.localQueue = this.queue;\n this.queue = []; // Go through each entry and execute it\n\n queue.forEach((_ref4, index) => {\n let delay = _ref4.delay,\n props = _objectWithoutPropertiesLoose(_ref4, [\"delay\"]);\n\n const cb = finished => {\n if (index === queue.length - 1 && local === this.guid && finished) {\n this.idle = true;\n if (this.props.onRest) this.props.onRest(this.merged);\n }\n\n if (onEnd) onEnd();\n }; // Entries can be delayed, ansyc or immediate\n\n\n let async = is.arr(props.to) || is.fun(props.to);\n\n if (delay) {\n setTimeout(() => {\n if (local === this.guid) {\n if (async) this.runAsync(props, cb);else this.diff(props).start(cb);\n }\n }, delay);\n } else if (async) this.runAsync(props, cb);else this.diff(props).start(cb);\n });\n } // Otherwise we kick of the frameloop\n else {\n if (is.fun(onEnd)) this.listeners.push(onEnd);\n if (this.props.onStart) this.props.onStart();\n start(this);\n }\n\n return this;\n }\n\n stop(finished) {\n this.listeners.forEach(onEnd => onEnd(finished));\n this.listeners = [];\n return this;\n }\n /** Pause sets onEnd listeners free, but also removes the controller from the frameloop */\n\n\n pause(finished) {\n this.stop(true);\n if (finished) stop(this);\n return this;\n }\n\n runAsync(_ref5, onEnd) {\n var _this = this;\n\n let delay = _ref5.delay,\n props = _objectWithoutPropertiesLoose(_ref5, [\"delay\"]);\n\n const local = this.local; // If \"to\" is either a function or an array it will be processed async, therefor \"to\" should be empty right now\n // If the view relies on certain values \"from\" has to be present\n\n let queue = Promise.resolve(undefined);\n\n if (is.arr(props.to)) {\n for (let i = 0; i < props.to.length; i++) {\n const index = i;\n\n const fresh = _extends({}, props, interpolateTo(props.to[index]));\n\n if (is.arr(fresh.config)) fresh.config = fresh.config[index];\n queue = queue.then(() => {\n //this.stop()\n if (local === this.guid) return new Promise(r => this.diff(fresh).start(r));\n });\n }\n } else if (is.fun(props.to)) {\n let index = 0;\n let last;\n queue = queue.then(() => props.to( // next(props)\n p => {\n const fresh = _extends({}, props, interpolateTo(p));\n\n if (is.arr(fresh.config)) fresh.config = fresh.config[index];\n index++; //this.stop()\n\n if (local === this.guid) return last = new Promise(r => this.diff(fresh).start(r));\n return;\n }, // cancel()\n function (finished) {\n if (finished === void 0) {\n finished = true;\n }\n\n return _this.stop(finished);\n }).then(() => last));\n }\n\n queue.then(onEnd);\n }\n\n diff(props) {\n this.props = _extends({}, this.props, props);\n let _this$props = this.props,\n _this$props$from = _this$props.from,\n from = _this$props$from === void 0 ? {} : _this$props$from,\n _this$props$to = _this$props.to,\n to = _this$props$to === void 0 ? {} : _this$props$to,\n _this$props$config = _this$props.config,\n config = _this$props$config === void 0 ? {} : _this$props$config,\n reverse = _this$props.reverse,\n attach = _this$props.attach,\n reset = _this$props.reset,\n immediate = _this$props.immediate; // Reverse values when requested\n\n if (reverse) {\n var _ref6 = [to, from];\n from = _ref6[0];\n to = _ref6[1];\n } // This will collect all props that were ever set, reset merged props when necessary\n\n\n this.merged = _extends({}, from, this.merged, to);\n this.hasChanged = false; // Attachment handling, trailed springs can \"attach\" themselves to a previous spring\n\n let target = attach && attach(this); // Reduces input { name: value } pairs into animated values\n\n this.animations = Object.entries(this.merged).reduce((acc, _ref7) => {\n let name = _ref7[0],\n value = _ref7[1];\n // Issue cached entries, except on reset\n let entry = acc[name] || {}; // Figure out what the value is supposed to be\n\n const isNumber = is.num(value);\n const isString = is.str(value) && !value.startsWith('#') && !/\\d/.test(value) && !colorNames[value];\n const isArray = is.arr(value);\n const isInterpolation = !isNumber && !isArray && !isString;\n let fromValue = !is.und(from[name]) ? from[name] : value;\n let toValue = isNumber || isArray ? value : isString ? value : 1;\n let toConfig = callProp(config, name);\n if (target) toValue = target.animations[name].parent;\n let parent = entry.parent,\n interpolation$$1 = entry.interpolation,\n toValues = toArray(target ? toValue.getPayload() : toValue),\n animatedValues;\n let newValue = value;\n if (isInterpolation) newValue = interpolation({\n range: [0, 1],\n output: [value, value]\n })(1);\n let currentValue = interpolation$$1 && interpolation$$1.getValue(); // Change detection flags\n\n const isFirst = is.und(parent);\n const isActive = !isFirst && entry.animatedValues.some(v => !v.done);\n const currentValueDiffersFromGoal = !is.equ(newValue, currentValue);\n const hasNewGoal = !is.equ(newValue, entry.previous);\n const hasNewConfig = !is.equ(toConfig, entry.config); // Change animation props when props indicate a new goal (new value differs from previous one)\n // and current values differ from it. Config changes trigger a new update as well (though probably shouldn't?)\n\n if (reset || hasNewGoal && currentValueDiffersFromGoal || hasNewConfig) {\n // Convert regular values into animated values, ALWAYS re-use if possible\n if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedValueArray(fromValue);else if (isInterpolation) {\n let prev = entry.interpolation && entry.interpolation.calc(entry.parent.value);\n prev = prev !== void 0 && !reset ? prev : fromValue;\n\n if (entry.parent) {\n parent = entry.parent;\n parent.setValue(0, false);\n } else parent = new AnimatedValue(0);\n\n const range = {\n output: [prev, value]\n };\n\n if (entry.interpolation) {\n interpolation$$1 = entry.interpolation;\n entry.interpolation.updateConfig(range);\n } else interpolation$$1 = parent.interpolate(range);\n }\n toValues = toArray(target ? toValue.getPayload() : toValue);\n animatedValues = toArray(parent.getPayload());\n if (reset && !isInterpolation) parent.setValue(fromValue, false);\n this.hasChanged = true; // Reset animated values\n\n animatedValues.forEach(value => {\n value.startPosition = value.value;\n value.lastPosition = value.value;\n value.lastVelocity = isActive ? value.lastVelocity : undefined;\n value.lastTime = isActive ? value.lastTime : undefined;\n value.startTime = now();\n value.done = false;\n value.animatedStyles.clear();\n }); // Set immediate values\n\n if (callProp(immediate, name)) {\n parent.setValue(isInterpolation ? toValue : value, false);\n }\n\n return _extends({}, acc, {\n [name]: _extends({}, entry, {\n name,\n parent,\n interpolation: interpolation$$1,\n animatedValues,\n toValues,\n previous: newValue,\n config: toConfig,\n fromValues: toArray(parent.getValue()),\n immediate: callProp(immediate, name),\n initialVelocity: withDefault(toConfig.velocity, 0),\n clamp: withDefault(toConfig.clamp, false),\n precision: withDefault(toConfig.precision, 0.01),\n tension: withDefault(toConfig.tension, 170),\n friction: withDefault(toConfig.friction, 26),\n mass: withDefault(toConfig.mass, 1),\n duration: toConfig.duration,\n easing: withDefault(toConfig.easing, t => t),\n decay: toConfig.decay\n })\n });\n } else {\n if (!currentValueDiffersFromGoal) {\n // So ... the current target value (newValue) appears to be different from the previous value,\n // which normally constitutes an update, but the actual value (currentValue) matches the target!\n // In order to resolve this without causing an animation update we silently flag the animation as done,\n // which it technically is. Interpolations also needs a config update with their target set to 1.\n if (isInterpolation) {\n parent.setValue(1, false);\n interpolation$$1.updateConfig({\n output: [newValue, newValue]\n });\n }\n\n parent.done = true;\n this.hasChanged = true;\n return _extends({}, acc, {\n [name]: _extends({}, acc[name], {\n previous: newValue\n })\n });\n }\n\n return acc;\n }\n }, this.animations);\n\n if (this.hasChanged) {\n // Make animations available to frameloop\n this.configs = Object.values(this.animations);\n this.values = {};\n this.interpolations = {};\n\n for (let key in this.animations) {\n this.interpolations[key] = this.animations[key].interpolation;\n this.values[key] = this.animations[key].interpolation.getValue();\n }\n }\n\n return this;\n }\n\n destroy() {\n this.stop();\n this.props = {};\n this.merged = {};\n this.animations = {};\n this.interpolations = {};\n this.values = {};\n this.configs = [];\n this.local = 0;\n }\n\n}\n\n/** API\n * const props = useSprings(number, [{ ... }, { ... }, ...])\n * const [props, set] = useSprings(number, (i, controller) => ({ ... }))\n */\n\nconst useSprings = (length, props) => {\n const mounted = useRef(false);\n const ctrl = useRef();\n const isFn = is.fun(props); // The controller maintains the animation values, starts and stops animations\n\n const _useMemo = useMemo(() => {\n // Remove old controllers\n if (ctrl.current) {\n ctrl.current.map(c => c.destroy());\n ctrl.current = undefined;\n }\n\n let ref;\n return [new Array(length).fill().map((_, i) => {\n const ctrl = new Controller();\n const newProps = isFn ? callProp(props, i, ctrl) : props[i];\n if (i === 0) ref = newProps.ref;\n ctrl.update(newProps);\n if (!ref) ctrl.start();\n return ctrl;\n }), ref];\n }, [length]),\n controllers = _useMemo[0],\n ref = _useMemo[1];\n\n ctrl.current = controllers; // The hooks reference api gets defined here ...\n\n const api = useImperativeHandle(ref, () => ({\n start: () => Promise.all(ctrl.current.map(c => new Promise(r => c.start(r)))),\n stop: finished => ctrl.current.forEach(c => c.stop(finished)),\n\n get controllers() {\n return ctrl.current;\n }\n\n })); // This function updates the controllers\n\n const updateCtrl = useMemo(() => updateProps => ctrl.current.map((c, i) => {\n c.update(isFn ? callProp(updateProps, i, c) : updateProps[i]);\n if (!ref) c.start();\n }), [length]); // Update controller if props aren't functional\n\n useEffect(() => {\n if (mounted.current) {\n if (!isFn) updateCtrl(props);\n } else if (!ref) ctrl.current.forEach(c => c.start());\n }); // Update mounted flag and destroy controller on unmount\n\n useEffect(() => (mounted.current = true, () => ctrl.current.forEach(c => c.destroy())), []); // Return animated props, or, anim-props + the update-setter above\n\n const propValues = ctrl.current.map(c => c.getValues());\n return isFn ? [propValues, updateCtrl, finished => ctrl.current.forEach(c => c.pause(finished))] : propValues;\n};\n\n/** API\n * const props = useSpring({ ... })\n * const [props, set] = useSpring(() => ({ ... }))\n */\n\nconst useSpring = props => {\n const isFn = is.fun(props);\n\n const _useSprings = useSprings(1, isFn ? props : [props]),\n result = _useSprings[0],\n set = _useSprings[1],\n pause = _useSprings[2];\n\n return isFn ? [result[0], set, pause] : result;\n};\n\n/** API\n * const trails = useTrail(number, { ... })\n * const [trails, set] = useTrail(number, () => ({ ... }))\n */\n\nconst useTrail = (length, props) => {\n const mounted = useRef(false);\n const isFn = is.fun(props);\n const updateProps = callProp(props);\n const instances = useRef();\n\n const _useSprings = useSprings(length, (i, ctrl) => {\n if (i === 0) instances.current = [];\n instances.current.push(ctrl);\n return _extends({}, updateProps, {\n config: callProp(updateProps.config, i),\n attach: i > 0 && (() => instances.current[i - 1])\n });\n }),\n result = _useSprings[0],\n set = _useSprings[1],\n pause = _useSprings[2]; // Set up function to update controller\n\n\n const updateCtrl = useMemo(() => props => set((i, ctrl) => {\n const last = props.reverse ? i === 0 : length - 1 === i;\n const attachIdx = props.reverse ? i + 1 : i - 1;\n const attachController = instances.current[attachIdx];\n return _extends({}, props, {\n config: callProp(props.config || updateProps.config, i),\n attach: attachController && (() => attachController)\n });\n }), [length, updateProps.reverse]); // Update controller if props aren't functional\n\n useEffect(() => void (mounted.current && !isFn && updateCtrl(props))); // Update mounted flag and destroy controller on unmount\n\n useEffect(() => void (mounted.current = true), []);\n return isFn ? [result, updateCtrl, pause] : result;\n};\n\n/** API\n * const transitions = useTransition(items, itemKeys, { ... })\n * const [transitions, update] = useTransition(items, itemKeys, () => ({ ... }))\n */\n\nlet guid = 0;\nconst ENTER = 'enter';\nconst LEAVE = 'leave';\nconst UPDATE = 'update';\n\nconst mapKeys = (items, keys) => (typeof keys === 'function' ? items.map(keys) : toArray(keys)).map(String);\n\nconst get = props => {\n let items = props.items,\n _props$keys = props.keys,\n keys = _props$keys === void 0 ? item => item : _props$keys,\n rest = _objectWithoutPropertiesLoose(props, [\"items\", \"keys\"]);\n\n items = toArray(items !== void 0 ? items : null);\n return _extends({\n items,\n keys: mapKeys(items, keys)\n }, rest);\n};\n\nfunction useTransition(input, keyTransform, config) {\n const props = _extends({\n items: input,\n keys: keyTransform || (i => i)\n }, config);\n\n const _get = get(props),\n _get$lazy = _get.lazy,\n lazy = _get$lazy === void 0 ? false : _get$lazy,\n _get$unique = _get.unique,\n _get$reset = _get.reset,\n reset = _get$reset === void 0 ? false : _get$reset,\n enter = _get.enter,\n leave = _get.leave,\n update = _get.update,\n onDestroyed = _get.onDestroyed,\n keys = _get.keys,\n items = _get.items,\n onFrame = _get.onFrame,\n _onRest = _get.onRest,\n onStart = _get.onStart,\n ref = _get.ref,\n extra = _objectWithoutPropertiesLoose(_get, [\"lazy\", \"unique\", \"reset\", \"enter\", \"leave\", \"update\", \"onDestroyed\", \"keys\", \"items\", \"onFrame\", \"onRest\", \"onStart\", \"ref\"]);\n\n const forceUpdate = useForceUpdate();\n const mounted = useRef(false);\n const state = useRef({\n mounted: false,\n first: true,\n deleted: [],\n current: {},\n transitions: [],\n prevProps: {},\n paused: !!props.ref,\n instances: !mounted.current && new Map(),\n forceUpdate\n });\n useImperativeHandle(props.ref, () => ({\n start: () => Promise.all(Array.from(state.current.instances).map((_ref) => {\n let c = _ref[1];\n return new Promise(r => c.start(r));\n })),\n stop: finished => Array.from(state.current.instances).forEach((_ref2) => {\n let c = _ref2[1];\n return c.stop(finished);\n }),\n\n get controllers() {\n return Array.from(state.current.instances).map((_ref3) => {\n let c = _ref3[1];\n return c;\n });\n }\n\n })); // Update state\n\n state.current = diffItems(state.current, props);\n\n if (state.current.changed) {\n // Update state\n state.current.transitions.forEach(transition => {\n const slot = transition.slot,\n from = transition.from,\n to = transition.to,\n config = transition.config,\n trail = transition.trail,\n key = transition.key,\n item = transition.item;\n if (!state.current.instances.has(key)) state.current.instances.set(key, new Controller()); // update the map object\n\n const ctrl = state.current.instances.get(key);\n\n const newProps = _extends({}, extra, {\n to,\n from,\n config,\n ref,\n onRest: values => {\n if (state.current.mounted) {\n if (transition.destroyed) {\n // If no ref is given delete destroyed items immediately\n if (!ref && !lazy) cleanUp(state, key);\n if (onDestroyed) onDestroyed(item);\n } // A transition comes to rest once all its springs conclude\n\n\n const curInstances = Array.from(state.current.instances);\n const active = curInstances.some((_ref4) => {\n let c = _ref4[1];\n return !c.idle;\n });\n if (!active && (ref || lazy) && state.current.deleted.length > 0) cleanUp(state);\n if (_onRest) _onRest(item, slot, values);\n }\n },\n onStart: onStart && (() => onStart(item, slot)),\n onFrame: onFrame && (values => onFrame(item, slot, values)),\n delay: trail,\n reset: reset && slot === ENTER // Update controller\n\n });\n\n ctrl.update(newProps);\n if (!state.current.paused) ctrl.start();\n });\n }\n\n useEffect(() => {\n state.current.mounted = mounted.current = true;\n return () => {\n state.current.mounted = mounted.current = false;\n Array.from(state.current.instances).map((_ref5) => {\n let c = _ref5[1];\n return c.destroy();\n });\n state.current.instances.clear();\n };\n }, []);\n return state.current.transitions.map((_ref6) => {\n let item = _ref6.item,\n slot = _ref6.slot,\n key = _ref6.key;\n return {\n item,\n key,\n state: slot,\n props: state.current.instances.get(key).getValues()\n };\n });\n}\n\nfunction cleanUp(state, filterKey) {\n const deleted = state.current.deleted;\n\n for (let _ref7 of deleted) {\n let key = _ref7.key;\n\n const filter = t => t.key !== key;\n\n if (is.und(filterKey) || filterKey === key) {\n state.current.instances.delete(key);\n state.current.transitions = state.current.transitions.filter(filter);\n state.current.deleted = state.current.deleted.filter(filter);\n }\n }\n\n state.current.forceUpdate();\n}\n\nfunction diffItems(_ref8, props) {\n let first = _ref8.first,\n prevProps = _ref8.prevProps,\n state = _objectWithoutPropertiesLoose(_ref8, [\"first\", \"prevProps\"]);\n\n let _get2 = get(props),\n items = _get2.items,\n keys = _get2.keys,\n initial = _get2.initial,\n from = _get2.from,\n enter = _get2.enter,\n leave = _get2.leave,\n update = _get2.update,\n _get2$trail = _get2.trail,\n trail = _get2$trail === void 0 ? 0 : _get2$trail,\n unique = _get2.unique,\n config = _get2.config,\n _get2$order = _get2.order,\n order = _get2$order === void 0 ? [ENTER, LEAVE, UPDATE] : _get2$order;\n\n let _get3 = get(prevProps),\n _keys = _get3.keys,\n _items = _get3.items;\n\n let current = _extends({}, state.current);\n\n let deleted = [...state.deleted]; // Compare next keys with current keys\n\n let currentKeys = Object.keys(current);\n let currentSet = new Set(currentKeys);\n let nextSet = new Set(keys);\n let added = keys.filter(item => !currentSet.has(item));\n let removed = state.transitions.filter(item => !item.destroyed && !nextSet.has(item.originalKey)).map(i => i.originalKey);\n let updated = keys.filter(item => currentSet.has(item));\n let delay = -trail;\n\n while (order.length) {\n const changeType = order.shift();\n\n switch (changeType) {\n case ENTER:\n {\n added.forEach((key, index) => {\n // In unique mode, remove fading out transitions if their key comes in again\n if (unique && deleted.find(d => d.originalKey === key)) deleted = deleted.filter(t => t.originalKey !== key);\n const keyIndex = keys.indexOf(key);\n const item = items[keyIndex];\n const slot = first && initial !== void 0 ? 'initial' : ENTER;\n current[key] = {\n slot,\n originalKey: key,\n key: unique ? String(key) : guid++,\n item,\n trail: delay = delay + trail,\n config: callProp(config, item, slot),\n from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item),\n to: callProp(enter, item)\n };\n });\n break;\n }\n\n case LEAVE:\n {\n removed.forEach(key => {\n const keyIndex = _keys.indexOf(key);\n\n const item = _items[keyIndex];\n const slot = LEAVE;\n deleted.unshift(_extends({}, current[key], {\n slot,\n destroyed: true,\n left: _keys[Math.max(0, keyIndex - 1)],\n right: _keys[Math.min(_keys.length, keyIndex + 1)],\n trail: delay = delay + trail,\n config: callProp(config, item, slot),\n to: callProp(leave, item)\n }));\n delete current[key];\n });\n break;\n }\n\n case UPDATE:\n {\n updated.forEach(key => {\n const keyIndex = keys.indexOf(key);\n const item = items[keyIndex];\n const slot = UPDATE;\n current[key] = _extends({}, current[key], {\n item,\n slot,\n trail: delay = delay + trail,\n config: callProp(config, item, slot),\n to: callProp(update, item)\n });\n });\n break;\n }\n }\n }\n\n let out = keys.map(key => current[key]); // This tries to restore order for deleted items by finding their last known siblings\n // only using the left sibling to keep order placement consistent for all deleted items\n\n deleted.forEach((_ref9) => {\n let left = _ref9.left,\n right = _ref9.right,\n item = _objectWithoutPropertiesLoose(_ref9, [\"left\", \"right\"]);\n\n let pos; // Was it the element on the left, if yes, move there ...\n\n if ((pos = out.findIndex(t => t.originalKey === left)) !== -1) pos += 1; // And if nothing else helps, move it to the start ¯\\_(ツ)_/¯\n\n pos = Math.max(0, pos);\n out = [...out.slice(0, pos), item, ...out.slice(pos)];\n });\n return _extends({}, state, {\n changed: added.length || removed.length || updated.length,\n first: first && added.length === 0,\n transitions: out,\n current,\n deleted,\n prevProps: props\n });\n}\n\nclass AnimatedStyle extends AnimatedObject {\n constructor(style) {\n if (style === void 0) {\n style = {};\n }\n\n super();\n\n if (style.transform && !(style.transform instanceof Animated)) {\n style = applyAnimatedValues.transform(style);\n }\n\n this.payload = style;\n }\n\n}\n\n// http://www.w3.org/TR/css3-color/#svg-color\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\n// const INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\n/*\nhttps://github.com/react-community/normalize-css-color\n\nBSD 3-Clause License\n\nCopyright (c) 2016, React Community\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nfunction normalizeColor(color) {\n let match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n } // Ordered based on occurrences on Facebook codebase\n\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n if (colors.hasOwnProperty(color)) return colors[color];\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n 0x000000ff) >>> // a\n 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n parse1(match[4])) >>> // a\n 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n 'ff', // a\n 16) >>> 0;\n } // https://drafts.csswg.org/css-color-4/#hex-notation\n\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n match[4] + match[4], // a\n 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) | 0x000000ff) >>> // a\n 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) | parse1(match[4])) >>> // a\n 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n // parseFloat conveniently ignores the final %\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n} // Problem: https://github.com/animatedjs/animated/pull/102\n// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662\n\n\nconst stringShapeRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g; // Covers rgb, rgba, hsl, hsla\n// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e\n\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi; // Covers color names (transparent, blue, etc.)\n\nconst colorNamesRegex = new RegExp(`(${Object.keys(colors).join('|')})`, 'g');\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n * 0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows\n */\n\nconst createStringInterpolator = config => {\n // Replace colors with rgba\n const outputRange = config.output.map(rangeValue => rangeValue.replace(colorRegex, colorToRgba)).map(rangeValue => rangeValue.replace(colorNamesRegex, colorToRgba));\n const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n value.match(stringShapeRegex).forEach((number, i) => outputRanges[i].push(+number));\n });\n const interpolations = outputRange[0].match(stringShapeRegex).map((_value, i) => createInterpolator(_extends({}, config, {\n output: outputRanges[i]\n })));\n return input => {\n let i = 0;\n return outputRange[0] // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n .replace(stringShapeRegex, () => interpolations[i++](input)) // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n // round the opacity (4th column).\n .replace(/rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi, (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`);\n };\n};\n\nlet isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n if (value == null || typeof value === 'boolean' || value === '') return '';\n if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n\n return ('' + value).trim();\n}\n\nconst attributeCache = {};\ninjectCreateAnimatedStyle(style => new AnimatedStyle(style));\ninjectDefaultElement('div');\ninjectStringInterpolator(createStringInterpolator);\ninjectColorNames(colors);\ninjectApplyAnimatedValues((instance, props) => {\n if (instance.nodeType && instance.setAttribute !== undefined) {\n const style = props.style,\n children = props.children,\n scrollTop = props.scrollTop,\n scrollLeft = props.scrollLeft,\n attributes = _objectWithoutPropertiesLoose(props, [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"]);\n\n const filter = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n if (scrollTop !== void 0) instance.scrollTop = scrollTop;\n if (scrollLeft !== void 0) instance.scrollLeft = scrollLeft; // Set textContent, if children is an animatable value\n\n if (children !== void 0) instance.textContent = children; // Set styles ...\n\n for (let styleName in style) {\n if (!style.hasOwnProperty(styleName)) continue;\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = dangerousStyleValue(styleName, style[styleName], isCustomProperty);\n if (styleName === 'float') styleName = 'cssFloat';\n if (isCustomProperty) instance.style.setProperty(styleName, styleValue);else instance.style[styleName] = styleValue;\n } // Set attributes ...\n\n\n for (let name in attributes) {\n // Attributes are written in dash case\n const dashCase = filter ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase()));\n if (typeof instance.getAttribute(dashCase) !== 'undefined') instance.setAttribute(dashCase, attributes[name]);\n }\n\n return;\n } else return false;\n}, style => style);\n\nconst domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n// Extend animated with all the available THREE elements\nconst apply = merge(createAnimatedComponent, false);\nconst extendedAnimated = apply(domElements);\n\nexport { apply, config, update, extendedAnimated as animated, extendedAnimated as a, interpolate$1 as interpolate, Globals, useSpring, useTrail, useTransition, useChain, useSprings };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '14', height: '11', viewBox: '0 0 14 11' },\n _react2.default.createElement('path', { d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0', fill: '#fff', fillRule: 'evenodd' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _check = require('./check');\n\nvar _check2 = _interopRequireDefault(_check);\n\nvar _x = require('./x');\n\nvar _x2 = _interopRequireDefault(_x);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggle = function (_PureComponent) {\n _inherits(Toggle, _PureComponent);\n\n function Toggle(props) {\n _classCallCheck(this, Toggle);\n\n var _this = _possibleConstructorReturn(this, (Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call(this, props));\n\n _this.handleClick = _this.handleClick.bind(_this);\n _this.handleTouchStart = _this.handleTouchStart.bind(_this);\n _this.handleTouchMove = _this.handleTouchMove.bind(_this);\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_this);\n _this.handleFocus = _this.handleFocus.bind(_this);\n _this.handleBlur = _this.handleBlur.bind(_this);\n _this.previouslyChecked = !!(props.checked || props.defaultChecked);\n _this.state = {\n checked: !!(props.checked || props.defaultChecked),\n hasFocus: false\n };\n return _this;\n }\n\n _createClass(Toggle, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.checked !== this.props.checked) {\n // Disable linting rule here since this usage of setState inside\n // componentDidUpdate is OK; see\n // https://reactjs.org/docs/react-component.html#componentdidupdate\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ checked: !!this.props.checked });\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(event) {\n if (this.props.disabled) {\n return;\n }\n var checkbox = this.input;\n if (event.target !== checkbox && !this.moved) {\n this.previouslyChecked = checkbox.checked;\n event.preventDefault();\n checkbox.focus();\n checkbox.click();\n return;\n }\n\n var checked = this.props.hasOwnProperty('checked') ? this.props.checked : checkbox.checked;\n\n this.setState({ checked: checked });\n }\n }, {\n key: 'handleTouchStart',\n value: function handleTouchStart(event) {\n if (this.props.disabled) {\n return;\n }\n this.startX = (0, _util.pointerCoord)(event).x;\n this.activated = true;\n }\n }, {\n key: 'handleTouchMove',\n value: function handleTouchMove(event) {\n if (!this.activated) return;\n this.moved = true;\n\n if (this.startX) {\n var currentX = (0, _util.pointerCoord)(event).x;\n if (this.state.checked && currentX + 15 < this.startX) {\n this.setState({ checked: false });\n this.startX = currentX;\n this.activated = true;\n } else if (currentX - 15 > this.startX) {\n this.setState({ checked: true });\n this.startX = currentX;\n this.activated = currentX < this.startX + 5;\n }\n }\n }\n }, {\n key: 'handleTouchEnd',\n value: function handleTouchEnd(event) {\n if (!this.moved) return;\n var checkbox = this.input;\n event.preventDefault();\n\n if (this.startX) {\n var endX = (0, _util.pointerCoord)(event).x;\n if (this.previouslyChecked === true && this.startX + 4 > endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: false });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n } else if (this.startX - 4 < endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: true });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n }\n\n this.activated = false;\n this.startX = null;\n this.moved = false;\n }\n }\n }, {\n key: 'handleFocus',\n value: function handleFocus(event) {\n var onFocus = this.props.onFocus;\n\n\n if (onFocus) {\n onFocus(event);\n }\n\n this.setState({ hasFocus: true });\n }\n }, {\n key: 'handleBlur',\n value: function handleBlur(event) {\n var onBlur = this.props.onBlur;\n\n\n if (onBlur) {\n onBlur(event);\n }\n\n this.setState({ hasFocus: false });\n }\n }, {\n key: 'getIcon',\n value: function getIcon(type) {\n var icons = this.props.icons;\n\n if (!icons) {\n return null;\n }\n return icons[type] === undefined ? Toggle.defaultProps.icons[type] : icons[type];\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n _icons = _props.icons,\n inputProps = _objectWithoutProperties(_props, ['className', 'icons']);\n\n var classes = (0, _classnames2.default)('react-toggle', {\n 'react-toggle--checked': this.state.checked,\n 'react-toggle--focus': this.state.hasFocus,\n 'react-toggle--disabled': this.props.disabled\n }, className);\n\n return _react2.default.createElement(\n 'div',\n { className: classes,\n onClick: this.handleClick,\n onTouchStart: this.handleTouchStart,\n onTouchMove: this.handleTouchMove,\n onTouchEnd: this.handleTouchEnd },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track' },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-check' },\n this.getIcon('checked')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-x' },\n this.getIcon('unchecked')\n )\n ),\n _react2.default.createElement('div', { className: 'react-toggle-thumb' }),\n _react2.default.createElement('input', _extends({}, inputProps, {\n ref: function ref(_ref) {\n _this2.input = _ref;\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n className: 'react-toggle-screenreader-only',\n type: 'checkbox' }))\n );\n }\n }]);\n\n return Toggle;\n}(_react.PureComponent);\n\nexports.default = Toggle;\n\n\nToggle.displayName = 'Toggle';\n\nToggle.defaultProps = {\n icons: {\n checked: _react2.default.createElement(_check2.default, null),\n unchecked: _react2.default.createElement(_x2.default, null)\n }\n};\n\nToggle.propTypes = {\n checked: _propTypes2.default.bool,\n disabled: _propTypes2.default.bool,\n defaultChecked: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n onFocus: _propTypes2.default.func,\n onBlur: _propTypes2.default.func,\n className: _propTypes2.default.string,\n name: _propTypes2.default.string,\n value: _propTypes2.default.string,\n id: _propTypes2.default.string,\n 'aria-labelledby': _propTypes2.default.string,\n 'aria-label': _propTypes2.default.string,\n icons: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.shape({\n checked: _propTypes2.default.node,\n unchecked: _propTypes2.default.node\n })])\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pointerCoord = pointerCoord;\n// Copyright 2015-present Drifty Co.\n// http://drifty.com/\n// from: https://github.com/driftyco/ionic/blob/master/src/util/dom.ts\n\nfunction pointerCoord(event) {\n // get coordinates for either a mouse click\n // or a touch depending on the given event\n if (event) {\n var changedTouches = event.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n var pageX = event.pageX;\n if (pageX !== undefined) {\n return { x: pageX, y: event.pageY };\n }\n }\n return { x: 0, y: 0 };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '10', height: '10', viewBox: '0 0 10 10' },\n _react2.default.createElement('path', { d: 'M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12', fill: '#fff', fillRule: 'evenodd' })\n );\n};","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","function ___$insertStyle(css) {\n if (!css) {\n return;\n }\n if (typeof window === 'undefined') {\n return;\n }\n\n var style = document.createElement('style');\n\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n document.head.appendChild(style);\n return css;\n}\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 } from 'uuid';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar CONSTANT = {\n GLOBAL: {\n HIDE: '__react_tooltip_hide_event',\n REBUILD: '__react_tooltip_rebuild_event',\n SHOW: '__react_tooltip_show_event'\n }\n};\n\n/**\n * Static methods for react-tooltip\n */\n\nvar dispatchGlobalEvent = function dispatchGlobalEvent(eventName, opts) {\n // Compatible with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var event;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, {\n detail: opts\n });\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, false, true, opts);\n }\n\n window.dispatchEvent(event);\n};\n\nfunction staticMethods (target) {\n /**\n * Hide all tooltip\n * @trigger ReactTooltip.hide()\n */\n target.hide = function (target) {\n dispatchGlobalEvent(CONSTANT.GLOBAL.HIDE, {\n target: target\n });\n };\n /**\n * Rebuild all tooltip\n * @trigger ReactTooltip.rebuild()\n */\n\n\n target.rebuild = function () {\n dispatchGlobalEvent(CONSTANT.GLOBAL.REBUILD);\n };\n /**\n * Show specific tooltip\n * @trigger ReactTooltip.show()\n */\n\n\n target.show = function (target) {\n dispatchGlobalEvent(CONSTANT.GLOBAL.SHOW, {\n target: target\n });\n };\n\n target.prototype.globalRebuild = function () {\n if (this.mount) {\n this.unbindListener();\n this.bindListener();\n }\n };\n\n target.prototype.globalShow = function (event) {\n if (this.mount) {\n var hasTarget = event && event.detail && event.detail.target && true || false; // Create a fake event, specific show will limit the type to `solid`\n // only `float` type cares e.clientX e.clientY\n\n this.showTooltip({\n currentTarget: hasTarget && event.detail.target\n }, true);\n }\n };\n\n target.prototype.globalHide = function (event) {\n if (this.mount) {\n var hasTarget = event && event.detail && event.detail.target && true || false;\n this.hideTooltip({\n currentTarget: hasTarget && event.detail.target\n }, hasTarget);\n }\n };\n}\n\n/**\n * Events that should be bound to the window\n */\nfunction windowListener (target) {\n target.prototype.bindWindowEvents = function (resizeHide) {\n // ReactTooltip.hide\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.addEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide, false); // ReactTooltip.rebuild\n\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.addEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild, false); // ReactTooltip.show\n\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.addEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow, false); // Resize\n\n if (resizeHide) {\n window.removeEventListener('resize', this.onWindowResize);\n window.addEventListener('resize', this.onWindowResize, false);\n }\n };\n\n target.prototype.unbindWindowEvents = function () {\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * invoked by resize event of window\n */\n\n\n target.prototype.onWindowResize = function () {\n if (!this.mount) return;\n this.hideTooltip();\n };\n}\n\n/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\nvar checkStatus = function checkStatus(dataEventOff, e) {\n var show = this.state.show;\n var id = this.props.id;\n var isCapture = this.isCapture(e.currentTarget);\n var currentItem = e.currentTarget.getAttribute('currentItem');\n if (!isCapture) e.stopPropagation();\n\n if (show && currentItem === 'true') {\n if (!dataEventOff) this.hideTooltip(e);\n } else {\n e.currentTarget.setAttribute('currentItem', 'true');\n setUntargetItems(e.currentTarget, this.getTargetArray(id));\n this.showTooltip(e);\n }\n};\n\nvar setUntargetItems = function setUntargetItems(currentTarget, targetArray) {\n for (var i = 0; i < targetArray.length; i++) {\n if (currentTarget !== targetArray[i]) {\n targetArray[i].setAttribute('currentItem', 'false');\n } else {\n targetArray[i].setAttribute('currentItem', 'true');\n }\n }\n};\n\nvar customListeners = {\n id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n set: function set(target, event, listener) {\n if (this.id in target) {\n var map = target[this.id];\n map[event] = listener;\n } else {\n // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n Object.defineProperty(target, this.id, {\n configurable: true,\n value: _defineProperty({}, event, listener)\n });\n }\n },\n get: function get(target, event) {\n var map = target[this.id];\n\n if (map !== undefined) {\n return map[event];\n }\n }\n};\nfunction customEvent (target) {\n target.prototype.isCustomEvent = function (ele) {\n var event = this.state.event;\n return event || !!ele.getAttribute('data-event');\n };\n /* Bind listener for custom event */\n\n\n target.prototype.customBindListener = function (ele) {\n var _this = this;\n\n var _this$state = this.state,\n event = _this$state.event,\n eventOff = _this$state.eventOff;\n var dataEvent = ele.getAttribute('data-event') || event;\n var dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n dataEvent.split(' ').forEach(function (event) {\n ele.removeEventListener(event, customListeners.get(ele, event));\n var customListener = checkStatus.bind(_this, dataEventOff);\n customListeners.set(ele, event, customListener);\n ele.addEventListener(event, customListener, false);\n });\n\n if (dataEventOff) {\n dataEventOff.split(' ').forEach(function (event) {\n ele.removeEventListener(event, _this.hideTooltip);\n ele.addEventListener(event, _this.hideTooltip, false);\n });\n }\n };\n /* Unbind listener for custom event */\n\n\n target.prototype.customUnbindListener = function (ele) {\n var _this$state2 = this.state,\n event = _this$state2.event,\n eventOff = _this$state2.eventOff;\n var dataEvent = event || ele.getAttribute('data-event');\n var dataEventOff = eventOff || ele.getAttribute('data-event-off');\n ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n };\n}\n\n/**\n * Util method to judge if it should follow capture model\n */\nfunction isCapture (target) {\n target.prototype.isCapture = function (currentTarget) {\n return currentTarget && currentTarget.getAttribute('data-iscapture') === 'true' || this.props.isCapture || false;\n };\n}\n\n/**\n * Util method to get effect\n */\nfunction getEffect (target) {\n target.prototype.getEffect = function (currentTarget) {\n var dataEffect = currentTarget.getAttribute('data-effect');\n return dataEffect || this.props.effect || 'float';\n };\n}\n\n/**\n * Util method to get effect\n */\n\nvar makeProxy = function makeProxy(e) {\n var proxy = {};\n\n for (var key in e) {\n if (typeof e[key] === 'function') {\n proxy[key] = e[key].bind(e);\n } else {\n proxy[key] = e[key];\n }\n }\n\n return proxy;\n};\n\nvar bodyListener = function bodyListener(callback, options, e) {\n var _options$respectEffec = options.respectEffect,\n respectEffect = _options$respectEffec === void 0 ? false : _options$respectEffec,\n _options$customEvent = options.customEvent,\n customEvent = _options$customEvent === void 0 ? false : _options$customEvent;\n var id = this.props.id;\n var tip = e.target.getAttribute('data-tip') || null;\n var forId = e.target.getAttribute('data-for') || null;\n var target = e.target;\n\n if (this.isCustomEvent(target) && !customEvent) {\n return;\n }\n\n var isTargetBelongsToTooltip = id == null && forId == null || forId === id;\n\n if (tip != null && (!respectEffect || this.getEffect(target) === 'float') && isTargetBelongsToTooltip) {\n var proxy = makeProxy(e);\n proxy.currentTarget = target;\n callback(proxy);\n }\n};\n\nvar findCustomEvents = function findCustomEvents(targetArray, dataAttribute) {\n var events = {};\n targetArray.forEach(function (target) {\n var event = target.getAttribute(dataAttribute);\n if (event) event.split(' ').forEach(function (event) {\n return events[event] = true;\n });\n });\n return events;\n};\n\nvar getBody = function getBody() {\n return document.getElementsByTagName('body')[0];\n};\n\nfunction bodyMode (target) {\n target.prototype.isBodyMode = function () {\n return !!this.props.bodyMode;\n };\n\n target.prototype.bindBodyListener = function (targetArray) {\n var _this = this;\n\n var _this$state = this.state,\n event = _this$state.event,\n eventOff = _this$state.eventOff,\n possibleCustomEvents = _this$state.possibleCustomEvents,\n possibleCustomEventsOff = _this$state.possibleCustomEventsOff;\n var body = getBody();\n var customEvents = findCustomEvents(targetArray, 'data-event');\n var customEventsOff = findCustomEvents(targetArray, 'data-event-off');\n if (event != null) customEvents[event] = true;\n if (eventOff != null) customEventsOff[eventOff] = true;\n possibleCustomEvents.split(' ').forEach(function (event) {\n return customEvents[event] = true;\n });\n possibleCustomEventsOff.split(' ').forEach(function (event) {\n return customEventsOff[event] = true;\n });\n this.unbindBodyListener(body);\n var listeners = this.bodyModeListeners = {};\n\n if (event == null) {\n listeners.mouseover = bodyListener.bind(this, this.showTooltip, {});\n listeners.mousemove = bodyListener.bind(this, this.updateTooltip, {\n respectEffect: true\n });\n listeners.mouseout = bodyListener.bind(this, this.hideTooltip, {});\n }\n\n for (var _event in customEvents) {\n listeners[_event] = bodyListener.bind(this, function (e) {\n var targetEventOff = e.currentTarget.getAttribute('data-event-off') || eventOff;\n checkStatus.call(_this, targetEventOff, e);\n }, {\n customEvent: true\n });\n }\n\n for (var _event2 in customEventsOff) {\n listeners[_event2] = bodyListener.bind(this, this.hideTooltip, {\n customEvent: true\n });\n }\n\n for (var _event3 in listeners) {\n body.addEventListener(_event3, listeners[_event3]);\n }\n };\n\n target.prototype.unbindBodyListener = function (body) {\n body = body || getBody();\n var listeners = this.bodyModeListeners;\n\n for (var event in listeners) {\n body.removeEventListener(event, listeners[event]);\n }\n };\n}\n\n/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nvar getMutationObserverClass = function getMutationObserverClass() {\n return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n};\n\nfunction trackRemoval (target) {\n target.prototype.bindRemovalTracker = function () {\n var _this = this;\n\n var MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n var observer = new MutationObserver(function (mutations) {\n for (var m1 = 0; m1 < mutations.length; m1++) {\n var mutation = mutations[m1];\n\n for (var m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n var element = mutation.removedNodes[m2];\n\n if (element === _this.state.currentTarget) {\n _this.hideTooltip();\n\n return;\n }\n }\n }\n });\n observer.observe(window.document, {\n childList: true,\n subtree: true\n });\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function () {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n}\n\n/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nfunction getPosition (e, target, node, place, desiredPlace, effect, offset) {\n var _getDimensions = getDimensions(node),\n tipWidth = _getDimensions.width,\n tipHeight = _getDimensions.height;\n\n var _getDimensions2 = getDimensions(target),\n targetWidth = _getDimensions2.width,\n targetHeight = _getDimensions2.height;\n\n var _getCurrentOffset = getCurrentOffset(e, target, effect),\n mouseX = _getCurrentOffset.mouseX,\n mouseY = _getCurrentOffset.mouseY;\n\n var defaultOffset = getDefaultPosition(effect, targetWidth, targetHeight, tipWidth, tipHeight);\n\n var _calculateOffset = calculateOffset(offset),\n extraOffsetX = _calculateOffset.extraOffsetX,\n extraOffsetY = _calculateOffset.extraOffsetY;\n\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n\n var _getParent = getParent(node),\n parentTop = _getParent.parentTop,\n parentLeft = _getParent.parentLeft; // Get the edge offset of the tooltip\n\n\n var getTipOffsetLeft = function getTipOffsetLeft(place) {\n var offsetX = defaultOffset[place].l;\n return mouseX + offsetX + extraOffsetX;\n };\n\n var getTipOffsetRight = function getTipOffsetRight(place) {\n var offsetX = defaultOffset[place].r;\n return mouseX + offsetX + extraOffsetX;\n };\n\n var getTipOffsetTop = function getTipOffsetTop(place) {\n var offsetY = defaultOffset[place].t;\n return mouseY + offsetY + extraOffsetY;\n };\n\n var getTipOffsetBottom = function getTipOffsetBottom(place) {\n var offsetY = defaultOffset[place].b;\n return mouseY + offsetY + extraOffsetY;\n }; //\n // Functions to test whether the tooltip's sides are inside\n // the client window for a given orientation p\n //\n // _____________\n // | | <-- Right side\n // | p = 'left' |\\\n // | |/ |\\\n // |_____________| |_\\ <-- Mouse\n // / \\ |\n // |\n // |\n // Bottom side\n //\n\n\n var outsideLeft = function outsideLeft(p) {\n return getTipOffsetLeft(p) < 0;\n };\n\n var outsideRight = function outsideRight(p) {\n return getTipOffsetRight(p) > windowWidth;\n };\n\n var outsideTop = function outsideTop(p) {\n return getTipOffsetTop(p) < 0;\n };\n\n var outsideBottom = function outsideBottom(p) {\n return getTipOffsetBottom(p) > windowHeight;\n }; // Check whether the tooltip with orientation p is completely inside the client window\n\n\n var outside = function outside(p) {\n return outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n };\n\n var inside = function inside(p) {\n return !outside(p);\n };\n\n var placesList = ['top', 'bottom', 'left', 'right'];\n var insideList = [];\n\n for (var i = 0; i < 4; i++) {\n var p = placesList[i];\n\n if (inside(p)) {\n insideList.push(p);\n }\n }\n\n var isNewState = false;\n var newPlace;\n var shouldUpdatePlace = desiredPlace !== place;\n\n if (inside(desiredPlace) && shouldUpdatePlace) {\n isNewState = true;\n newPlace = desiredPlace;\n } else if (insideList.length > 0 && outside(desiredPlace) && outside(place)) {\n isNewState = true;\n newPlace = insideList[0];\n }\n\n if (isNewState) {\n return {\n isNewState: true,\n newState: {\n place: newPlace\n }\n };\n }\n\n return {\n isNewState: false,\n position: {\n left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n }\n };\n}\n\nvar getDimensions = function getDimensions(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n height = _node$getBoundingClie.height,\n width = _node$getBoundingClie.width;\n\n return {\n height: parseInt(height, 10),\n width: parseInt(width, 10)\n };\n}; // Get current mouse offset\n\n\nvar getCurrentOffset = function getCurrentOffset(e, currentTarget, effect) {\n var boundingClientRect = currentTarget.getBoundingClientRect();\n var targetTop = boundingClientRect.top;\n var targetLeft = boundingClientRect.left;\n\n var _getDimensions3 = getDimensions(currentTarget),\n targetWidth = _getDimensions3.width,\n targetHeight = _getDimensions3.height;\n\n if (effect === 'float') {\n return {\n mouseX: e.clientX,\n mouseY: e.clientY\n };\n }\n\n return {\n mouseX: targetLeft + targetWidth / 2,\n mouseY: targetTop + targetHeight / 2\n };\n}; // List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\n\n\nvar getDefaultPosition = function getDefaultPosition(effect, targetWidth, targetHeight, tipWidth, tipHeight) {\n var top;\n var right;\n var bottom;\n var left;\n var disToMouse = 3;\n var triangleHeight = 2;\n var cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n if (effect === 'float') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(tipHeight + disToMouse + triangleHeight),\n b: -disToMouse\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: disToMouse + cursorHeight,\n b: tipHeight + disToMouse + triangleHeight + cursorHeight\n };\n left = {\n l: -(tipWidth + disToMouse + triangleHeight),\n r: -disToMouse,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: disToMouse,\n r: tipWidth + disToMouse + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n } else if (effect === 'solid') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(targetHeight / 2 + tipHeight + triangleHeight),\n b: -(targetHeight / 2)\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: targetHeight / 2,\n b: targetHeight / 2 + tipHeight + triangleHeight\n };\n left = {\n l: -(tipWidth + targetWidth / 2 + triangleHeight),\n r: -(targetWidth / 2),\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: targetWidth / 2,\n r: tipWidth + targetWidth / 2 + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n }\n\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right\n };\n}; // Consider additional offset into position calculation\n\n\nvar calculateOffset = function calculateOffset(offset) {\n var extraOffsetX = 0;\n var extraOffsetY = 0;\n\n if (Object.prototype.toString.apply(offset) === '[object String]') {\n offset = JSON.parse(offset.toString().replace(/'/g, '\"'));\n }\n\n for (var key in offset) {\n if (key === 'top') {\n extraOffsetY -= parseInt(offset[key], 10);\n } else if (key === 'bottom') {\n extraOffsetY += parseInt(offset[key], 10);\n } else if (key === 'left') {\n extraOffsetX -= parseInt(offset[key], 10);\n } else if (key === 'right') {\n extraOffsetX += parseInt(offset[key], 10);\n }\n }\n\n return {\n extraOffsetX: extraOffsetX,\n extraOffsetY: extraOffsetY\n };\n}; // Get the offset of the parent elements\n\n\nvar getParent = function getParent(currentTarget) {\n var currentParent = currentTarget;\n\n while (currentParent) {\n if (window.getComputedStyle(currentParent).getPropertyValue('transform') !== 'none') break;\n currentParent = currentParent.parentElement;\n }\n\n var parentTop = currentParent && currentParent.getBoundingClientRect().top || 0;\n var parentLeft = currentParent && currentParent.getBoundingClientRect().left || 0;\n return {\n parentTop: parentTop,\n parentLeft: parentLeft\n };\n};\n\n/**\n * To get the tooltip content\n * it may comes from data-tip or this.props.children\n * it should support multiline\n *\n * @params\n * - `tip` {String} value of data-tip\n * - `children` {ReactElement} this.props.children\n * - `multiline` {Any} could be Bool(true/false) or String('true'/'false')\n *\n * @return\n * - String or react component\n */\nfunction getTipContent (tip, children, getContent, multiline) {\n if (children) return children;\n if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n\n if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n var regexp = //;\n\n if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n // No trim(), so that user can keep their input\n return tip;\n } // Multiline tooltip content\n\n\n return tip.split(regexp).map(function (d, i) {\n return React.createElement(\"span\", {\n key: i,\n className: \"multi-line\"\n }, d);\n });\n}\n\n/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nfunction parseAria(props) {\n var ariaObj = {};\n Object.keys(props).filter(function (prop) {\n // aria-xxx and role is acceptable\n return /(^aria-\\w+$|^role$)/.test(prop);\n }).forEach(function (prop) {\n ariaObj[prop] = props[prop];\n });\n return ariaObj;\n}\n\n/**\n * Convert nodelist to array\n * @see https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/core/createArrayFromMixed.js#L24\n * NodeLists are functions in Safari\n */\nfunction nodeListToArray (nodeList) {\n var length = nodeList.length;\n\n if (nodeList.hasOwnProperty) {\n return Array.prototype.slice.call(nodeList);\n }\n\n return new Array(length).fill().map(function (index) {\n return nodeList[index];\n });\n}\n\nfunction generateUUID() {\n return 't' + v4();\n}\n\n___$insertStyle(\".__react_component_tooltip {\\n border-radius: 3px;\\n display: inline-block;\\n font-size: 13px;\\n left: -999em;\\n opacity: 0;\\n padding: 8px 21px;\\n position: fixed;\\n pointer-events: none;\\n transition: opacity 0.3s ease-out;\\n top: -999em;\\n visibility: hidden;\\n z-index: 999;\\n}\\n.__react_component_tooltip.allow_hover, .__react_component_tooltip.allow_click {\\n pointer-events: auto;\\n}\\n.__react_component_tooltip::before, .__react_component_tooltip::after {\\n content: \\\"\\\";\\n width: 0;\\n height: 0;\\n position: absolute;\\n}\\n.__react_component_tooltip.show {\\n opacity: 0.9;\\n margin-top: 0;\\n margin-left: 0;\\n visibility: visible;\\n}\\n.__react_component_tooltip.place-top::before {\\n border-left: 10px solid transparent;\\n border-right: 10px solid transparent;\\n bottom: -8px;\\n left: 50%;\\n margin-left: -10px;\\n}\\n.__react_component_tooltip.place-bottom::before {\\n border-left: 10px solid transparent;\\n border-right: 10px solid transparent;\\n top: -8px;\\n left: 50%;\\n margin-left: -10px;\\n}\\n.__react_component_tooltip.place-left::before {\\n border-top: 6px solid transparent;\\n border-bottom: 6px solid transparent;\\n right: -8px;\\n top: 50%;\\n margin-top: -5px;\\n}\\n.__react_component_tooltip.place-right::before {\\n border-top: 6px solid transparent;\\n border-bottom: 6px solid transparent;\\n left: -8px;\\n top: 50%;\\n margin-top: -5px;\\n}\\n.__react_component_tooltip .multi-line {\\n display: block;\\n padding: 2px 0;\\n text-align: center;\\n}\");\n\n/**\n * Default pop-up style values (text color, background color).\n */\nvar defaultColors = {\n dark: {\n text: '#fff',\n background: '#222',\n border: 'transparent',\n arrow: '#222'\n },\n success: {\n text: '#fff',\n background: '#8DC572',\n border: 'transparent',\n arrow: '#8DC572'\n },\n warning: {\n text: '#fff',\n background: '#F0AD4E',\n border: 'transparent',\n arrow: '#F0AD4E'\n },\n error: {\n text: '#fff',\n background: '#BE6464',\n border: 'transparent',\n arrow: '#BE6464'\n },\n info: {\n text: '#fff',\n background: '#337AB7',\n border: 'transparent',\n arrow: '#337AB7'\n },\n light: {\n text: '#222',\n background: '#fff',\n border: 'transparent',\n arrow: '#fff'\n }\n};\nfunction getDefaultPopupColors(type) {\n return defaultColors[type] ? _objectSpread2({}, defaultColors[type]) : undefined;\n}\n\n/**\n * Generates the specific tooltip style for use on render.\n */\n\nfunction generateTooltipStyle(uuid, customColors, type, hasBorder) {\n return generateStyle(uuid, getPopupColors(customColors, type, hasBorder));\n}\n/**\n * Generates the tooltip style rules based on the element-specified \"data-type\" property.\n */\n\nfunction generateStyle(uuid, colors) {\n var textColor = colors.text;\n var backgroundColor = colors.background;\n var borderColor = colors.border;\n var arrowColor = colors.arrow;\n return \"\\n \\t.\".concat(uuid, \" {\\n\\t color: \").concat(textColor, \";\\n\\t background: \").concat(backgroundColor, \";\\n\\t border: 1px solid \").concat(borderColor, \";\\n \\t}\\n\\n \\t.\").concat(uuid, \".place-top {\\n margin-top: -10px;\\n }\\n .\").concat(uuid, \".place-top::before {\\n border-top: 8px solid \").concat(borderColor, \";\\n }\\n .\").concat(uuid, \".place-top::after {\\n border-left: 8px solid transparent;\\n border-right: 8px solid transparent;\\n bottom: -6px;\\n left: 50%;\\n margin-left: -8px;\\n border-top-color: \").concat(arrowColor, \";\\n border-top-style: solid;\\n border-top-width: 6px;\\n }\\n\\n .\").concat(uuid, \".place-bottom {\\n margin-top: 10px;\\n }\\n .\").concat(uuid, \".place-bottom::before {\\n border-bottom: 8px solid \").concat(borderColor, \";\\n }\\n .\").concat(uuid, \".place-bottom::after {\\n border-left: 8px solid transparent;\\n border-right: 8px solid transparent;\\n top: -6px;\\n left: 50%;\\n margin-left: -8px;\\n border-bottom-color: \").concat(arrowColor, \";\\n border-bottom-style: solid;\\n border-bottom-width: 6px;\\n }\\n\\n .\").concat(uuid, \".place-left {\\n margin-left: -10px;\\n }\\n .\").concat(uuid, \".place-left::before {\\n border-left: 8px solid \").concat(borderColor, \";\\n }\\n .\").concat(uuid, \".place-left::after {\\n border-top: 5px solid transparent;\\n border-bottom: 5px solid transparent;\\n right: -6px;\\n top: 50%;\\n margin-top: -4px;\\n border-left-color: \").concat(arrowColor, \";\\n border-left-style: solid;\\n border-left-width: 6px;\\n }\\n\\n .\").concat(uuid, \".place-right {\\n margin-left: 10px;\\n }\\n .\").concat(uuid, \".place-right::before {\\n border-right: 8px solid \").concat(borderColor, \";\\n }\\n .\").concat(uuid, \".place-right::after {\\n border-top: 5px solid transparent;\\n border-bottom: 5px solid transparent;\\n left: -6px;\\n top: 50%;\\n margin-top: -4px;\\n border-right-color: \").concat(arrowColor, \";\\n border-right-style: solid;\\n border-right-width: 6px;\\n }\\n \");\n}\n\nfunction getPopupColors(customColors, type, hasBorder) {\n var textColor = customColors.text;\n var backgroundColor = customColors.background;\n var borderColor = customColors.border;\n var arrowColor = customColors.arrow ? customColors.arrow : customColors.background;\n var colors = getDefaultPopupColors(type);\n\n if (textColor) {\n colors.text = textColor;\n }\n\n if (backgroundColor) {\n colors.background = backgroundColor;\n }\n\n if (hasBorder) {\n if (borderColor) {\n colors.border = borderColor;\n } else {\n colors.border = type === 'light' ? 'black' : 'white';\n }\n }\n\n if (arrowColor) {\n colors.arrow = arrowColor;\n }\n\n return colors;\n}\n\nvar _class, _class2, _temp;\n\nvar ReactTooltip = staticMethods(_class = windowListener(_class = customEvent(_class = isCapture(_class = getEffect(_class = bodyMode(_class = trackRemoval(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(ReactTooltip, _React$Component);\n\n _createClass(ReactTooltip, null, [{\n key: \"propTypes\",\n get: function get() {\n return {\n uuid: PropTypes.string,\n children: PropTypes.any,\n place: PropTypes.string,\n type: PropTypes.string,\n effect: PropTypes.string,\n offset: PropTypes.object,\n multiline: PropTypes.bool,\n border: PropTypes.bool,\n textColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderColor: PropTypes.string,\n arrowColor: PropTypes.string,\n insecure: PropTypes.bool,\n \"class\": PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string,\n html: PropTypes.bool,\n delayHide: PropTypes.number,\n delayUpdate: PropTypes.number,\n delayShow: PropTypes.number,\n event: PropTypes.string,\n eventOff: PropTypes.string,\n isCapture: PropTypes.bool,\n globalEventOff: PropTypes.string,\n getContent: PropTypes.any,\n afterShow: PropTypes.func,\n afterHide: PropTypes.func,\n overridePosition: PropTypes.func,\n disable: PropTypes.bool,\n scrollHide: PropTypes.bool,\n resizeHide: PropTypes.bool,\n wrapper: PropTypes.string,\n bodyMode: PropTypes.bool,\n possibleCustomEvents: PropTypes.string,\n possibleCustomEventsOff: PropTypes.string,\n clickable: PropTypes.bool\n };\n }\n }]);\n\n function ReactTooltip(props) {\n var _this;\n\n _classCallCheck(this, ReactTooltip);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ReactTooltip).call(this, props));\n _this.state = {\n uuid: props.uuid || generateUUID(),\n place: props.place || 'top',\n // Direction of tooltip\n desiredPlace: props.place || 'top',\n type: 'dark',\n // Color theme of tooltip\n effect: 'float',\n // float or fixed\n show: false,\n border: false,\n customColors: {},\n offset: {},\n extraClass: '',\n html: false,\n delayHide: 0,\n delayShow: 0,\n event: props.event || null,\n eventOff: props.eventOff || null,\n currentEvent: null,\n // Current mouse event\n currentTarget: null,\n // Current target of mouse event\n ariaProps: parseAria(props),\n // aria- and role attributes\n isEmptyTip: false,\n disable: false,\n possibleCustomEvents: props.possibleCustomEvents || '',\n possibleCustomEventsOff: props.possibleCustomEventsOff || '',\n originTooltip: null,\n isMultiline: false\n };\n\n _this.bind(['showTooltip', 'updateTooltip', 'hideTooltip', 'hideTooltipOnScroll', 'getTooltipContent', 'globalRebuild', 'globalShow', 'globalHide', 'onWindowResize', 'mouseOnToolTip']);\n\n _this.mount = true;\n _this.delayShowLoop = null;\n _this.delayHideLoop = null;\n _this.delayReshow = null;\n _this.intervalUpdateContent = null;\n return _this;\n }\n /**\n * For unify the bind and unbind listener\n */\n\n\n _createClass(ReactTooltip, [{\n key: \"bind\",\n value: function bind(methodArray) {\n var _this2 = this;\n\n methodArray.forEach(function (method) {\n _this2[method] = _this2[method].bind(_this2);\n });\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props = this.props,\n insecure = _this$props.insecure,\n resizeHide = _this$props.resizeHide;\n this.bindListener(); // Bind listener for tooltip\n\n this.bindWindowEvents(resizeHide); // Bind global event for static method\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mount = false;\n this.clearTimer();\n this.unbindListener();\n this.removeScrollListener(this.state.currentTarget);\n this.unbindWindowEvents();\n }\n /**\n * Return if the mouse is on the tooltip.\n * @returns {boolean} true - mouse is on the tooltip\n */\n\n }, {\n key: \"mouseOnToolTip\",\n value: function mouseOnToolTip() {\n var show = this.state.show;\n\n if (show && this.tooltipRef) {\n /* old IE or Firefox work around */\n if (!this.tooltipRef.matches) {\n /* old IE work around */\n if (this.tooltipRef.msMatchesSelector) {\n this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n } else {\n /* old Firefox work around */\n this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n }\n }\n\n return this.tooltipRef.matches(':hover');\n }\n\n return false;\n }\n /**\n * Pick out corresponded target elements\n */\n\n }, {\n key: \"getTargetArray\",\n value: function getTargetArray(id) {\n var targetArray = [];\n var selector;\n\n if (!id) {\n selector = '[data-tip]:not([data-for])';\n } else {\n var escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n selector = \"[data-tip][data-for=\\\"\".concat(escaped, \"\\\"]\");\n } // Scan document for shadow DOM elements\n\n\n nodeListToArray(document.getElementsByTagName('*')).filter(function (element) {\n return element.shadowRoot;\n }).forEach(function (element) {\n targetArray = targetArray.concat(nodeListToArray(element.shadowRoot.querySelectorAll(selector)));\n });\n return targetArray.concat(nodeListToArray(document.querySelectorAll(selector)));\n }\n /**\n * Bind listener to the target elements\n * These listeners used to trigger showing or hiding the tooltip\n */\n\n }, {\n key: \"bindListener\",\n value: function bindListener() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n id = _this$props2.id,\n globalEventOff = _this$props2.globalEventOff,\n isCapture = _this$props2.isCapture;\n var targetArray = this.getTargetArray(id);\n targetArray.forEach(function (target) {\n if (target.getAttribute('currentItem') === null) {\n target.setAttribute('currentItem', 'false');\n }\n\n _this3.unbindBasicListener(target);\n\n if (_this3.isCustomEvent(target)) {\n _this3.customUnbindListener(target);\n }\n });\n\n if (this.isBodyMode()) {\n this.bindBodyListener(targetArray);\n } else {\n targetArray.forEach(function (target) {\n var isCaptureMode = _this3.isCapture(target);\n\n var effect = _this3.getEffect(target);\n\n if (_this3.isCustomEvent(target)) {\n _this3.customBindListener(target);\n\n return;\n }\n\n target.addEventListener('mouseenter', _this3.showTooltip, isCaptureMode);\n\n if (effect === 'float') {\n target.addEventListener('mousemove', _this3.updateTooltip, isCaptureMode);\n }\n\n target.addEventListener('mouseleave', _this3.hideTooltip, isCaptureMode);\n });\n } // Global event to hide tooltip\n\n\n if (globalEventOff) {\n window.removeEventListener(globalEventOff, this.hideTooltip);\n window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n } // Track removal of targetArray elements from DOM\n\n\n this.bindRemovalTracker();\n }\n /**\n * Unbind listeners on target elements\n */\n\n }, {\n key: \"unbindListener\",\n value: function unbindListener() {\n var _this4 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n globalEventOff = _this$props3.globalEventOff;\n\n if (this.isBodyMode()) {\n this.unbindBodyListener();\n } else {\n var targetArray = this.getTargetArray(id);\n targetArray.forEach(function (target) {\n _this4.unbindBasicListener(target);\n\n if (_this4.isCustomEvent(target)) _this4.customUnbindListener(target);\n });\n }\n\n if (globalEventOff) window.removeEventListener(globalEventOff, this.hideTooltip);\n this.unbindRemovalTracker();\n }\n /**\n * Invoke this before bind listener and unmount the component\n * it is necessary to invoke this even when binding custom event\n * so that the tooltip can switch between custom and default listener\n */\n\n }, {\n key: \"unbindBasicListener\",\n value: function unbindBasicListener(target) {\n var isCaptureMode = this.isCapture(target);\n target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n }\n }, {\n key: \"getTooltipContent\",\n value: function getTooltipContent() {\n var _this$props4 = this.props,\n getContent = _this$props4.getContent,\n children = _this$props4.children; // Generate tooltip content\n\n var content;\n\n if (getContent) {\n if (Array.isArray(getContent)) {\n content = getContent[0] && getContent[0](this.state.originTooltip);\n } else {\n content = getContent(this.state.originTooltip);\n }\n }\n\n return getTipContent(this.state.originTooltip, children, content, this.state.isMultiline);\n }\n }, {\n key: \"isEmptyTip\",\n value: function isEmptyTip(placeholder) {\n return typeof placeholder === 'string' && placeholder === '' || placeholder === null;\n }\n /**\n * When mouse enter, show the tooltip\n */\n\n }, {\n key: \"showTooltip\",\n value: function showTooltip(e, isGlobalCall) {\n if (!this.tooltipRef) {\n return;\n }\n\n if (isGlobalCall) {\n // Don't trigger other elements belongs to other ReactTooltip\n var targetArray = this.getTargetArray(this.props.id);\n var isMyElement = targetArray.some(function (ele) {\n return ele === e.currentTarget;\n });\n if (!isMyElement) return;\n } // Get the tooltip content\n // calculate in this phrase so that tip width height can be detected\n\n\n var _this$props5 = this.props,\n multiline = _this$props5.multiline,\n getContent = _this$props5.getContent;\n var originTooltip = e.currentTarget.getAttribute('data-tip');\n var isMultiline = e.currentTarget.getAttribute('data-multiline') || multiline || false; // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n\n var switchToSolid = e instanceof window.FocusEvent || isGlobalCall; // if it needs to skip adding hide listener to scroll\n\n var scrollHide = true;\n\n if (e.currentTarget.getAttribute('data-scroll-hide')) {\n scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n } else if (this.props.scrollHide != null) {\n scrollHide = this.props.scrollHide;\n } // Make sure the correct place is set\n\n\n var desiredPlace = e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n var effect = switchToSolid && 'solid' || this.getEffect(e.currentTarget);\n var offset = e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n var result = getPosition(e, e.currentTarget, this.tooltipRef, desiredPlace, desiredPlace, effect, offset);\n\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(result.position, e, e.currentTarget, this.tooltipRef, desiredPlace, desiredPlace, effect, offset);\n }\n\n var place = result.isNewState ? result.newState.place : desiredPlace; // To prevent previously created timers from triggering\n\n this.clearTimer();\n var target = e.currentTarget;\n var reshowDelay = this.state.show ? target.getAttribute('data-delay-update') || this.props.delayUpdate : 0;\n var self = this;\n\n var updateState = function updateState() {\n self.setState({\n originTooltip: originTooltip,\n isMultiline: isMultiline,\n desiredPlace: desiredPlace,\n place: place,\n type: target.getAttribute('data-type') || self.props.type || 'dark',\n customColors: {\n text: target.getAttribute('data-text-color') || self.props.textColor || null,\n background: target.getAttribute('data-background-color') || self.props.backgroundColor || null,\n border: target.getAttribute('data-border-color') || self.props.borderColor || null,\n arrow: target.getAttribute('data-arrow-color') || self.props.arrowColor || null\n },\n effect: effect,\n offset: offset,\n html: (target.getAttribute('data-html') ? target.getAttribute('data-html') === 'true' : self.props.html) || false,\n delayShow: target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n delayHide: target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n delayUpdate: target.getAttribute('data-delay-update') || self.props.delayUpdate || 0,\n border: (target.getAttribute('data-border') ? target.getAttribute('data-border') === 'true' : self.props.border) || false,\n extraClass: target.getAttribute('data-class') || self.props[\"class\"] || self.props.className || '',\n disable: (target.getAttribute('data-tip-disable') ? target.getAttribute('data-tip-disable') === 'true' : self.props.disable) || false,\n currentTarget: target\n }, function () {\n if (scrollHide) {\n self.addScrollListener(self.state.currentTarget);\n }\n\n self.updateTooltip(e);\n\n if (getContent && Array.isArray(getContent)) {\n self.intervalUpdateContent = setInterval(function () {\n if (self.mount) {\n var _getContent = self.props.getContent;\n var placeholder = getTipContent(originTooltip, '', _getContent[0](), isMultiline);\n var isEmptyTip = self.isEmptyTip(placeholder);\n self.setState({\n isEmptyTip: isEmptyTip\n });\n self.updatePosition();\n }\n }, getContent[1]);\n }\n });\n }; // If there is no delay call immediately, don't allow events to get in first.\n\n\n if (reshowDelay) {\n this.delayReshow = setTimeout(updateState, reshowDelay);\n } else {\n updateState();\n }\n }\n /**\n * When mouse hover, update tool tip\n */\n\n }, {\n key: \"updateTooltip\",\n value: function updateTooltip(e) {\n var _this5 = this;\n\n var _this$state = this.state,\n delayShow = _this$state.delayShow,\n disable = _this$state.disable;\n var afterShow = this.props.afterShow;\n var placeholder = this.getTooltipContent();\n var delayTime = parseInt(delayShow, 10);\n var eventTarget = e.currentTarget || e.target; // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n\n if (this.mouseOnToolTip()) {\n return;\n } // if the tooltip is empty, disable the tooltip\n\n\n if (this.isEmptyTip(placeholder) || disable) {\n return;\n }\n\n var updateState = function updateState() {\n if (Array.isArray(placeholder) && placeholder.length > 0 || placeholder) {\n var isInvisible = !_this5.state.show;\n\n _this5.setState({\n currentEvent: e,\n currentTarget: eventTarget,\n show: true\n }, function () {\n _this5.updatePosition();\n\n if (isInvisible && afterShow) {\n afterShow(e);\n }\n });\n }\n };\n\n clearTimeout(this.delayShowLoop);\n\n if (delayShow) {\n this.delayShowLoop = setTimeout(updateState, delayTime);\n } else {\n updateState();\n }\n }\n /*\n * If we're mousing over the tooltip remove it when we leave.\n */\n\n }, {\n key: \"listenForTooltipExit\",\n value: function listenForTooltipExit() {\n var show = this.state.show;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n }\n }\n }, {\n key: \"removeListenerForTooltipExit\",\n value: function removeListenerForTooltipExit() {\n var show = this.state.show;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n }\n }\n /**\n * When mouse leave, hide tooltip\n */\n\n }, {\n key: \"hideTooltip\",\n value: function hideTooltip(e, hasTarget) {\n var _this6 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n isScroll: false\n };\n var disable = this.state.disable;\n var isScroll = options.isScroll;\n var delayHide = isScroll ? 0 : this.state.delayHide;\n var afterHide = this.props.afterHide;\n var placeholder = this.getTooltipContent();\n if (!this.mount) return;\n if (this.isEmptyTip(placeholder) || disable) return; // if the tooltip is empty, disable the tooltip\n\n if (hasTarget) {\n // Don't trigger other elements belongs to other ReactTooltip\n var targetArray = this.getTargetArray(this.props.id);\n var isMyElement = targetArray.some(function (ele) {\n return ele === e.currentTarget;\n });\n if (!isMyElement || !this.state.show) return;\n }\n\n var resetState = function resetState() {\n var isVisible = _this6.state.show; // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n\n if (_this6.mouseOnToolTip()) {\n _this6.listenForTooltipExit();\n\n return;\n }\n\n _this6.removeListenerForTooltipExit();\n\n _this6.setState({\n show: false\n }, function () {\n _this6.removeScrollListener(_this6.state.currentTarget);\n\n if (isVisible && afterHide) {\n afterHide(e);\n }\n });\n };\n\n this.clearTimer();\n\n if (delayHide) {\n this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n } else {\n resetState();\n }\n }\n /**\n * When scroll, hide tooltip\n */\n\n }, {\n key: \"hideTooltipOnScroll\",\n value: function hideTooltipOnScroll(event, hasTarget) {\n this.hideTooltip(event, hasTarget, {\n isScroll: true\n });\n }\n /**\n * Add scroll event listener when tooltip show\n * automatically hide the tooltip when scrolling\n */\n\n }, {\n key: \"addScrollListener\",\n value: function addScrollListener(currentTarget) {\n var isCaptureMode = this.isCapture(currentTarget);\n window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n }\n }, {\n key: \"removeScrollListener\",\n value: function removeScrollListener(currentTarget) {\n var isCaptureMode = this.isCapture(currentTarget);\n window.removeEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n } // Calculation the position\n\n }, {\n key: \"updatePosition\",\n value: function updatePosition() {\n var _this7 = this;\n\n var _this$state2 = this.state,\n currentEvent = _this$state2.currentEvent,\n currentTarget = _this$state2.currentTarget,\n place = _this$state2.place,\n desiredPlace = _this$state2.desiredPlace,\n effect = _this$state2.effect,\n offset = _this$state2.offset;\n var node = this.tooltipRef;\n var result = getPosition(currentEvent, currentTarget, node, place, desiredPlace, effect, offset);\n\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(result.position, currentEvent, currentTarget, node, place, desiredPlace, effect, offset);\n }\n\n if (result.isNewState) {\n // Switch to reverse placement\n return this.setState(result.newState, function () {\n _this7.updatePosition();\n });\n } // Set tooltip position\n\n\n node.style.left = result.position.left + 'px';\n node.style.top = result.position.top + 'px';\n }\n /**\n * CLear all kinds of timeout of interval\n */\n\n }, {\n key: \"clearTimer\",\n value: function clearTimer() {\n clearTimeout(this.delayShowLoop);\n clearTimeout(this.delayHideLoop);\n clearTimeout(this.delayReshow);\n clearInterval(this.intervalUpdateContent);\n }\n }, {\n key: \"hasCustomColors\",\n value: function hasCustomColors() {\n var _this8 = this;\n\n return Boolean(Object.keys(this.state.customColors).find(function (color) {\n return color !== 'border' && _this8.state.customColors[color];\n }) || this.state.border && this.state.customColors['border']);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this9 = this;\n\n var _this$state3 = this.state,\n extraClass = _this$state3.extraClass,\n html = _this$state3.html,\n ariaProps = _this$state3.ariaProps,\n disable = _this$state3.disable;\n var content = this.getTooltipContent();\n var isEmptyTip = this.isEmptyTip(content);\n var style = generateTooltipStyle(this.state.uuid, this.state.customColors, this.state.type, this.state.border);\n var tooltipClass = '__react_component_tooltip' + \" \".concat(this.state.uuid) + (this.state.show && !disable && !isEmptyTip ? ' show' : '') + (this.state.border ? ' border' : '') + \" place-\".concat(this.state.place) + // top, bottom, left, right\n \" type-\".concat(this.hasCustomColors() ? 'custom' : this.state.type) + ( // dark, success, warning, error, info, light, custom\n this.props.delayUpdate ? ' allow_hover' : '') + (this.props.clickable ? ' allow_click' : '');\n var Wrapper = this.props.wrapper;\n\n if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n Wrapper = ReactTooltip.defaultProps.wrapper;\n }\n\n var wrapperClassName = [tooltipClass, extraClass].filter(Boolean).join(' ');\n\n if (html) {\n var htmlContent = \"\".concat(content, \"\\n\");\n return React.createElement(Wrapper, _extends({\n className: \"\".concat(wrapperClassName),\n id: this.props.id,\n ref: function ref(_ref) {\n return _this9.tooltipRef = _ref;\n }\n }, ariaProps, {\n \"data-id\": \"tooltip\",\n dangerouslySetInnerHTML: {\n __html: htmlContent\n }\n }));\n } else {\n return React.createElement(Wrapper, _extends({\n className: \"\".concat(wrapperClassName),\n id: this.props.id\n }, ariaProps, {\n ref: function ref(_ref2) {\n return _this9.tooltipRef = _ref2;\n },\n \"data-id\": \"tooltip\"\n }), React.createElement(\"style\", {\n dangerouslySetInnerHTML: {\n __html: style\n }\n }), content);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var ariaProps = prevState.ariaProps;\n var newAriaProps = parseAria(nextProps);\n var isChanged = Object.keys(newAriaProps).some(function (props) {\n return newAriaProps[props] !== ariaProps[props];\n });\n\n if (!isChanged) {\n return null;\n }\n\n return _objectSpread2({}, prevState, {\n ariaProps: newAriaProps\n });\n }\n }]);\n\n return ReactTooltip;\n}(React.Component), _defineProperty(_class2, \"defaultProps\", {\n insecure: true,\n resizeHide: true,\n wrapper: 'div',\n clickable: false\n}), _defineProperty(_class2, \"supportedWrappers\", ['div', 'span']), _defineProperty(_class2, \"displayName\", 'ReactTooltip'), _temp)) || _class) || _class) || _class) || _class) || _class) || _class) || _class;\n\nexport default ReactTooltip;\n//# sourceMappingURL=index.es.js.map\n","import writeText from 'copy-to-clipboard';\nimport { useCallback } from 'react';\nimport useMountedState from './useMountedState';\nimport useSetState from './useSetState';\nvar useCopyToClipboard = function () {\n var isMounted = useMountedState();\n var _a = useSetState({\n value: undefined,\n error: undefined,\n noUserInteraction: true,\n }), state = _a[0], setState = _a[1];\n var copyToClipboard = useCallback(function (value) {\n if (!isMounted()) {\n return;\n }\n var noUserInteraction;\n var normalizedValue;\n try {\n // only strings and numbers casted to strings can be copied to clipboard\n if (typeof value !== 'string' && typeof value !== 'number') {\n var error = new Error(\"Cannot copy typeof \" + typeof value + \" to clipboard, must be a string\");\n if (process.env.NODE_ENV === 'development')\n console.error(error);\n setState({\n value: value,\n error: error,\n noUserInteraction: true,\n });\n return;\n }\n // empty strings are also considered invalid\n else if (value === '') {\n var error = new Error(\"Cannot copy empty string to clipboard.\");\n if (process.env.NODE_ENV === 'development')\n console.error(error);\n setState({\n value: value,\n error: error,\n noUserInteraction: true,\n });\n return;\n }\n normalizedValue = value.toString();\n noUserInteraction = writeText(normalizedValue);\n setState({\n value: normalizedValue,\n error: undefined,\n noUserInteraction: noUserInteraction,\n });\n }\n catch (error) {\n setState({\n value: normalizedValue,\n error: error,\n noUserInteraction: noUserInteraction,\n });\n }\n }, []);\n return [state, copyToClipboard];\n};\nexport default useCopyToClipboard;\n","import { useCallback, useEffect, useRef } from 'react';\nexport default function useMountedState() {\n var mountedRef = useRef(false);\n var get = useCallback(function () { return mountedRef.current; }, []);\n useEffect(function () {\n mountedRef.current = true;\n return function () {\n mountedRef.current = false;\n };\n });\n return get;\n}\n","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import { useEffect, useState } from 'react';\nimport { isClient } from './util';\nvar useMedia = function (query, defaultState) {\n if (defaultState === void 0) { defaultState = false; }\n var _a = useState(isClient ? function () { return window.matchMedia(query).matches; } : defaultState), state = _a[0], setState = _a[1];\n useEffect(function () {\n var mounted = true;\n var mql = window.matchMedia(query);\n var onChange = function () {\n if (!mounted) {\n return;\n }\n setState(!!mql.matches);\n };\n mql.addListener(onChange);\n setState(mql.matches);\n return function () {\n mounted = false;\n mql.removeListener(onChange);\n };\n }, [query]);\n return state;\n};\nexport default useMedia;\n","import useEffectOnce from './useEffectOnce';\nvar useMount = function (fn) {\n useEffectOnce(function () {\n fn();\n });\n};\nexport default useMount;\n","import { useCallback, useState } from 'react';\nvar useSetState = function (initialState) {\n if (initialState === void 0) { initialState = {}; }\n var _a = useState(initialState), state = _a[0], set = _a[1];\n var setState = useCallback(function (patch) {\n set(function (prevState) { return Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch); });\n }, [set]);\n return [state, setState];\n};\nexport default useSetState;\n","import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n var fnRef = useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n","import { useRef, useState, useCallback } from 'react';\nimport useUnmount from './useUnmount';\nvar useRafState = function (initialState) {\n var frame = useRef(0);\n var _a = useState(initialState), state = _a[0], setState = _a[1];\n var setRafState = useCallback(function (value) {\n cancelAnimationFrame(frame.current);\n frame.current = requestAnimationFrame(function () {\n setState(value);\n });\n }, []);\n useUnmount(function () {\n cancelAnimationFrame(frame.current);\n });\n return [state, setRafState];\n};\nexport default useRafState;\n","import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { isClient } from './util';\nvar useWindowSize = function (initialWidth, initialHeight) {\n if (initialWidth === void 0) { initialWidth = Infinity; }\n if (initialHeight === void 0) { initialHeight = Infinity; }\n var _a = useRafState({\n width: isClient ? window.innerWidth : initialWidth,\n height: isClient ? window.innerHeight : initialHeight,\n }), state = _a[0], setState = _a[1];\n useEffect(function () {\n if (isClient) {\n var handler_1 = function () {\n setState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n window.addEventListener('resize', handler_1);\n return function () {\n window.removeEventListener('resize', handler_1);\n };\n }\n }, []);\n return state;\n};\nexport default useWindowSize;\n","import isDeepEqualReact from 'fast-deep-equal/react';\nexport var isClient = typeof window === 'object';\nexport var on = function (obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return obj.addEventListener.apply(obj, args);\n};\nexport var off = function (obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return obj.removeEventListener.apply(obj, args);\n};\nexport var isDeepEqual = isDeepEqualReact;\n","/**\n * @license React\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';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}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}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\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\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","var engine = require('../src/store-engine')\n\nvar storages = require('../storages/all')\nvar plugins = [require('../plugins/json2')]\n\nmodule.exports = engine.createStore(storages, plugins)\n","module.exports = json2Plugin\n\nfunction json2Plugin() {\n\trequire('./lib/json2')\n\treturn {}\n}\n","/* eslint-disable */\n\n// json2.js\n// 2016-10-28\n// Public Domain.\n// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n// See http://www.JSON.org/js.html\n// This code should be minified before deployment.\n// See http://javascript.crockford.com/jsmin.html\n\n// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n// NOT CONTROL.\n\n// This file creates a global JSON object containing two methods: stringify\n// and parse. This file provides the ES5 JSON capability to ES3 systems.\n// If a project might run on IE8 or earlier, then this file should be included.\n// This file does nothing on ES5 systems.\n\n// JSON.stringify(value, replacer, space)\n// value any JavaScript value, usually an object or array.\n// replacer an optional parameter that determines how object\n// values are stringified for objects. It can be a\n// function or an array of strings.\n// space an optional parameter that specifies the indentation\n// of nested structures. If it is omitted, the text will\n// be packed without extra whitespace. If it is a number,\n// it will specify the number of spaces to indent at each\n// level. If it is a string (such as \"\\t\" or \" \"),\n// it contains the characters used to indent at each level.\n// This method produces a JSON text from a JavaScript value.\n// When an object value is found, if the object contains a toJSON\n// method, its toJSON method will be called and the result will be\n// stringified. A toJSON method does not serialize: it returns the\n// value represented by the name/value pair that should be serialized,\n// or undefined if nothing should be serialized. The toJSON method\n// will be passed the key associated with the value, and this will be\n// bound to the value.\n\n// For example, this would serialize Dates as ISO strings.\n\n// Date.prototype.toJSON = function (key) {\n// function f(n) {\n// // Format integers to have at least two digits.\n// return (n < 10)\n// ? \"0\" + n\n// : n;\n// }\n// return this.getUTCFullYear() + \"-\" +\n// f(this.getUTCMonth() + 1) + \"-\" +\n// f(this.getUTCDate()) + \"T\" +\n// f(this.getUTCHours()) + \":\" +\n// f(this.getUTCMinutes()) + \":\" +\n// f(this.getUTCSeconds()) + \"Z\";\n// };\n\n// You can provide an optional replacer method. It will be passed the\n// key and value of each member, with this bound to the containing\n// object. The value that is returned from your method will be\n// serialized. If your method returns undefined, then the member will\n// be excluded from the serialization.\n\n// If the replacer parameter is an array of strings, then it will be\n// used to select the members to be serialized. It filters the results\n// such that only members with keys listed in the replacer array are\n// stringified.\n\n// Values that do not have JSON representations, such as undefined or\n// functions, will not be serialized. Such values in objects will be\n// dropped; in arrays they will be replaced with null. You can use\n// a replacer function to replace those with JSON values.\n\n// JSON.stringify(undefined) returns undefined.\n\n// The optional space parameter produces a stringification of the\n// value that is filled with line breaks and indentation to make it\n// easier to read.\n\n// If the space parameter is a non-empty string, then that string will\n// be used for indentation. If the space parameter is a number, then\n// the indentation will be that many spaces.\n\n// Example:\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}]);\n// // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}], null, \"\\t\");\n// // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n// text = JSON.stringify([new Date()], function (key, value) {\n// return this[key] instanceof Date\n// ? \"Date(\" + this[key] + \")\"\n// : value;\n// });\n// // text is '[\"Date(---current time---)\"]'\n\n// JSON.parse(text, reviver)\n// This method parses a JSON text to produce an object or array.\n// It can throw a SyntaxError exception.\n\n// The optional reviver parameter is a function that can filter and\n// transform the results. It receives each of the keys and values,\n// and its return value is used instead of the original value.\n// If it returns what it received, then the structure is not modified.\n// If it returns undefined then the member is deleted.\n\n// Example:\n\n// // Parse the text. Values that look like ISO date strings will\n// // be converted to Date objects.\n\n// myData = JSON.parse(text, function (key, value) {\n// var a;\n// if (typeof value === \"string\") {\n// a =\n// /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n// if (a) {\n// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n// +a[5], +a[6]));\n// }\n// }\n// return value;\n// });\n\n// myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n// var d;\n// if (typeof value === \"string\" &&\n// value.slice(0, 5) === \"Date(\" &&\n// value.slice(-1) === \")\") {\n// d = new Date(value.slice(5, -1));\n// if (d) {\n// return d;\n// }\n// }\n// return value;\n// });\n\n// This is a reference implementation. You are free to copy, modify, or\n// redistribute.\n\n/*jslint\n eval, for, this\n*/\n\n/*property\n JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== \"object\") {\n JSON = {};\n}\n\n(function () {\n \"use strict\";\n\n var rx_one = /^[\\],:{}\\s]*$/;\n var rx_two = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g;\n var rx_three = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\n var rx_four = /(?:^|:|,)(?:\\s*\\[)+/g;\n var rx_escapable = /[\\\\\"\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var rx_dangerous = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10\n ? \"0\" + n\n : n;\n }\n\n function this_value() {\n return this.valueOf();\n }\n\n if (typeof Date.prototype.toJSON !== \"function\") {\n\n Date.prototype.toJSON = function () {\n\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() + \"-\" +\n f(this.getUTCMonth() + 1) + \"-\" +\n f(this.getUTCDate()) + \"T\" +\n f(this.getUTCHours()) + \":\" +\n f(this.getUTCMinutes()) + \":\" +\n f(this.getUTCSeconds()) + \"Z\"\n : null;\n };\n\n Boolean.prototype.toJSON = this_value;\n Number.prototype.toJSON = this_value;\n String.prototype.toJSON = this_value;\n }\n\n var gap;\n var indent;\n var meta;\n var rep;\n\n\n function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n rx_escapable.lastIndex = 0;\n return rx_escapable.test(string)\n ? \"\\\"\" + string.replace(rx_escapable, function (a) {\n var c = meta[a];\n return typeof c === \"string\"\n ? c\n : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\"\n : \"\\\"\" + string + \"\\\"\";\n }\n\n\n function str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i; // The loop counter.\n var k; // The member key.\n var v; // The member value.\n var length;\n var mind = gap;\n var partial;\n var value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === \"object\" &&\n typeof value.toJSON === \"function\") {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === \"function\") {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case \"string\":\n return quote(value);\n\n case \"number\":\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value)\n ? String(value)\n : \"null\";\n\n case \"boolean\":\n case \"null\":\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce \"null\". The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is \"object\", we might be dealing with an object or an array or\n// null.\n\n case \"object\":\n\n// Due to a specification blunder in ECMAScript, typeof null is \"object\",\n// so watch out for that case.\n\n if (!value) {\n return \"null\";\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === \"[object Array]\") {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || \"null\";\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? \"[]\"\n : gap\n ? \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\"\n : \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === \"object\") {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === \"string\") {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? \"{}\"\n : gap\n ? \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\"\n : \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== \"function\") {\n meta = { // table of character substitutions\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": \"\\\\\\\"\",\n \"\\\\\": \"\\\\\\\\\"\n };\n JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = \"\";\n indent = \"\";\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === \"string\") {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== \"function\" &&\n (typeof replacer !== \"object\" ||\n typeof replacer.length !== \"number\")) {\n throw new Error(\"JSON.stringify\");\n }\n\n// Make a fake root object containing our value under the key of \"\".\n// Return the result of stringifying the value.\n\n return str(\"\", {\"\": value});\n };\n }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== \"function\") {\n JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n var j;\n\n function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n var k;\n var v;\n var value = holder[key];\n if (value && typeof value === \"object\") {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n text = String(text);\n rx_dangerous.lastIndex = 0;\n if (rx_dangerous.test(text)) {\n text = text.replace(rx_dangerous, function (a) {\n return \"\\\\u\" +\n (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with \"()\" and \"new\"\n// because they can cause invocation, and \"=\" because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with \"@\" (a non-JSON character). Second, we\n// replace all simple value tokens with \"]\" characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or \"]\" or\n// \",\" or \":\" or \"{\" or \"}\". If that is so, then the text is safe for eval.\n\n if (\n rx_one.test(\n text\n .replace(rx_two, \"@\")\n .replace(rx_three, \"]\")\n .replace(rx_four, \"\")\n )\n ) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The \"{\" operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n j = eval(\"(\" + text + \")\");\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n return (typeof reviver === \"function\")\n ? walk({\"\": j}, \"\")\n : j;\n }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n}());","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n","// oldFF-globalStorage provides storage for Firefox\n// versions 6 and 7, where no localStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldFF-globalStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar globalStorage = Global.globalStorage\n\nfunction read(key) {\n\treturn globalStorage[key]\n}\n\nfunction write(key, data) {\n\tglobalStorage[key] = data\n}\n\nfunction each(fn) {\n\tfor (var i = globalStorage.length - 1; i >= 0; i--) {\n\t\tvar key = globalStorage.key(i)\n\t\tfn(globalStorage[key], key)\n\t}\n}\n\nfunction remove(key) {\n\treturn globalStorage.removeItem(key)\n}\n\nfunction clearAll() {\n\teach(function(key, _) {\n\t\tdelete globalStorage[key]\n\t})\n}\n","// oldIE-userDataStorage provides storage for Internet Explorer\n// versions 6 and 7, where no localStorage, sessionStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldIE-userDataStorage',\n\twrite: write,\n\tread: read,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar storageName = 'storejs'\nvar doc = Global.document\nvar _withStorageEl = _makeIEStorageElFunction()\nvar disable = (Global.navigator ? Global.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\\./) // MSIE 9.x, MSIE 10.x\n\nfunction write(unfixedKey, data) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.setAttribute(fixedKey, data)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction read(unfixedKey) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\tvar res = null\n\t_withStorageEl(function(storageEl) {\n\t\tres = storageEl.getAttribute(fixedKey)\n\t})\n\treturn res\n}\n\nfunction each(callback) {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tvar attr = attributes[i]\n\t\t\tcallback(storageEl.getAttribute(attr.name), attr.name)\n\t\t}\n\t})\n}\n\nfunction remove(unfixedKey) {\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.removeAttribute(fixedKey)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction clearAll() {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tstorageEl.load(storageName)\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tstorageEl.removeAttribute(attributes[i].name)\n\t\t}\n\t\tstorageEl.save(storageName)\n\t})\n}\n\n// Helpers\n//////////\n\n// In IE7, keys cannot start with a digit or contain certain chars.\n// See https://github.com/marcuswestin/store.js/issues/40\n// See https://github.com/marcuswestin/store.js/issues/83\nvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\nfunction fixKey(key) {\n\treturn key.replace(/^\\d/, '___$&').replace(forbiddenCharsRegex, '___')\n}\n\nfunction _makeIEStorageElFunction() {\n\tif (!doc || !doc.documentElement || !doc.documentElement.addBehavior) {\n\t\treturn null\n\t}\n\tvar scriptTag = 'script',\n\t\tstorageOwner,\n\t\tstorageContainer,\n\t\tstorageEl\n\n\t// Since #userData storage applies only to specific paths, we need to\n\t// somehow link our data to a specific path. We choose /favicon.ico\n\t// as a pretty safe option, since all browsers already make a request to\n\t// this URL anyway and being a 404 will not hurt us here. We wrap an\n\t// iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n\t// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n\t// since the iframe access rules appear to allow direct access and\n\t// manipulation of the document element, even for a 404 page. This\n\t// document can be used instead of the current document (which would\n\t// have been limited to the current path) to perform #userData storage.\n\ttry {\n\t\t/* global ActiveXObject */\n\t\tstorageContainer = new ActiveXObject('htmlfile')\n\t\tstorageContainer.open()\n\t\tstorageContainer.write('<'+scriptTag+'>document.w=window')\n\t\tstorageContainer.close()\n\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\tstorageEl = storageOwner.createElement('div')\n\t} catch(e) {\n\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t// security settings or otherwse), fall back to per-path storage\n\t\tstorageEl = doc.createElement('div')\n\t\tstorageOwner = doc.body\n\t}\n\n\treturn function(storeFunction) {\n\t\tvar args = [].slice.call(arguments, 0)\n\t\targs.unshift(storageEl)\n\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\tstorageOwner.appendChild(storageEl)\n\t\tstorageEl.addBehavior('#default#userData')\n\t\tstorageEl.load(storageName)\n\t\tstoreFunction.apply(this, args)\n\t\tstorageOwner.removeChild(storageEl)\n\t\treturn\n\t}\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\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 throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","import { __extends } from 'tslib';\n\nvar genericMessage = \"Invariant Violation\";\r\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\r\n obj.__proto__ = proto;\r\n return obj;\r\n} : _a;\r\nvar InvariantError = /** @class */ (function (_super) {\r\n __extends(InvariantError, _super);\r\n function InvariantError(message) {\r\n if (message === void 0) { message = genericMessage; }\r\n var _this = _super.call(this, typeof message === \"number\"\r\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\r\n : message) || this;\r\n _this.framesToPop = 1;\r\n _this.name = genericMessage;\r\n setPrototypeOf(_this, InvariantError.prototype);\r\n return _this;\r\n }\r\n return InvariantError;\r\n}(Error));\r\nfunction invariant(condition, message) {\r\n if (!condition) {\r\n throw new InvariantError(message);\r\n }\r\n}\r\nvar verbosityLevels = [\"log\", \"warn\", \"error\", \"silent\"];\r\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\r\nfunction wrapConsoleMethod(method) {\r\n return function () {\r\n if (verbosityLevels.indexOf(method) >= verbosityLevel) {\r\n return console[method].apply(console, arguments);\r\n }\r\n };\r\n}\r\n(function (invariant) {\r\n invariant.log = wrapConsoleMethod(\"log\");\r\n invariant.warn = wrapConsoleMethod(\"warn\");\r\n invariant.error = wrapConsoleMethod(\"error\");\r\n})(invariant || (invariant = {}));\r\nfunction setVerbosity(level) {\r\n var old = verbosityLevels[verbosityLevel];\r\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\r\n return old;\r\n}\r\n// Code that uses ts-invariant with rollup-plugin-invariant may want to\r\n// import this process stub to avoid errors evaluating process.env.NODE_ENV.\r\n// However, because most ESM-to-CJS compilers will rewrite the process import\r\n// as tsInvariant.process, which prevents proper replacement by minifiers, we\r\n// also export processStub, so you can import { invariant, processStub } from\r\n// \"ts-invariant\" and assign processStub to a local variable named process.\r\nvar processStub = (typeof process === \"object\" &&\r\n typeof process.env === \"object\") ? process : { env: {} };\r\nvar invariant$1 = invariant;\n\nexport default invariant$1;\nexport { InvariantError, invariant, processStub as process, processStub, setVerbosity };\n//# sourceMappingURL=invariant.esm.js.map\n","module.exports = require('./lib/Observable.js').Observable;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: \"unsubscribe\",\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: \"next\",\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: \"error\",\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: \"complete\",\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: \"subscribe\",\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: \"map\",\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"filter\",\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"reduce\",\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"concat\",\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: \"flatMap\",\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: \"from\",\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _item = _step.value;\n observer.next(_item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: \"of\",\n value: function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { useState, useEffect } from 'react';\n\nconst BREAKPOINTS = {\n base: 0,\n sm: 768,\n md: 1024,\n lg: 1280,\n};\nconst useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n width: 0,\n height: 0,\n breakpoint: \"base\",\n });\n useEffect(() => {\n const handleResize = () => {\n const breakpoint = Object.keys(BREAKPOINTS).reduce((acc, cur) => (window.innerWidth >= BREAKPOINTS[cur] ? cur : acc), \"base\");\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n breakpoint,\n });\n };\n window.addEventListener(\"resize\", handleResize);\n handleResize();\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n return windowSize;\n};\n\nexport { useWindowSize as default };\n//# sourceMappingURL=index.js.map\n","var Direction;\n(function (Direction) {\n Direction[\"UP\"] = \"up\";\n Direction[\"DOWN\"] = \"down\";\n})(Direction || (Direction = {}));\n\nexport { Direction };\n//# sourceMappingURL=constants.js.map\n","import styleInject from '../../node_modules/style-inject/dist/style-inject.es.js';\n\nvar css_248z = \".tlr-Banner_rjws-{width:100%;max-height:300px;position:sticky;display:flex;align-items:center;z-index:100000;overflow:visible;box-sizing:border-box}@media (min-width:1280px){.tlr-Banner_rjws-{padding:8px 16px}}.tlr-Banner__not_collapsible_hUIyO{width:100%;padding:24px;max-height:300px;position:sticky;top:0;left:0;display:flex;align-items:center;z-index:100000;overflow:visible;box-sizing:border-box}@media (min-width:1280px){.tlr-Banner__not_collapsible_hUIyO{padding:8px 16px}}.tlr-Banner__collapsed_OVF-m{height:37px;width:100%;position:sticky;top:0;display:flex;align-items:center;justify-content:center;text-align:center}.tlr-Banner__collapsed_content_uFtQj{width:100%;margin:8px 16px}.tlr-Banner_inner_container_53ua3{width:100%;padding:24px}@media (min-width:1280px){.tlr-Banner_inner_container_53ua3{padding:8px 16px}}.tlr-Banner__success_b6IWq{background-color:var(--tlr-color-semantic-success-default)}.tlr-Banner__info_1FtnB{background-color:var(--tlr-color-semantic-info-default)}.tlr-Banner__warning_pfJUi{background-color:var(--tlr-color-semantic-warning-default)}.tlr-Banner__error_Vo9vF{background-color:var(--tlr-color-semantic-error-default)}\";\nvar styles = {\"Banner\":\"tlr-Banner_rjws-\",\"Banner__not_collapsible\":\"tlr-Banner__not_collapsible_hUIyO\",\"Banner__collapsed\":\"tlr-Banner__collapsed_OVF-m\",\"Banner__collapsed_content\":\"tlr-Banner__collapsed_content_uFtQj\",\"Banner_inner_container\":\"tlr-Banner_inner_container_53ua3\",\"Banner__success\":\"tlr-Banner__success_b6IWq\",\"Banner__info\":\"tlr-Banner__info_1FtnB\",\"Banner__warning\":\"tlr-Banner__warning_pfJUi\",\"Banner__error\":\"tlr-Banner__error_Vo9vF\"};\nstyleInject(css_248z);\n\nexport { styles as default };\n//# sourceMappingURL=Banner.module.css.js.map\n","const COLLAPSED_SIZE = 37;\nconst LARGE_SCREEN = \"lg\";\n\nexport { COLLAPSED_SIZE, LARGE_SCREEN };\n//# sourceMappingURL=constants.js.map\n","import React__default, { useRef, useState, useEffect } from 'react';\nimport classnames from 'classnames';\nimport useWindowSize from '../../hooks/useWindowSize/index.js';\nimport useScroll from '../../hooks/useScroll/index.js';\nimport { Direction } from '../../hooks/useScroll/constants.js';\nimport styles from './Banner.module.css.js';\nimport { LARGE_SCREEN, COLLAPSED_SIZE } from './constants.js';\n\n/* eslint-disable react-hooks/exhaustive-deps */\nconst Banner = ({ children, type, collapsedContent }) => {\n const bannerRef = useRef(null);\n const expandedRef = useRef(null);\n const [isCollapsing, setCollapsing] = useState(false);\n const [bannerHeight, setBannerHeight] = useState(0);\n const size = useWindowSize();\n const { scrollPosition, scrollDirection } = useScroll();\n const { UP, DOWN } = Direction;\n const checkCanScroll = () => {\n const documentHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n const scrollDistanceAvailable = documentHeight - size.height;\n return scrollDistanceAvailable >= bannerHeight - COLLAPSED_SIZE;\n };\n const [canScroll, setCanScroll] = useState(checkCanScroll());\n const [canCollapse, setCanCollapse] = useState(size?.breakpoint !== LARGE_SCREEN &&\n typeof collapsedContent !== \"undefined\");\n const getCurrentHeight = () => {\n if (expandedRef.current) {\n return expandedRef.current.getBoundingClientRect().height;\n }\n return null;\n };\n const setUpBanner = (height) => {\n if (bannerRef.current) {\n bannerRef.current.style.height = height + \"px\";\n const heightDiference = height - COLLAPSED_SIZE;\n bannerRef.current.style.top = heightDiference * -1 + \"px\";\n setBannerHeight(height);\n }\n };\n useEffect(() => {\n const height = getCurrentHeight();\n if (height) {\n setUpBanner(height);\n }\n setCanScroll(checkCanScroll());\n }, []);\n useEffect(() => {\n const height = getCurrentHeight();\n if (height) {\n setUpBanner(height);\n }\n setCanCollapse(size?.breakpoint !== LARGE_SCREEN &&\n typeof collapsedContent !== \"undefined\");\n setCanScroll(checkCanScroll());\n }, [size, collapsedContent, canScroll]);\n useEffect(() => {\n if (!canCollapse || !canScroll) {\n setCollapsing(false);\n return;\n }\n if (scrollDirection === DOWN && !isCollapsing) {\n setCollapsing(true);\n }\n if (scrollDirection === UP && scrollPosition === 0 && isCollapsing) {\n setCollapsing(false);\n }\n }, [DOWN, UP, canCollapse, isCollapsing, scrollDirection, scrollPosition]);\n const className = classnames(styles.Banner, {\n [styles[`Banner__${type}`]]: type,\n });\n const notCollapsibleClassNames = classnames(styles.Banner__not_collapsible, {\n [styles[`Banner__${type}`]]: type,\n });\n const attributes = {\n className,\n };\n return (React__default.createElement(React__default.Fragment, null,\n (!canCollapse || !canScroll) && (React__default.createElement(\"div\", { className: notCollapsibleClassNames }, children)),\n canCollapse && canScroll && (React__default.createElement(\"div\", { ref: bannerRef, ...attributes },\n React__default.createElement(\"div\", { className: styles.Banner__collapsed },\n !isCollapsing && (React__default.createElement(\"div\", { className: styles.Banner_inner_container, ref: expandedRef }, children)),\n isCollapsing && (React__default.createElement(\"div\", { className: styles.Banner__collapsed_content }, collapsedContent)))))));\n};\n\nexport { Banner };\n//# sourceMappingURL=Banner.js.map\n","import { useState, useRef, useEffect } from 'react';\nimport { Direction } from './constants.js';\n\nconst useScroll = () => {\n const { UP, DOWN } = Direction;\n const [scrollPosition, setScrollPosition] = useState(0);\n const [scrollDirection, setScrollDirection] = useState(UP);\n const prevPosition = useRef(0);\n const blocking = useRef(false);\n useEffect(() => {\n prevPosition.current = window.scrollY;\n const handleScroll = () => {\n const currentPosition = window.scrollY;\n if (Math.abs(currentPosition - prevPosition.current) >= 0) {\n const newScrollDirection = currentPosition > prevPosition.current ? DOWN : UP;\n setScrollDirection(newScrollDirection);\n prevPosition.current = currentPosition > 0 ? currentPosition : 0;\n }\n setScrollPosition(currentPosition);\n blocking.current = false;\n };\n const onScroll = () => {\n if (!blocking.current) {\n blocking.current = true;\n window.requestAnimationFrame(handleScroll);\n }\n };\n window.addEventListener(\"scroll\", onScroll);\n handleScroll();\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, [DOWN, UP]);\n return { scrollPosition, scrollDirection };\n};\n\nexport { useScroll as default };\n//# sourceMappingURL=index.js.map\n","import styleInject from '../../node_modules/style-inject/dist/style-inject.es.js';\n\nvar css_248z = \"@keyframes tlr-rotate_TQjyl{to{transform:rotate(360deg)}}@keyframes tlr-dash_NItHE{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.tlr-Button_4GoXJ{display:flex;align-items:center;justify-content:center;font-family:var(--tlr-typography-font-family-primary);font-size:1rem;font-weight:600;line-height:20px;outline:0;-webkit-appearance:none;background-color:var(--tlr-color-background-primary);color:var(--tlr-color-text-opposite);appearance:none;border-radius:8px;border:0;padding:18px 24px;height:56px}.tlr-Button_4GoXJ:hover{cursor:pointer;background-color:var(--tlr-color-interactive-primary-pressed)}.tlr-Button__danger_iOkSj{background-color:var(--tlr-color-interactive-danger-default)}.tlr-Button__danger_iOkSj:hover{background-color:var(--tlr-color-interactive-danger-pressed)}.tlr-Button__disabled_BR3FD{cursor:not-allowed;pointer-events:none;color:var(--tlr-color-text-secondary);background-color:var(--tlr-color-interactive-primary-disabled)}.tlr-Button__disabled_BR3FD .tlr-Button_SpinnerPath_wzioZ{stroke:var(--tlr-color-text-secondary)}.tlr-Button__disabled_BR3FD.tlr-Button__outlined_lXHYb{color:var(--tlr-color-text-tertiary);border-color:var(--tlr-color-interactive-primary-disabled)}.tlr-Button__disabled_BR3FD.tlr-Button__outlined_lXHYb .tlr-Button_SpinnerPath_wzioZ{stroke:var(--tlr-color-interactive-primary-disabled)}.tlr-Button__disabled_BR3FD.tlr-Button__danger_iOkSj:not(.tlr-Button__outlined_lXHYb){background-color:var(--tlr-color-interactive-danger-disabled)}.tlr-Button__outlined_lXHYb{background-color:transparent;color:var(--tlr-color-interactive-primary-default);border:2px solid var(--tlr-color-interactive-primary-default)}.tlr-Button__outlined_lXHYb:hover{background-color:var(--tlr-color-interactive-primary-pressed-out)}.tlr-Button__outlined_lXHYb .tlr-Button_SpinnerPath_wzioZ{stroke:var(--tlr-color-interactive-primary-default)}.tlr-Button__outlined_lXHYb.tlr-Button__danger_iOkSj{border:2px solid var(--tlr-color-interactive-danger-default)}.tlr-Button__outlined_lXHYb.tlr-Button__danger_iOkSj:hover{background-color:var(--tlr-color-interactive-danger-pressed-out)}.tlr-Button__outlined_lXHYb.tlr-Button__danger_iOkSj .tlr-Button_SpinnerPath_wzioZ{stroke:var(--tlr-color-text-tertiary)}.tlr-Button__outlined_lXHYb.tlr-Button__danger_iOkSj.tlr-Button__disabled_BR3FD{border-color:var(--tlr-color-interactive-danger-disabled)}.tlr-Button__outlined_lXHYb.tlr-Button__danger_iOkSj:not(.tlr-Button__disabled_BR3FD){color:var(--tlr-color-text-error)}.tlr-Button__outlined_lXHYb.tlr-Button__danger_iOkSj:not(.tlr-Button__disabled_BR3FD) .tlr-Button_SpinnerPath_wzioZ{stroke:var(--tlr-color-interactive-primary-default)}.tlr-Button__fullWidth_2ObWt{width:100%}.tlr-Button__isLoading_dLsUZ{padding:8px 24px}.tlr-Button__small_EPX-H{font-size:.875rem;height:40px;padding:11px 24px}.tlr-Button_Spinner_40Lmf{animation:tlr-rotate_TQjyl 2s linear infinite;width:30px;height:30px}.tlr-Button_SpinnerPath_wzioZ{stroke:var(--tlr-color-text-opposite);stroke-linecap:round;animation:tlr-dash_NItHE 1.5s ease-in-out infinite}\";\nvar styles = {\"Button\":\"tlr-Button_4GoXJ\",\"Button__danger\":\"tlr-Button__danger_iOkSj\",\"Button__disabled\":\"tlr-Button__disabled_BR3FD\",\"Button_SpinnerPath\":\"tlr-Button_SpinnerPath_wzioZ\",\"Button__outlined\":\"tlr-Button__outlined_lXHYb\",\"Button__fullWidth\":\"tlr-Button__fullWidth_2ObWt\",\"Button__isLoading\":\"tlr-Button__isLoading_dLsUZ\",\"Button__small\":\"tlr-Button__small_EPX-H\",\"Button_Spinner\":\"tlr-Button_Spinner_40Lmf\",\"rotate\":\"tlr-rotate_TQjyl\",\"dash\":\"tlr-dash_NItHE\"};\nstyleInject(css_248z);\n\nexport { styles as default };\n//# sourceMappingURL=Button.module.css.js.map\n","import React__default from 'react';\nimport classnames from 'classnames';\nimport styles from './Button.module.css.js';\n\nfunction Button({ children, danger, disabled, element, external, fullWidth, id, loading, outlined, role, size, submit, url, onClick, }) {\n const className = classnames(styles.Button, {\n [styles.Button__danger]: danger,\n [styles.Button__disabled]: disabled,\n [styles.Button__isLoading]: loading,\n [styles.Button__outlined]: outlined,\n [styles[`Button__${size}`]]: size,\n [styles.Button__fullWidth]: fullWidth,\n });\n const attributes = {\n id,\n disabled: disabled || loading,\n target: external ? \"_blank\" : null,\n href: url,\n onClick: () => handleClick(),\n className,\n };\n const loadingIcon = (React__default.createElement(\"svg\", { className: styles.Button_Spinner, viewBox: \"0 0 50 50\" },\n React__default.createElement(\"circle\", { className: styles.Button_SpinnerPath, cx: \"25\", cy: \"25\", r: \"20\", fill: \"none\", strokeWidth: \"5\" })));\n const handleClick = () => {\n // Handles click for logic and executes the passing callback\n if (onClick)\n onClick();\n return null;\n };\n if (element !== \"div\") {\n return (React__default.createElement(\"button\", { type: submit ? \"submit\" : \"button\", ...attributes }, loading ? loadingIcon : children));\n }\n else {\n return (React__default.createElement(\"div\", { role: role, ...attributes }, loading ? loadingIcon : children));\n }\n}\n\nexport { Button };\n//# sourceMappingURL=Button.js.map\n","import styleInject from '../../node_modules/style-inject/dist/style-inject.es.js';\n\nvar css_248z = \".tlr-Chip_PmK-K{align-items:center;background-color:var(--tlr-color-semantic-success-medium);border:0;border-radius:16px;color:var(--tlr-color-text-primary);display:inline-flex;flex-direction:row;font-family:var(--tlr-typography-font-family-primary);padding:3px 8px}.tlr-Chip_PmK-K>:first-child{margin-right:6px}.tlr-Chip__success_MS0KX{background-color:var(--tlr-color-semantic-success-medium)}.tlr-Chip__informative_oCESI{background-color:var(--tlr-color-semantic-info-medium)}.tlr-Chip__warning_SZYTU{background-color:var(--tlr-color-semantic-warning-medium)}.tlr-Chip__error_dwwT7{background-color:var(--tlr-color-semantic-error-medium)}.tlr-Chip__primary_6hXcl{background-color:var(--tlr-color-background-neutral)}.tlr-Chip__small_F3iFf{font:var(--tlr-font-body-12-regular)}.tlr-Chip__medium_pjM1r{font:var(--tlr-font-body-14-regular)}\";\nvar styles = {\"Chip\":\"tlr-Chip_PmK-K\",\"Chip__success\":\"tlr-Chip__success_MS0KX\",\"Chip__informative\":\"tlr-Chip__informative_oCESI\",\"Chip__warning\":\"tlr-Chip__warning_SZYTU\",\"Chip__error\":\"tlr-Chip__error_dwwT7\",\"Chip__primary\":\"tlr-Chip__primary_6hXcl\",\"Chip__small\":\"tlr-Chip__small_F3iFf\",\"Chip__medium\":\"tlr-Chip__medium_pjM1r\"};\nstyleInject(css_248z);\n\nexport { styles as default };\n//# sourceMappingURL=Chip.module.css.js.map\n","import React__default from 'react';\nimport classnames from 'classnames';\nimport styles from './Chip.module.css.js';\n\nfunction Chip({ children, id, type, size }) {\n const className = classnames(styles.Chip, {\n [styles[`Chip__${type}`]]: type,\n [styles[`Chip__${size}`]]: size,\n });\n const attributes = {\n id,\n className,\n };\n return (React__default.createElement(\"div\", { role: \"status\", ...attributes }, children));\n}\n\nexport { Chip };\n//# sourceMappingURL=Chip.js.map\n","import styleInject from '../../node_modules/style-inject/dist/style-inject.es.js';\n\nvar css_248z = \".tlr-Link_ddsTh{color:var(--tlr-color-text-primary);cursor:pointer;text-decoration:underline;display:flex;align-items:center;gap:12px;fill:var(--tlr-color-text-primary)}.tlr-Link_ddsTh:active{color:var(--tlr-color-interactive-primary-pressed);fill:var(--tlr-color-interactive-primary-pressed)}.tlr-Link___disabled_Ai-FG{color:var(--tlr-color-text-tertiary);fill:var(--tlr-color-text-tertiary);pointer-events:none;cursor:not-allowed}.tlr-Link___xsmall_eNQah{font:var(--tlr-font-link-12)}.tlr-Link___small_Qe2pc{font:var(--tlr-font-link-14)}.tlr-Link___medium_sMDut{font:var(--tlr-font-link-16)}.tlr-Link___large_7rddv{font:var(--tlr-font-link-18)}.tlr-Link___withIcon___right_Jwk-s{flex-direction:row-reverse}.tlr-Link___withIcon___up_EyNRx{flex-direction:column}.tlr-Link_ddsTh svg,.tlr-Link_ddsTh svg *{color:inherit;fill:inherit}\";\nvar styles = {\"Link\":\"tlr-Link_ddsTh\",\"Link___disabled\":\"tlr-Link___disabled_Ai-FG\",\"Link___xsmall\":\"tlr-Link___xsmall_eNQah\",\"Link___small\":\"tlr-Link___small_Qe2pc\",\"Link___medium\":\"tlr-Link___medium_sMDut\",\"Link___large\":\"tlr-Link___large_7rddv\",\"Link___withIcon___right\":\"tlr-Link___withIcon___right_Jwk-s\",\"Link___withIcon___up\":\"tlr-Link___withIcon___up_EyNRx\"};\nstyleInject(css_248z);\n\nexport { styles as default };\n//# sourceMappingURL=Link.module.css.js.map\n","import React__default from 'react';\nimport classnames from 'classnames';\nimport styles from './Link.module.css.js';\n\nfunction Link({ disabled = false, target = \"_blank\", label, icon, iconPosition, onClick, size = \"medium\", href, rel, }) {\n const className = classnames(styles.Link, styles[`Link___${size}`], {\n [styles[`Link___disabled`]]: disabled,\n }, {\n [styles[`Link___withIcon___${iconPosition}`]]: icon !== undefined &&\n iconPosition !== undefined &&\n iconPosition !== \"left\",\n });\n const handleClick = (event) => {\n if (!onClick)\n return;\n event.preventDefault();\n onClick();\n };\n const attributes = {\n className,\n onClick: handleClick,\n target,\n };\n // If href is not provided, the link will be rendered as a button\n if (href) {\n attributes.href = href;\n if (rel) {\n attributes.rel = rel;\n }\n }\n else {\n attributes.tabIndex = 0;\n attributes.role = \"button\";\n }\n return (React__default.createElement(\"a\", { ...attributes },\n icon,\n label));\n}\n\nexport { Link };\n//# sourceMappingURL=Link.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nconst SvgIconEye = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n})));\nvar IconEye = SvgIconEye;\n\nexport { IconEye as default };\n//# sourceMappingURL=IconEye.svg.js.map\n","import styleInject from '../../node_modules/style-inject/dist/style-inject.es.js';\n\nvar css_248z = \"@keyframes tlr-onAutoFillStart_LcSs6{to{box-sizing:content-box}}.tlr-TextField_Y4BgT{position:relative;text-align:left}.tlr-TextField_Y4BgT :hover{cursor:text}.tlr-TextField__label_L7EVG{font:var(--tlr-font-input-label);color:var(--tlr-color-text-secondary);text-transform:capitalize;position:absolute;top:18px;left:1rem;transition:top 250ms cubic-bezier(0,0,.2,1) 0ms;transform-origin:top left;z-index:10;pointer-events:none}.tlr-TextField__inputWrapper_-07MY{position:relative;display:inline-flex;align-items:flex-end;padding:6px 1rem;border:1px solid var(--tlr-color-style-stroke-active);background:var(--tlr-color-background-main);border-radius:8px;box-sizing:border-box;width:100%;height:56px;transition:border 200ms cubic-bezier(.4,0,.2,1) 0ms}.tlr-TextField__input_sWUyg{font:var(--tlr-font-input-text);color:var(--tlr-color-text-primary);flex-shrink:1;box-sizing:content-box;display:block;margin:0;padding:0;width:100%;border-width:0;background:0 0;-webkit-tap-highlight-color:transparent}.tlr-TextField__input_sWUyg:focus{outline:0}.tlr-TextField__input_sWUyg::placeholder{transition:opacity .15s ease-in-out;opacity:0}.tlr-TextField__input_sWUyg:-webkit-autofill{animation-name:tlr-onAutoFillStart_LcSs6}.tlr-TextField__input_sWUyg:autofill{animation-name:tlr-onAutoFillStart_LcSs6}.tlr-TextField__hint_KBsOW{font:var(--tlr-font-input-hint);color:var(--tlr-color-text-secondary);margin:0;margin-top:.5rem;padding:0 4px}.tlr-TextField___focus_AcHvu .tlr-TextField__label_L7EVG{top:4px}.tlr-TextField___focus_AcHvu .tlr-TextField__input_sWUyg::placeholder{opacity:.42}.tlr-TextField___active_dMexm:not(.tlr-TextField___disabled_g1uVc) .tlr-TextField__inputWrapper_-07MY{border-color:var(--tlr-color-style-stroke-active)}.tlr-TextField___focus_AcHvu:not(.tlr-TextField___active_dMexm) .tlr-TextField__label_L7EVG{color:var(--tlr-color-text-tertiary)}.tlr-TextField___error_u6h36 .tlr-TextField__hint_KBsOW{color:var(--tlr-color-text-error)}.tlr-TextField___error_u6h36:not(.tlr-TextField___disabled_g1uVc) .tlr-TextField__inputWrapper_-07MY{border-color:var(--tlr-color-style-stroke-error)}.tlr-TextField___disabled_g1uVc{pointer-events:none}.tlr-TextField___disabled_g1uVc .tlr-TextField__input_sWUyg{color:var(--tlr-color-text-tertiary)}.tlr-TextField___disabled_g1uVc,.tlr-TextField___disabled_g1uVc .tlr-TextField__label_L7EVG{color:var(--tlr-color-text-quaternary)}.tlr-TextField___disabled_g1uVc .tlr-TextField__inputWrapper_-07MY{background:var(--tlr-color-background-neutral);border-color:var(--tlr-color-style-stroke-default)}.tlr-TextField___disabled_g1uVc .tlr-TextField__icon_fO2Ym{opacity:.5}.tlr-TextField__TogglePassword_tcPXU{position:relative;-webkit-user-select:none;user-select:none;display:block;width:24px;height:24px;margin:8px 0 8px 10px;flex-shrink:0}.tlr-TextField__TogglePassword_tcPXU:hover{cursor:pointer}.tlr-TextField__TogglePassword_tcPXU:after{content:\\\"\\\";position:absolute;top:3px;left:13%;transform:rotate(45deg) scaleX(0);transform-origin:left center;width:97%;border-top:2px solid var(--tlr-color-background-secondary);box-shadow:0-1px 0 .03em var(--tlr-color-background-main);transition:transform .25s}.tlr-TextField__TogglePassword_tcPXU svg{fill:var(--tlr-color-background-secondary);-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:auto}.tlr-TextField__TogglePassword___slash_oEon1:after{transform:rotate(45deg) scaleX(1)}.tlr-TextField__icon_fO2Ym{height:100%;display:flex;align-items:center;padding-left:16px}\";\nvar styles = {\"TextField\":\"tlr-TextField_Y4BgT\",\"TextField__label\":\"tlr-TextField__label_L7EVG\",\"TextField__inputWrapper\":\"tlr-TextField__inputWrapper_-07MY\",\"TextField__input\":\"tlr-TextField__input_sWUyg\",\"onAutoFillStart\":\"tlr-onAutoFillStart_LcSs6\",\"TextField__hint\":\"tlr-TextField__hint_KBsOW\",\"TextField___focus\":\"tlr-TextField___focus_AcHvu\",\"TextField___active\":\"tlr-TextField___active_dMexm\",\"TextField___disabled\":\"tlr-TextField___disabled_g1uVc\",\"TextField___error\":\"tlr-TextField___error_u6h36\",\"TextField__icon\":\"tlr-TextField__icon_fO2Ym\",\"TextField__TogglePassword\":\"tlr-TextField__TogglePassword_tcPXU\",\"TextField__TogglePassword___slash\":\"tlr-TextField__TogglePassword___slash_oEon1\"};\nstyleInject(css_248z);\n\nexport { styles as default };\n//# sourceMappingURL=TextField.module.css.js.map\n","import React__default, { forwardRef, useState, useRef, useId, useCallback, useEffect, useImperativeHandle } from 'react';\nimport classnames from 'classnames';\nimport styles from './TextField.module.css.js';\nimport IconEye from './IconEye.svg.js';\n\n/* eslint-disable react/display-name */\nconst TextField = forwardRef(({ label, name, placeholder, type, required, disabled, passwordToggleVisibility, value, hint, error, icon, ...props }, ref) => {\n const [focus, setFocus] = useState(value ? true : false);\n const [active, setActive] = useState(value ? true : false);\n const [autoFill, setAutofill] = useState(false);\n const [passwordHidden, setPasswordHidden] = useState(true);\n const [inputError, setInputError] = useState(error);\n const inputBoxRef = useRef(null);\n const inputRef = useRef(null);\n const id = useId();\n const handleClickOutside = useCallback((event) => {\n if (focus === false) {\n inputRef.current.blur();\n return;\n }\n if (event.type === \"blur\" && inputRef.current.value === \"\") {\n setFocus(false);\n setActive(false);\n }\n if (event instanceof MouseEvent &&\n event.target instanceof HTMLElement &&\n event.target.contains(inputBoxRef.current)) {\n if (inputRef.current.value === \"\")\n setFocus(false);\n setActive(false);\n }\n }, [focus, inputRef]);\n const handleFocus = () => {\n setFocus(true);\n setActive(true);\n };\n const handleTyping = () => {\n // clear possible errors\n setInputError(false);\n };\n const togglePassword = () => {\n if (inputRef.current.type === \"password\") {\n inputRef.current.type = \"text\";\n setPasswordHidden(false);\n }\n else {\n inputRef.current.type = \"password\";\n setPasswordHidden(true);\n }\n };\n useEffect(() => {\n if (focus)\n inputRef.current.focus();\n document.addEventListener(\"click\", handleClickOutside);\n return () => {\n document.removeEventListener(\"click\", handleClickOutside);\n };\n }, [focus, handleClickOutside]);\n useEffect(() => {\n setInputError(error);\n }, [error]);\n useEffect(() => {\n const input = inputRef.current;\n const onAnimationStart = (e) => {\n if (e.animationName === styles.onAutoFillStart) {\n setAutofill(true);\n }\n };\n input.addEventListener(\"animationstart\", onAnimationStart);\n return () => {\n input.removeEventListener(\"animationstart\", onAnimationStart);\n };\n }, []);\n useImperativeHandle(ref, () => ({\n clearValue: () => {\n inputRef.current.value = \"\";\n setFocus(false);\n },\n }));\n const TextFieldStyles = classnames(styles.TextField, {\n [styles.TextField___focus]: focus || autoFill,\n [styles.TextField___active]: active,\n [styles.TextField___error]: inputError,\n [styles.TextField___disabled]: disabled,\n });\n const fieldProps = {\n className: styles.TextField__input,\n placeholder: placeholder\n ? placeholder.charAt(0).toUpperCase() + placeholder.slice(1)\n : \"\",\n name,\n defaultValue: value,\n required,\n disabled,\n type,\n onClick: handleFocus,\n onFocus: handleFocus,\n onBlur: handleClickOutside,\n onKeyDown: handleTyping,\n ...props,\n };\n const TogglePasswordStyles = classnames(styles.TextField__TogglePassword, {\n [styles.TextField__TogglePassword___slash]: passwordHidden,\n });\n const renderIcon = () => {\n if (type === \"password\" && passwordToggleVisibility) {\n return (React__default.createElement(\"span\", { className: TogglePasswordStyles, onClick: togglePassword, \"aria-hidden\": true },\n React__default.createElement(IconEye, null)));\n }\n else if (icon) {\n return (React__default.createElement(\"span\", { className: styles.TextField__icon, \"aria-hidden\": true }, icon));\n }\n };\n return (React__default.createElement(\"div\", { className: TextFieldStyles },\n React__default.createElement(\"label\", { htmlFor: id },\n React__default.createElement(\"span\", { className: styles.TextField__label },\n label,\n required ? \" *\" : \"\"),\n React__default.createElement(\"div\", { className: styles.TextField__inputWrapper, ref: inputBoxRef },\n React__default.createElement(\"input\", { id: id, ref: inputRef, ...fieldProps }),\n renderIcon())),\n hint && React__default.createElement(\"p\", { className: styles.TextField__hint }, hint)));\n});\nTextField.displayName = \"TextField\";\n\nexport { TextField };\n//# sourceMappingURL=TextField.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport { styleInject as default };\n//# sourceMappingURL=style-inject.es.js.map\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { padStart, roundTo, hasRelative, formatOffset } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\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\nexport const monthsShort = [\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\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpretted as current century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050\n * @example Settings.twoDigitCutoffYear = 1950 // interpretted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpretted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.formatToParts();\n }\n\n formatInterval(interval, opts = {}) {\n const df = this.loc.dtFormatter(interval.start, { ...this.opts, ...opts });\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction 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 .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n };\n\n const value = this.shiftTo(\"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n\n let fmt = opts.format === \"basic\" ? \"hhmm\" : \"hh:mm\";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === \"basic\" ? \"ss\" : \":ss\";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += \".SSS\";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { relative: false }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n results[unit]--;\n cursor = earlier.plus(results);\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n return parts.map((p) => tokenForPart(p, formatOpts));\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(opts);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {DateTime} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized });\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n"],"names":["defaultMakeData","Object","create","_a","Array","prototype","forEach","slice","Trie","weakness","makeData","this","lookup","array","_i","arguments","length","lookupArray","node","call","key","getChildTrie","data","map","value","isObjRef","weak","WeakMap","strong","Map","child","get","set","currentContext","MISSING_VALUE","idCounter","globalKey","host","Slot","id","Date","now","Math","random","toString","join","hasValue","context_1","parent","slots","getValue","withValue","callback","args","thisArg","__proto__","apply","bind","context","saved","noContext","defineProperty","enumerable","writable","configurable","defaultDispose","Cache","max","dispose","Infinity","newest","oldest","has","getNode","older","newer","clean","size","delete","parentEntrySlot","maybeUnsubscribe","entryOrDep","unsubscribe","emptySetPool","assert","condition","optionalMessage","Error","valueGet","Entry","fn","parents","Set","childValues","dirtyChildren","dirty","recomputing","deps","count","peek","mightBeDirty","recompute","add","reportDirtyChild","reportCleanChild","rememberParent","entry","forgetChildren","recomputeNewValue","subscribe","e","setDirty","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","_this","forgetChild","dependOn","dep","pop","forgetDeps","clear","push","a","b","len","childValue","removeDirtyChild","dc","_value","options","depsByKey","depend","dep_1","keyTrie","defaultMakeCacheKey","caches","wrap","originalFunction","cache","pow","keyArgs","makeCacheKey","optimistic","forget","ApolloCache","getFragmentDoc","recordOptimisticTransaction","transaction","optimisticId","performTransaction","transformDocument","document","identify","object","gc","modify","transformForLink","readQuery","read","rootId","query","variables","returnPartialData","readFragment","fragment","fragmentName","writeQuery","write","dataId","result","broadcast","writeFragment","MissingFieldError","message","path","clientOnly","hasOwn","hasOwnProperty","TypeOrFieldNameRegExp","storeFieldName","match","selectionSetMatchesResult","selectionSet","isArray","every","item","selections","field","storeValueIsStoreObject","DELETE","delModifier","INVALIDATE","EntityStore","policies","group","rootIds","refs","getFieldValue","objectOrReference","__ref","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","ref","merge","toObject","fieldName","storeObject","rootTypenamesById","Layer","dependOnExistence","incoming","existing","merged","storeObjectReconciler","caching","fieldsToDirty_1","__exists","keys","hasKeyArgs","__typename","fields","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","isReference","readField","fieldNameOrOptions","from","store","fieldValue","newValue","storage","getStorage","typename","getStoreFieldName","evict","evicted","replace","extract","obj","extraRootIds","getRootIdSet","__META","sort","newData","rest_1","retain","release","ids","snapshot","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","canTraverse_1","values","filter","keyMaker","CacheGroup","d","makeDepKey","Root","_super","_b","resultCaching","seed","storageTrie","sharedLayerGroup","addLayer","layerId","replay","removeLayer","fromParent","p","existingObject","incomingObject","property","existingValue","incomingValue","supportsResultCaching","missingFromInvariant","err","StoreReader","config","executeSelectionSet","execSelectionSetImpl","varString","knownResults","executeSubSelectedArray","execSubSelectedArrayImpl","addTypename","diffQueryAgainstStore","_c","execResult","JSON","stringify","fragmentMap","hasMissingFields","missing","complete","isFresh","latest","objectsToMerge","finalResult","getMissing","handleMissing","rootIdsByTypename","workSet","selection","name","resultName","wasClientOnly","directives","some","fragmentMatches","childResult","i","StoreWriter","reader","writeToStore","operationDefinition","merger","processSelectionSet","mergeTree","written","keyObject","sets","indexOf","incomingFields","resultFieldKey","childTree","getChildMergeTree","processFieldValue","childTypename","getMergeFunction","info","maybeRecycleChildMergeTree","usingPossibleTypes","entityRef_1","applyMerges","getStorageArgs","e_1","i_1","getValue_1","String","eVal","iVal","aVal","runMergeFunction","emptyMergeTreePool","cacheSlot","consumeAndIterate","items_1","cacheInfoMap","getCacheInfo","vars","makeVar","listeners","rv","listener","attach","onNextChange","attachCache","forgetCache","broadcastWatches","argsFromFieldSpecifier","spec","defaultDataIdFromObject","_id","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","_","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","dataIdFromObject","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","ROOT_QUERY","policy","getTypePolicy","keyFn","specifierOrId","keyFieldsFnFromSpecifier","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","keyArgsFnFromSpecifier","which","toUpperCase","old","supertype","getSupertypeSet","subtype","RegExp","policy_1","supertypes","rest","assign","inbox","splice","createIfMissing","fieldPolicies","supertypeSet","typeCondition","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","regExp","fuzzyString","fieldSpec","specifierOrString","readOptions","makeFieldFunctionOptions","parentTypename","makeMergeObjectsFunction","eType","iType","specifier","computeKeyObject","trie","aliasMap","makeAliasMap","workQueue","alias","responseKey","storeKey","aliases","subsets","response","strict","prevKey","keyObj","s","subset","responseName","defaultConfig","InMemoryCache","watches","typenameDocumentCache","txCount","maybeBroadcastWatch","c","fromOptimisticTransaction","broadcastWatch","optimisticData","watchDep","storeWriter","storeReader","restore","diff","watch","immediate","reset","Promise","resolve","removeOptimistic","idToRemove","newOptimisticData","perform","layer","LocalState","client","resolvers","fragmentMatcher","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","then","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","getCacheKey","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","Directive","enter","arg","kind","rootValue","mainDefinition","fragments","definitionOperation","defaultOperationType","execContext","operation","charAt","resolveSelectionSet","resultsToMerge","execute","resolveField","fieldResult","fragmentResult","all","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","directive","resolveSubSelectedArray","destructiveMethodCounts","wrapDestructiveCacheMethod","methodName","original","cancelNotifyTimeout","clearTimeout","QueryInfo","lastRequestId","subscriptions","stopped","observableQuery","init","networkStatus","networkError","graphQLErrors","setObservableQuery","getDiff","updateWatch","setDiff","oldDiff","notifyTimeout","setTimeout","notify","oq","oqListener","reobserve","shouldNotify","fetchPolicy","stop","cancel","sub","stopPolling","lastWatch","shouldWrite","lastWrite","dmCount","markResult","allowCacheWrite","errors","shouldWriteResult","errorPolicy","markReady","markError","error","ignoreErrors","writeWithErrors","QueryManager","link","queryDeduplication","onBroadcast","ssrMode","_d","clientAwareness","localState","assumeImmutableResults","queries","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","mutationStore","_info","queryId","stopQueryNoBroadcast","cancelPendingFetches","mutate","mutation","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","update","_e","mutationId","mutationStoreValue","self","_f","label","generateMutationId","transform","getVariables","hasClientExports","sent","loading","markMutationOptimistic","broadcastQueries","reject","storeResult","getObservableFromLink","next","markMutationResult","refetchQueryPromises","refetchQuery","hasObservers","queryName","refetch","queryOptions","cacheWrites_1","updateQueries_1","updater","currentQueryResult","nextQueryResult","mutationResult","queryVariables","fetchQuery","fetchQueryObservable","promise","getQueryStore","resetErrors","queryInfo","undefined","transformed","forLink","cacheEntry_1","hasForcedResolvers","defaultVars","doc","watchQuery","notifyOnNetworkStatusChange","observable","ObservableQuery","queryManager","pollInterval","generateQueryId","finally","stopQuery","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","resetStore","reFetchObservableQueries","includeStandby","observableQueryPromises","resetLastResults","getQuery","startGraphQLSubscription","makeObservable","observablePromise_1","observer","removeQuery","getLocalState","deduplication","inFlightLinkObservables_1","operationName","forceFetch","byVariables_1","varJson_1","concast","cleanup","getResultsFromLink","requestId","hasErrors","aqr","oldNetworkStatus","normalized","fromVariables","fetchQueryByPolicy","reason","nextFetchPolicy","readCache","resultsFromCache","fromData","partial","resolved","resultsFromLink","newContext","mergeOptions","defaults","ApolloClient","defaultOptions","resetStoreCallbacks","clearStoreCallbacks","uri","credentials","headers","ssrForceFetchDelay","connectToDevTools","window","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","version","ApolloLink","disableNetworkFetches","devToolsHookCb","action","state","mutations","dataWithOptimisticResults","__actionHookForDevTools","cb","__requestRaw","payload","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","Reobserver","fetch","shouldFetch","newOptions","newNetworkStatus","updateOptions","updatePolling","removeObserver","addObserver","pollingInfo","timeout","interval","maybeFetch","poll","onSubscribe","observers","lastError","isDifferentFromLastResult","updateLastResult","lastResult","isTornDown","opDef","subscription","getCurrentResult","saveAsLastResult","newResult","lastResultSnapshot","getLastResult","getLastError","resetQueryStoreErrors","reobserveOptions","newReobserver","fetchMore","fetchMoreOptions","combinedOptions","qid","observe","fetchMoreResult","updateQuery","previous","subscribeToMore","subscriptionData","onError","setOptions","setVariables","mapFn","previousResult","startPolling","getReobserver","reobserver","subObserver","_subscription","_observer","defaultSubscriptionObserverErrorCallback","first","catch","tearDownQuery","shareOptions","currentOptions","NetworkStatus","isNetworkRequestInFlight","isApolloError","ApolloError","errorMessage","extraInfo","graphQLError","passthrough","op","forward","toLink","handler","isTerminating","request","LinkError","empty","links","reduce","x","y","concat","split","test","left","right","leftLink","rightLink","second","firstLink","nextLink","setOnError","serializeFetchParameter","serialized","parseError","fallbackHttpConfig","http","includeQuery","includeExtensions","accept","method","createHttpLink","linkOptions","fetcher","useGETForQueries","includeUnusedVariables","requestOptions","checkFetcher","linkConfig","fetchOptions","chosenURI","fallbackURI","getContext","selectURI","clientAwarenessHeaders","name_1","controller","contextHeaders","contextConfig","fallbackConfig","configs","extensions","body","selectHttpOptionsAndBody","unusedNames_1","Variable","_key","signal","AbortController","createSignalIfSupported","_controller","definitions","queryParams","addQueryParam","encodeURIComponent","serializedVariables","serializedExtensions","preFragment","fragmentStart","substr","queryParamsPrefix","newURI","rewriteURIForGET","operations","setContext","text","bodyText","parse","statusCode","status","abort","HttpLink","fromError","errorValue","throwServerError","validateOperation","OPERATION_FIELDS","createOperation","starting","transformOperation","transformedOperation","root","Symbol","for","g","module","extendStatics","setPrototypeOf","__extends","__","constructor","__assign","t","n","__rest","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","_arguments","P","generator","fulfilled","step","rejected","done","__generator","f","trys","ops","verb","iterator","v","TypeError","__spreadArrays","il","r","k","j","jl","displayName","ApolloProvider","children","ApolloContext","Consumer","Provider","OperationData","isMounted","previousOptions","getOptions","storePrevious","unmount","refreshClient","isNew","verifyDocumentType","type","parser","SubscriptionData","setResult","currentObservable","initialize","skip","currentResult","getLoadingResult","shouldResubscribe","startSubscription","afterExecute","endSubscription","updateCurrentData","updateError","completeSubscription","updateResult","onSubscriptionData","onSubscriptionComplete","MutationData","runMutation","mutationFunctionOptions","onMutationStart","generateNewMutationId","onMutationCompleted","onMutationError","mostRecentMutationId","ignoreResults","called","onCompleted","isMostRecentMutation","QueryData","onNewData","runLazy","runLazyQuery","lazyOptions","getQueryResult","observableQueryFields","partialRefetch","previousData","obsRefetch","obsFetchMore","obsUpdateQuery","obsStartPolling","obsStopPolling","obsSubscribeToMore","removeQuerySubscription","removeObservable","updateObservableQuery","startQuerySubscription","getExecuteSsrResult","getExecuteResult","executeLazy","fetchData","ssr","lazy","handleErrorOrCompleted","ssrInitiated","renderPromises","ssrDisabled","fetchDisabled","ssrLoading","stale","addQueryPromise","prepareObservableQueryOptions","initializeObservableQuery","getSSRObservable","observableQueryOptions","registerSSRObservable","newObservableQueryOptions","currentSubscription","resubscribeToQuery","andDelete","useBaseQuery","useContext","useReducer","tick","forceUpdate","updatedOptions","queryDataRef","useRef","queryData","current","memoFn","memo","queryResult","useEffect","useLazyQuery","useMutation","useState","mutationDataRef","mutationData","useQuery","DocumentType","Query","Mutation","Subscription","cached","definition","variableDefinitions","shouldInclude","isInclusionDirective","directiveArguments","ifArgument","ifValue","getInclusionDirectives","evaledValue","hasDirectives","names","getDirectiveNames","getFragmentQueryDocument","actualFragmentName","createFragmentMap","symTable","getFragmentFromSelection","makeReference","Boolean","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","Number","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","variableValue","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","storeKeyNameFromField","directivesObj","getStoreKeyName","KNOWN_DIRECTIVES","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","argumentsObjectFromField","argObj_1","resultKeyNameFromField","getTypenameFromResult","isInlineFragment","checkDocument","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","queryDef","getMainDefinition","queryDoc","fragmentDefinition","getDefaultValues","defaultValues","defs","def","defaultValue","variable","filterInPlace","target","elem","TYPENAME_FIELD","isEmpty","nullIfDocIsEmpty","fragmentDef","getFragmentDefinition","getDirectiveMatcher","dir","removeDirectivesFromDocument","variablesInUse","variablesToRemove","fragmentSpreadsInUse","fragmentSpreadsToRemove","modifiedDoc","Field","remove","getAllFragmentSpreadsFromSelectionSet","frag","FragmentSpread","argMatcher","argument","aConfig","getArgumentMatcher","OperationDefinition","varDef","argConfig","argMatchCount_1","Argument","removeArgumentsFromDocument","fs","FragmentDefinition","removeFragmentSpreadFromDocument","addTypenameToDocument","SelectionSet","lastIndexOf","added","connectionRemoveConfig","willRemove","removeConnectionDirectiveFromDocument","allFragments","buildQueryFromSelectionSet","removeClientSetsFromDocument","sources","mergeDeepArray","DeepMerger","isObject","defaultReconciler","source","reconciler","pastCopies","sourceKey","targetValue","shallowCopyForMerge","getPrototypeOf","fakeObsSymbol","cloneDeep","cloneDeepHelper","val","seen","copy_1","copy_2","maybeDeepFreeze","iterateObserversSafely","observersWithMethod","obs","asyncMap","catchFn","activeCallbackCount","completed","promiseQueue","makeCallback","examiner","delegate","both","caught","fixObservableSubclass","subclass","species","isPromiseLike","Concast","addCount","handlers","shift","iterable","start","deliverLastMessage","nextOrError","quietly","once","isNonEmptyArray","graphQLResultHasError","canUseWeakMap","navigator","product","compact","objects","exports","regionAPIs","onUserEmailSupplied","showConversation","showTicket","startChecklist","startSurvey","showNews","showArticle","startTour","getVisitorId","trackEvent","onUnreadCountChange","onShow","onHide","showNewMessage","showMessages","showSpace","show","hide","shutdown","boot","Intercom","constants_1","instance_manager_1","callIntercomMethod","console","warn","props","region","intercomSettings","api_base","spaceName","prePopulatedContent","tourId","articleId","newsItemId","surveyId","checklistId","ticketId","conversationId","scriptElementId","queueHolder","loaderQueue","q","addWidgetToPage","getElementById","createElement","async","src","app_id","getElementsByTagName","parentNode","insertBefore","isDocumentReady","readyState","w","ic","installation_type","addEventListener","attachEvent","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","dynamicSamplingContextToSentryBaggageHeader","dynamicSamplingContext","entries","baggageHeader","objectKey","objectValue","currentIndex","baggageEntry","newBaggageHeader","__SENTRY_DEBUG__","logger","objectToBaggageHeader","acc","dscKey","dscValue","baggageHeaderToObject","keyOrValue","decodeURIComponent","trim","TRACEPARENT_REGEXP","tracingContextFromHeaders","sentryTrace","baggage","traceparentData","traceparent","matches","parentSampled","traceId","parentSpanId","extractTraceparentData","is","baggageObject","curr","baggageHeaderToDynamicSamplingContext","propagationContext","spanId","substring","sampled","dsc","generateSentryTraceHeader","sampledString","SpanRecorder","maxlen","_maxlen","spans","span","spanRecorder","Span","spanContext","startTimestamp","tags","instrumenter","description","endTimestamp","startChild","childSpan","logMessage","metadata","spanMetadata","log","setTag","setData","setStatus","setHttpStatus","httpStatus","spanStatus","spanStatusfromHttpCode","setName","isSuccess","finish","toTraceparent","toContext","updateWithContext","getTraceContext","parent_span_id","span_id","trace_id","toJSON","start_timestamp","timestamp","Transaction","transactionContext","hub","super","_measurements","_contexts","_hub","_name","_trimEnd","trimEnd","incomingDynamicSamplingContext","_frozenDynamicSamplingContext","newName","initSpanRecorder","setMeasurement","unit","setMetadata","newMetadata","getClient","emit","recordDroppedEvent","finishedSpans","prev","contexts","trace","sdkProcessingMetadata","getDynamicSamplingContext","transaction_info","measurements","captureEvent","scope","getScope","maybeSampleRate","sampleRate","sample_rate","setHub","TRACING_DEFAULTS","idleTimeout","finalTimeout","heartbeatInterval","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","IdleTransaction","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","activities","_heartbeatCounter","_finished","_idleTimeoutCanceledPermanently","_beforeFinishCallbacks","_finishReason","configureScope","setSpan","_restartIdleTimeout","toISOString","spanStartedBeforeTransactionFinish","timeoutWithMarginOfError","spanEndedBeforeFinalTimeout","stringifiedSpan","getTransaction","registerBeforeFinishCallback","pushActivity","popActivity","_pingHeartbeat","cancelIdleTimeout","restartOnChildSpanChange","_idleTimeoutID","setFinishReason","_beat","heartbeatString","_prevHeartbeatString","hasTracingEnabled","maybeOptions","__SENTRY_TRACING__","enableTracing","getActiveTransaction","maybeHub","errorsInstrumented","errorCallback","activeTransaction","traceHeaders","getSpan","sample","samplingContext","tracesSampler","tracesSampleRate","rate","isValidSampleRate","_startTransaction","customSamplingContext","configInstrumenter","transactionInstrumenter","_experiments","startIdleTransaction","onScope","addTracingExtensions","carrier","__SENTRY__","startTransaction","tag","WINDOW","bindReporter","metric","reportAllChanges","prevValue","delta","forceReport","getNavigationEntry","__WEB_VITALS_POLYFILL__","performance","getEntriesByType","timing","navigation","navigationEntry","entryType","startTime","navigationStart","getNavigationEntryFromPerformanceTiming","getActivationStart","navEntry","activationStart","initMetric","navigationType","prerendering","rating","floor","opts","PerformanceObserver","supportedEntryTypes","includes","po","list","getEntries","buffered","onHidden","onHiddenOrPageHide","event","visibilityState","removeEventListener","firstHiddenTime","getVisibilityWatcher","timeStamp","reportedMetricIDs","isMeasurementValue","isFinite","_startChild","ctx","msToSec","time","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","startTrackingWebVitals","mark","onReport","visibilityWatcher","report","handleEntry","processingStart","handleEntries","takeRecords","disconnect","onFID","timeOrigin","clsCallback","sessionValue","sessionEntries","hadRecentInput","firstSessionEntry","lastSessionEntry","stopListening","onCLS","lcpCallback","lastEntry","capture","onLCP","addPerformanceEntries","performanceEntries","responseStartTimestamp","requestStartTimestamp","duration","_addPerformanceNavigationTiming","requestStart","responseEnd","responseStart","_addRequest","_addNavigationSpans","measureStartTimestamp","measureEndTimestamp","_addMeasureSpans","firstHidden","shouldRecord","resourceName","location","origin","initiatorType","transferSize","encodedBodySize","decodedBodySize","renderBlockingStatus","_addResourceSpans","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","_trackNavigator","oldValue","measurementTimestamp","normalizedValue","abs","fidMark","cls","measurementName","element","url","index","_tagMetricInfo","eventEnd","end","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","traceFetch","traceXHR","enableHTTPTimings","tracingOrigins","tracePropagationTargets","instrumentOutgoingRequests","_options","shouldCreateSpanForRequest","shouldCreateSpan","shouldAttachHeadersWithTargets","string","shouldAttachHeaders","handlerData","createdSpan","shouldCreateSpanResult","__span","contentLength","contentLengthNum","parseInt","parentSpan","requestSpan","getPropagationContext","sentryTraceHeader","sentryBaggageHeader","Request","Headers","newHeaders","append","existingBaggageHeader","newBaggageHeaders","addTracingHeadersToFetchRequest","fetchCallback","addHTTPTimings","xhr","sentryXhrData","__sentry_own_request__","__sentry_xhr_span_id__","status_code","setRequestHeader","setHeaderOnXhr","xhrCallback","endsWith","resourceTiming","nextHopProtocol","char","isNaN","extractNetworkProtocol","timingSpanData","getAbsoluteTime","redirectStart","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","resourceTimingEntryToSpanData","entryTypes","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","href","pathname","to","enableLongTask","BrowserTracing","_hasSetTracePropagationTargets","_collectWebVitals","enableInteractions","durationThreshold","setupOnce","getCurrentHub","_getCurrentHub","clientOptions","instrumentRouting","clientOptionsTracePropagationTargets","_createRouteTransaction","onStartRouteTransaction","hidden","statusType","_registerInteractionListener","beforeNavigate","isPageloadTransaction","getMetaContent","expandedContext","modifiedContext","finalContext","_latestRouteName","_latestRouteSource","idleTransaction","setPropagationContext","inflightInteractionTransaction","registerInteractionTransaction","currentTransaction","metaName","metaTag","getAttribute","DEFAULT_ENVIRONMENT","captureException","exception","captureContext","withScope","DEFAULT_BREADCRUMBS","Hub","_version","_stack","bindClient","isOlderThan","getStackTop","setupIntegrations","pushScope","getStack","popScope","hint","eventId","_lastEventId","event_id","syntheticException","_withClient","originalException","captureMessage","level","lastEventId","addBreadcrumb","breadcrumb","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","finalBreadcrumb","setUser","user","setTags","setExtras","extras","setExtra","extra","run","oldHub","makeMain","getIntegration","integration","_oO","_callExtensionMethod","captureSession","endSession","_sendSessionUpdate","session","getSession","setSession","startSession","environment","userAgent","getUser","currentSession","shouldSendDefaultPii","sendDefaultPii","sentry","getMainCarrier","registry","getHubFromCarrier","setHubOnCarrier","acs","getGlobalHub","hasHubOnCarrier","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","static","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","fingerprint","setLevel","setTransactionName","updatedScope","maxCrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","transactionName","_applyFingerprint","breadcrumbs","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","processors","processor","final","addGlobalEventProcessor","makeSession","startingTime","sid","started","ignoreDuration","did","attrs","ip_address","ipAddress","user_agent","sessionToJSON","updateSession","email","username","closeSession","getDynamicSamplingContextFromClient","publicKey","public_key","getDsn","segment","user_segment","SDK_VERSION","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","InboundFilters","eventProcess","internalOptions","allowUrls","denyUrls","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_mergeOptions","_isSentryError","oO","_getPossibleEventMessages","_isIgnoredError","_isIgnoredTransaction","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","frames","stacktrace","frame","filename","_getLastValidUrl","__initStatic","originalFunctionToString","FunctionToString","Function","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","isDefaultInstance","finalIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","debugIndex","arr","findIndex","debugInstance","setupIntegration","integrationIndex","DSN_REGEX","dsn","withPassword","pass","port","projectId","protocol","dsnFromComponents","components","str","exec","lastPath","projectMatch","dsnFromString","find","component","isValidProtocol","validateDsn","normalize","input","depth","maxProperties","visit","ERROR","normalizeToSize","maxSize","encodeURI","utf8Length","hasWeakSet","WeakSet","inner","memoBuilder","memoize","unmemoize","stringified","_events","objName","getConstructorName","stringifyValue","startsWith","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","createEnvelope","items","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","textEncoder","TextEncoder","encode","serializeEnvelope","envHeaders","parts","itemHeaders","Uint8Array","stringifiedPayload","buffers","totalLength","buf","offset","buffer","concatBuffers","createAttachmentEnvelopeItem","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","profile","replay_event","replay_recording","check_in","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","sdk","SentryError","logLevel","getBaseApiEndpoint","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","tunnel","sdkInfo","_metadata","_getIngestEndpoint","sentry_key","sentry_version","sentry_client","_encodedAuth","createEventEnvelope","eventType","packages","enhanceEventWithSdkInfo","envelopeHeaders","sent_at","createEventEnvelopeHeaders","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","dist","maxValueLength","applyClientOptions","integrationNames","applyIntegrationsMetadata","stackParser","debugIdMap","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","debug_id","applyDebugIds","finalScope","attachments","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","normalizeEvent","ALREADY_SEEN_ERROR","isErrorEvent","isTransactionEvent","exceptionFromError","ex","parseStackFrames","extractMessage","eventFromError","stack","popSize","framesToPop","reactMinifiedRegexp","getPopSize","eventFromUnknownInput","attachStacktrace","isUnhandledRejection","domException","eventFromString","code","getNonErrorObjectExceptionValue","__serialized__","eventFromPlainObject","synthetic","captureType","getObjectClassName","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","before","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","mechanism","getOwnPropertyDescriptor","validSeverityLevels","severityLevelFromString","parseUrl","search","hash","relative","MAX_ALLOWED_STRING_LENGTH","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","dom","history","_consoleBreadcrumb","_innerDomBreadcrumb","keyAttrs","serializeAttribute","maxStringLength","_isEvent","category","global","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","addSentryBreadcrumb","parsedLoc","parsedFrom","parsedTo","BrowserClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_dsn","_transport","transport","transportOptions","_process","eventFromException","_captureEvent","promisedEvent","eventFromMessage","_isEnabled","sendSession","getSdkMetadata","getTransport","flush","_isClientDoneProcessing","clientFinished","transportFlushed","close","enabled","getIntegrationById","integrationId","addIntegration","sendEvent","env","_sendEnvelope","sendResponse","createSessionEnvelope","_event","sendClientReports","on","hook","_updateSessionFromEvent","crashed","errored","exceptions","handled","sessionNonTerminal","ticked","setInterval","clearInterval","_prepareEvent","_processEvent","finalEvent","sentryError","isTransaction","isError","beforeSendLabel","dataCategory","__sentry__","beforeSend","beforeSendTransaction","processBeforeSend","beforeSendResult","invalidValueError","_validateBeforeSendResult","processedEvent","transactionInfo","send","_clearOutcomes","outcomes","quantity","sdkSource","_flushOutcomes","breadcrumbIntegration","captureUserFeedback","feedback","createUserFeedbackEnvelopeItem","createUserFeedbackEnvelope","platform","discarded_events","GlobalHandlers","onerror","onunhandledrejection","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","msg","line","column","ERROR_TYPES_RE","groups","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","detail","ev","ev0","ev0s","ev0sf","colno","lineno","function","in_app","DEFAULT_EVENT_TARGET","TryCatch","XMLHttpRequest","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","originalSend","prop","wrapOptions","globalObject","proto","eventName","handleEvent","originalRemoveEventListener","wrappedEventHandler","originalEventHandler","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","limit","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parentId","parent_id","LinkedErrors","_limit","HttpContext","referrer","Referer","Dedupe","eventProcessor","currentEvent","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","UNKNOWN_FUNCTION","createFrame","func","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackLineParsers","subMatch","extractSafariExtensionDetails","defaultStackParser","isSafariExtension","isSafariWebExtension","makePromiseBuffer","task","$","taskProducer","drain","counter","capturedSetTimeout","updateRateLimits","limits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","headerDelay","delay","header","headerDate","parseRetryAfterHeader","createTransport","makeRequest","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","disabledUntil","isRateLimited","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","__sentry__baseTransport__","cachedFetchImpl","makeFetchTransport","nativeFetch","fetchImpl","sandbox","head","appendChild","contentWindow","removeChild","getNativeFetchImplementation","pendingBodySize","pendingCount","requestSize","referrerPolicy","keepalive","makeXHRTransport","onreadystatechange","getResponseHeader","open","__SENTRY_RELEASE__","autoSessionTracking","supports","clientClass","debug","initialScope","initAndBind","startSessionOnHub","startSessionTracking","htmlTreeAsString","currentElem","MAX_TRAVERSE_HEIGHT","out","height","separator","sepLength","nextStr","_htmlElementAsString","reverse","el","className","classes","attr","tagName","toLowerCase","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","getLocationHref","getDomElement","selector","querySelector","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","getSDKSource","SENTRY_XHR_DATA_KEY","instrumented","instrument","originalConsoleMethod","triggerHandlers","instrumentConsole","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","instrumentDOM","xhrproto","originalOpen","xhrInfo","request_headers","onreadystatechangeHandler","readyStateArgs","setRequestHeaderArgs","instrumentXHR","originalFetch","fetchArgs","getUrlFromResource","hasProp","parseFetchArgs","instrumentFetch","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","lastHref","instrumentHistory","_oldOnErrorHandler","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","addInstrumentationHandler","resource","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","shouldShortcircuitPreviousDebounce","objectToString","wat","isInstanceOf","isBuiltin","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","isSyntheticEvent","base","CONSOLE_LEVELS","consoleSandbox","originalConsole","wrappedLevels","originalWrappedFunc","__sentry_original__","makeLogger","enable","disable","uuid4","gbl","crypto","msCrypto","randomUUID","getRandomByte","getRandomValues","getFirstException","getEventDescription","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","arrayify","maybeArray","isNodeEnv","process","dynamicRequire","mod","require","fill","replacementFactory","wrapped","markFunctionWrapped","_Oo","addNonEnumerableProperty","getOriginalFunction","urlEncode","convertToPlainObject","getOwnProperties","newObj","serializeEventTarget","currentTarget","CustomEvent","extractedProps","extractExceptionKeysForMessage","maxLength","includedKeys","dropUndefinedKeys","inputValue","_dropUndefinedKeys","memoizationMap","memoVal","returnValue","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","skipFirst","lines","cleanedLine","localStack","stripSentryFramesAndReverse","stackParserFromStackParserOptions","defaultFunctionName","getFunctionName","truncate","safeJoin","delimiter","output","stringMatchesSomePattern","testString","patterns","requireExactStringMatch","pattern","isMatchingPattern","supportsFetch","Response","isNativeFetch","supportsNativeFetch","States","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","executor","__init","__init2","__init3","__init4","_state","PENDING","_handlers","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","onfinally","isRejected","_setResult","RESOLVED","REJECTED","cachedHandlers","dateTimestampSource","nowSeconds","platformPerformance","getNodePerformance","getBrowserPerformance","timestampSource","dateTimestampInSeconds","timestampInSeconds","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStartDelta","isGlobalObj","GLOBAL_OBJ","globalThis","getGlobalObject","getGlobalSingleton","creator","classNames","argType","default","fnToStr","previousComparisons","equal","check","full","suffix","fromIndex","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","aIterator","isMap","aKey","aValue","aCode","nativeCodeSuffix","isDefinedKey","bSet","deselectCurrent","clipboardToIE11Formatting","reselectPrevious","range","success","createRange","getSelection","textContent","style","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","stopPropagation","format","preventDefault","clipboardData","clearData","onCopy","selectNodeContents","addRange","execCommand","copyKey","prompt","removeRange","removeAllRanges","token","singleMatcher","multiMatcher","decodeComponents","decode","tokens","encodedURI","replaceMap","customDecodeURIComponent","flags","valueOf","$$typeof","cmp","cycles","aobj","bobj","seenIndex","predicate","ret","isArr","getUserLocales","languageList","languages","language","userLanguage","browserLanguage","systemLanguage","splitEl","fixLowercaseProperties","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","processFragments","ast","seenKeys","loc","sourceKeySet","parseDocument","cacheKey","parsed","startToken","endToken","stripLoc","gql","literals","gql_1","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","GraphQLError","printError","_isObjectLike","__esModule","_location","_printLocation","nodes","positions","originalError","_nodes","_source","_locations","_positions","pos","getLocation","_extensions","originalExtensions","defineProperties","locations","captureStackTrace","_i2","_error$nodes2","printLocation","_i4","_error$locations2","printSourceLocation","syntaxError","_GraphQLError","classObject","inspect","_nodejsCustomInspectSymbol","toStringTag","formatValue","_typeof","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","min","remaining","formatArray","getObjectTag","properties","formatObject","formatObjectValue","_default","getBlockStringIndentation","commonIndent","indent","leadingWhitespace","isBlank","dedentBlockStringValue","rawString","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","DirectiveLocation","freeze","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","_parser","_printer","print","_visitor","BREAK","_kinds","_tokenKind","_lexer","_predicates","_directiveLocation","Kind","NAME","DOCUMENT","OPERATION_DEFINITION","SELECTION_SET","ARGUMENT","VARIABLE","INT","FLOAT","STRING","BOOLEAN","NULL","LIST","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","createLexer","startOfFileToken","Tok","TokenKind","SOF","lastToken","lineStart","advance","advanceLexer","lookahead","isPunctuatorToken","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","_defineToJSON","_syntaxError","_blockString","EOF","readToken","COMMENT","printCharCode","fromCharCode","lexer","bodyLength","startPosition","charCodeAt","positionAfterWhitespace","col","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","rawValue","BLOCK_STRING","readBlockString","charCode","uniCharCode","invalidSequence","readString","unexpectedCharacterMessage","char2hex","lineRegexp","Parser","parseValue","expectToken","parseValueLiteral","parseType","parseTypeReference","_inspect","_interopRequireDefault","_devAssert","sourceObj","Source","_proto","parseName","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","expectOptionalToken","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","expectKeyword","parseList","parseObject","parseStringLiteral","block","any","_this2","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","types","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","noLocation","Loc","getTokenDesc","atToken","openKind","parseFn","closeKind","isDefinitionNode","isExecutableDefinitionNode","isTypeSystemDefinitionNode","isTypeSystemExtensionNode","isSelectionNode","isValueNode","isTypeNode","isTypeDefinitionNode","isTypeExtensionNode","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","sublineIndex","sublineColumnNum","sublines","printPrefixedLines","subline","existingLines","_ref","padLen","_ref2","_ref3","prefix","leave","printDocASTReducer","Name","Document","varDefs","VariableDefinition","_ref4","_ref5","InlineFragment","_ref6","_ref7","IntValue","_ref8","FloatValue","_ref9","StringValue","_ref10","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","_ref20","OperationTypeDefinition","_ref21","ScalarTypeDefinition","addDescription","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","maybeString","isMultiline","_defineToStringTag","visitor","visitorKeys","QueryDocumentKeys","inArray","edits","ancestors","newRoot","isLeaving","isEdited","clone","_Object$keys2","editOffset","ii","editKey","editValue","isNode","visitFn","getVisitFn","visitInParallel","visitors","skipping","visitWithTypeInfo","typeInfo","maybeNode","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","valueEqual","bValue","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","ua","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","prevIndex","nextKeys","goBack","goForward","unblock","listen","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","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","isValidIBAN","iban","validationOptions","allowQRIBAN","reg","countryCode","countrySpecs","bban_regexp","chars","bban","checkFormatBBAN","bban_validation_func","isValidBBAN","isValidIBANChecksum","isQRIBAN","ValidationErrorsIBAN","ValidationErrorsBIC","bformat","providedChecksum","validationString","replaceCharaterWithCode","mod9710","partInt","NaN","checkMod9710BBAN","stripped","checkMod1110","toCheck","control","nr","checkCzechAndSlovakBBAN","weightsPrefix","weightsSuffix","controlPrefix","controlSuffix","sum","remainder","checkFinlandBBAN","weights","controlDigit","extraSum","checkFrenchBBAN","AD","IBANRegistry","SEPA","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AU","AW","AX","AZ","BA","BB","BD","BE","checkingPart","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","weightsBankBranch","weightsAccount","controlBankBranch","controlAccount","bankBranch","account","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","controlDigitBankBranch","toCheckBankBranch","toCheckAccount","controlDigitAccount","remainder_1","remainder_2","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","bbanWithoutSpacesAndPeriods","bbanWithoutControlDigit","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","appleIphone","appleIpod","appleTablet","appleUniversal","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","isAppleTabletOnIos13","maxTouchPoints","MSStream","isMobile","param","nav","tmp","regex","createMatch","apple","phone","ipod","tablet","universal","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","INFINITY","MAX_INTEGER","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isObjectLike","isSymbol","isBinary","toNumber","toFinite","toInteger","window$1","Config","DEBUG","LIB_VERSION","hostname","screen","width","at","ch","escapee","number","white","T","ArrayProto","FuncProto","ObjProto","windowConsole","navigator$1","document$1","windowOpera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","isUndefined","each","toArray","critical","log_func_with_prefix","console_with_prefix","bound","isFunction","ctor","bind_instance_methods","l","escapeHTML","escaped","extend","isArguments","results","include","found","needle","inherit","superclass","isEmptyObject","isDate","isNumber","nodeType","encodeDates","formatDate","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","safewrap","safewrap_class","klass","functions","safewrap_instance_methods","strip_empty_properties","JSONEncode","mixed_val","quote","escapable","meta","lastIndex","holder","gap","mind","JSONDecode","m","SyntaxError","hex","uffff","word","base64Encode","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","utf8Encode","stringl","utftext","c1","UUID","se","xor","byte_array","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","cookie","nameEQ","ca","set_seconds","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","date","setTime","getTime","toGMTString","days","new_cookie_val","_localStorageSupported","localStorageSupported","forceCheck","supported","localStorage","cheap_guid","setItem","getItem","removeItem","is_supported","force_check","register_event","fixEvent","cancelBubble","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","bad_whitespace","hasClass","getElementsBySelector","foundCount","elements","currentContextIndex","nodeName","token_match","checkFunction","attrName","attrOperator","attrValue","campaignParams","campaign_keywords","kw","params","kwkey","URL","searchEngine","searchInfo","keyword","browser","vendor","browserVersion","parseFloat","os","referringDomain","people_properties","pageviewInfo","page","guid","determine_eligibility","feature","percent_allowed","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","JSONStringify","JSONParse","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","mp","track","event_name","user_callback","that","override_event","get_config","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","metaKey","ctrlKey","FormTracker","submit","logger$2","SharedLock","storageKey","pollIntervalMS","timeoutMS","withLock","lockedCB","errorCB","pid","keyX","keyY","keyZ","reportError","loop","waitFor","getSetY","valY","criticalSection","logger$1","RequestQueue","lock","memQueue","enqueue","flushInterval","queueEntry","succeeded","storedQueue","readFromStorage","saveToStorage","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","queue","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","requestInProgress","currentBatchSize","dataForRequest","transformedItems","batchSendCallback","res","removeItemsFromQueue","unloading","xhr_req","retryMS","halvedBatchSize","verbose","ignore_json_errors","timeout_ms","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","win","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","trackEventName","trackProperties","getConfigValue","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_mixpanel","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","endpoint","batcher","request_batchers","conf","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","CAMPAIGN_IDS_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","load","update_config","upgrade","save","disabled","old_cookie_name","old_cookie","upgrade_from_old_lib","register_once","_expire_notification_campaigns","expire_days","cross_subdomain","cross_site","cookie_domain","default_value","default_expiry","register","unregister","campaigns_shown","EXPIRY_TIME","campaign_id","update_campaign_params","update_search_keyword","update_referrer_info","get_referrer_info","safe_merge","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","_add_to_people_queue","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","_pop_from_people_queue","enqueued_obj","append_obj","_get_queue","queued_action","default_val","set_event_timer","timers","remove_event_timer","IN_OPERATOR","NOT_IN_OPERATOR","MINUS_OPERATOR","MUL_OPERATOR","DIV_OPERATOR","MOD_OPERATOR","EQUALS_OPERATOR","NOT_EQUALS_OPERATOR","GREATER_OPERATOR","LESS_OPERATOR","GREATER_EQUAL_OPERATOR","LESS_EQUAL_OPERATOR","BOOLEAN_OPERATOR","DATETIME_OPERATOR","LIST_OPERATOR","NUMBER_OPERATOR","STRING_OPERATOR","DEFINED_OPERATOR","NOT_DEFINED_OPERATOR","toBoolean","evaluateEquality","_isArrayEqual","_isEqual","evaluateSelector","evaluateOperator","evaluateAnd","evaluateOr","leftValue","rightValue","evaluateIn","evaluatePlus","evaluateArithmetic","compare","localeCompare","evaluateComparison","evaluateBoolean","evaluateDateTime","evaluateList","evaluateNumber","evaluateString","evaluateDefined","evaluateNot","evaluateOperand","evaluateWindow","filters","MixpanelNotification","notif_data","mixpanel","persistence","resource_protocol","cdn_host","message_id","cta","notif_type","title","video_width","VIDEO_WIDTH","video_height","VIDEO_HEIGHT","display_triggers","dest_url","image_url","thumb_image_url","video_url","clickthrough","mini","notif_width","NOTIF_WIDTH_MINI","NOTIF_WIDTH","_set_client_config","imgs_to_preload","_init_image_html","_init_video","ANIM_TIME","MARKUP_PREFIX","BG_OPACITY","NOTIF_TOP","NOTIF_START_TOP","NOTIF_HEIGHT_MINI","THUMB_BORDER_SIZE","THUMB_IMG_SIZE","THUMB_OFFSET","round","body_el","_init_styles","_init_notification_el","_preload_images","_attach_and_animate","dismiss","marked_as_shown","_mark_delivery","notif_attr","notif_start","notif_goal","exiting_el","showing_video","_get_el","_get_notification_display_el","use_transitions","_remove_class","_add_class","_remove_notification_el","_animate_els","goal","class_name","anims","mss","done_cb","start_time","ai","anim","time_diff","in_progress","cur_time","anim_diff","anim_dir","shown","_get_shown_campaigns","notification_el","notif_el","_mark_as_shown","click_el","show_video","_track_event","_switch_to_video","tracking_cb","_matches_event_data","event_data","display_trigger","_browser_lte","browser_versions","img_html","thumb_img_html","notification_html","video_src","video_html","cancel_html","close_html","play_html","youtube_video","yt_custom","vimeo_video","video_iframe","flip_animate","main_html","innerHTML","style_vals","bg","bg_actions","bg_hover","bg_light","border_gray","cancel_opacity","mini_hover","text_title","text_main","text_tagline","text_hover","shadow","video_shadow","mini_shadow","thumb_total_size","anim_seconds","notif_media_queries","notif_styles","doc_width","doc_height","VENDOR_STYLES","VENDOR_PREFIXES","si","pi","media_queries","create_style_text","style_text","head_el","style_el","style_defs","st","mq_defs","mqt","mq","create_media_query_text","documentElement","setAttribute","styleSheet","cssText","youtube_match","vimeo_match","_yt_video_ready","firstScriptTag","get_style","style_name","styles","defaultView","getComputedStyle","currentStyle","extra_props","all_loaded_cb","preloaded_imgs","img_objs","onload","img","Image","imgs_loaded","_video_progress_checker","visibility","get_browser_version","browser_ex","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","ie_ver","sample_styles","is_css_compatible","rule","overlay","video_ready","video_inited","progress_bar","progress_time","progress_el","ytplayer","video_duration","update_video_time","current_time","secs","mins","hours","clickx","pageX","getBoundingClientRect","init_type","mixpanel_master","MixpanelPeople","increment","by","$add","track_charge","amount","clear_charges","delete_user","_identify_called","get_distinct_id","device_id","get_property","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_flush_one_queue","action_method","queue_to_params_fn","queued_data","action_params","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$remove_queue","$append_item","append_callback","$remove_item","remove_callback","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","USE_XHR","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","instance","_cached_groups","_user_decide_check_complete","_events_tracked_before_user_decide_check_complete","_execute_array","encode_data_for_request","json_data","_loaded","variable_features","api_host","is_custom_api","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","events","unpersisted_superprops","_gdpr_init","uuid","_set_default_superprops","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","dt","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","req","headerValue","headerName","withCredentials","responseText","statusText","script","defer","fn_name","alias_calls","other_calls","tracking_calls","calls","caller","are_batchers_initialized","batcher_for","queue_suffix","_run_hook","start_batch_senders","stop_batch_senders","disable_all_events","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","duration_in_ms","toFixed","property_blacklist","blacklisted_prop","_check_and_handle_triggered_notifications","set_group","group_ids","add_group","old_values","remove_group","old_value","idx","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","track_pageview","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","new_distinct_id","previous_distinct_id","_check_and_handle_notifications","name_tag","prop_name","hook_name","property_name","_show_notification","distinct_id","notifications","notif","_handle_user_decide_check_complete","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","override_mp_init_func","dom_loaded_handler","inst","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","_setPrototypeOf","o","_getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","cover","bottom","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","symbol","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","keysSorter","removeHash","hashStart","queryStart","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","formatter","accumulator","isEncodedArray","parserForArrayFormat","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","Path","counterClockwise","dashRatio","pathRadius","strokeWidth","getDashStyle","getPathDescription","fillOpacity","rotation","diameter","PI","gapLength","strokeDasharray","strokeDashoffset","CircularProgressbar","getBackgroundPadding","background","backgroundPadding","getPathRadius","getPathRatio","minValue","maxValue","render","circleRatio","pathRatio","viewBox","cx","cy","trail","defaultProps","Component","aa","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","A","Ma","Na","Oa","prepareStackTrace","h","Pa","Qa","_context","_payload","Ra","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","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","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","qb","rb","sb","setProperty","tb","menuitem","area","br","embed","hr","keygen","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","unstable_UserBlockingPriority","hc","unstable_NormalPriority","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","isTrusted","td","ud","view","vd","Ad","screenX","screenY","clientX","clientY","pageY","shiftKey","altKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","datetime","month","password","tel","week","me","ne","oe","pe","qe","re","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","D","of","pf","qf","rf","sf","passive","J","u","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","eventTime","lane","dh","K","eh","fh","gh","hh","ih","jh","kh","nh","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","qi","ri","destroy","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","Hj","Ij","Jj","Kj","U","Lj","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","dl","fl","gl","hl","zj","$k","ll","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unstable_scheduleHydration","querySelectorAll","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","titleCase","redactingEmail","_str","toTitleCase","redactEmail","smallWords","GA4","_gtag","_format","_excluded","_excluded2","_excluded3","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","_slicedToArray","_arrayWithHoles","_s","_x","_r","_arr","_n","_iterableToArrayLimit","_nonIterableRest","minLen","arr2","_defineProperties","descriptor","_toPropertyKey","prim","toPrimitive","_toPrimitive","Constructor","_classCallCheck","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","GA_MEASUREMENT_ID","nonce","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieFlags","userId","clientId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","hitCallback","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","mergedGtagOptions","_toGtagOptions","queues","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_len2","_key2","_gaCommandSendEvent","_args$","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","command","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","fieldObject","protoProps","staticProps","_window","_ga","nodeInterop","_getRequireWildcardCache","hasPropertyDescriptor","desc","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","hotjar","sv","stateChange","relativePath","_hjSettings","hjid","hjsv","_scriptPath","setTimeZoneInOptions","timeZone","deepMergeOptions","opts1","opts2","deepMergeFormatsAndSetTimeZone","f1","mfFormats","formatMessage","messageDescriptor","formats","messages","defaultLocale","defaultFormats","defaultRichTextElements","msgId","defaultMessage","TYPE","getMessageFormat","formatters","NUMBER_FORMAT_OPTIONS","getFormatter","getNumberFormat","formatNumber","formatNumberToParts","formatToParts","RELATIVE_TIME_FORMAT_OPTIONS","formatRelativeTime","getRelativeTimeFormat","Intl","RelativeTimeFormat","DATE_TIME_FORMAT_OPTIONS","getDateTimeFormat","filteredOptions","hour","minute","timeStyle","dateStyle","formatTime","formatDateTimeRange","formatRange","formatDateToParts","formatTimeToParts","PLURAL_FORMAT_OPTIONS","formatPlural","getPluralRules","PluralRules","select","LIST_FORMAT_OPTIONS","formatList","getListFormat","ListFormat","richValues_1","serializedValues","generateToken","DISPLAY_NAMES_OPTONS","formatDisplayName","getDisplayNames","DisplayNames","verifyConfigMessages","processIntlConfig","textComponent","wrapRichTextChunksInFragment","assignUniqueKeysToFormatXMLElementFnArgument","rawValues","chunks","__spreadArray","rawDefaultRichTextElements","coreIntl","resolvedConfig","NumberFormat","supportedLocalesOf","DateTimeFormat","IntlProvider","intl","prevConfig","_extends","_inheritsLoose","subClass","superClass","_assertThisInitialized","ReferenceError","createThemeProvider","ThemeProvider","_React$Component","outerTheme","getTheme","theme","lastTheme","lastOuterTheme","cachedTheme","_theme","renderProvider","createWithTheme","withTheme","createUseTheme","createContext","_createTheming","useTheme","_createClass","plainObjectConstrurctor","cloneStyle","newStyle","createRule","decl","jss","declCopy","plugins","onCreateRule","toCssValue","ignoreImportant","cssValue","indentStr","toCss","_options$indent","fallbacks","_prop","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","escape","BaseStyleRule","isProcessed","renderer","renderable","sheet","Renderer","force","onChangeValue","isDefined","removeProperty","attached","StyleRule","_BaseStyleRule","selectorText","scoped","generateId","_proto2","applyTo","json","setSelector","replaceRule","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","rules","atMatch","RuleList","getRule","addRule","onProcessRule","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","keyframes","replaceRef","refKeyframe","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","pluginSimpleRule","defaultUpdateOptions","forceUpdateOptions","raw","ruleOptions","_this$options","updateOne","_this$options2","styleRule","onUpdate","nextValue","_nextValue","_prevValue","css","StyleSheet","deployed","deploy","detach","insertRule","addRules","deleteRule","_this$rules","PluginsRegistry","internal","external","onProcessSheet","processedValue","use","newPlugin","plugin","SheetsRegistry","_temp","globalThis$1","ns","moduleId","createGenerateId","ruleCounter","jssId","classNamePrefix","minify","getPropertyValue","cssRule","attributeStyleMap","getHead","findPrevNode","registry$1","insertionPoint","findHigherSheet","findHighestSheet","comment","childNodes","findCommentNode","getNonce","_insertRule","container","appendRule","cssRules","getValidRuleInsertionIndex","maxIndex","DomRenderer","hasInsertedRules","media","createStyle","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","setup","createStyleSheet","removeStyleSheet","getDynamicStyles","extracted","SheetsManager","sheets","manage","unmanage","hasCSSTOMSupport","fnValuesNs","fnRuleNs","fnValues","fnRule","isObservable","style$","_loop","semiWithNl","colonIndex","atPrefix","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","valueNs","singleExtend","refRule","mergeExtend","mergeRest","parentRegExp","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","nested","prevOptions","nestingLevel","isNested","isNestedConditional","registerClass","composes","uppercasePattern","msPattern","toHyphenLower","hName","convertCase","converted","hyphenatedProp","px","ms","percent","addCamelCasedVersion","units","border","margin","padding","inset","motion","outline","perspective","grid","iterate","innerProp","_innerProp","camelCasedOptions","propArray","propArrayInObj","propObj","image","timingFunction","iterationCount","direction","fillMode","playState","blur","spread","customPropObj","radius","font","variant","weight","stretch","family","grow","basis","flow","shrink","align","content","templateColumns","templateRows","templateAreas","template","autoColumns","autoRows","autoFlow","row","rowStart","rowEnd","columnStart","columnEnd","rowGap","columnGap","processArray","scheme","objectToArray","mapValuesByProp","isFallback","isInArray","customProps","_styleDetector","appendedValue","styleDetector","customPropsToStyle","baseProp","js","isTouch","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","colorAdjust","toUpper","camelize","pascalize","mask","longhand","textOrientation","writingMode","breakPropsOld","inlineLogicalOld","newProp","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","propKeys","prefixCss","flex2009","propertyDetectors","computed","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","p1","p2","prefixedValue","supportedValue","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","supportedKeyframes","prop0","prop1","defaultUnit","shallowEqualObjects","objA","objB","reactPropsRegex","defaultJss","ruleIndex","getSheet","argsStr","flatArgs","argIndex","innerArgIndex","mergedStyle","labels","styleObject","_cached","cacheValue","createCss","JssContext","disableStylesGeneration","MIN_SAFE_INTEGER","getSheetIndex","defaultManagers","getManager","managerId","managers","manager","manageSheet","unmanageSheet","sheetsMeta","getMeta","existingSheet","jss$1","getStyles","dynamicStyles","sheetOptions","getSheetOptions","addMeta","removeDynamicRules","updateDynamicRules","addDynamicRules","initialRuleCount","originalRule","getSheetClasses","dynamicRules","NoRenderer","noTheme","useEffectOrLayoutEffect","noTheme$1","createUseStyles","_options$index","theming","ThemeContext$1","isFirstMount","_React$useMemo","newSheet","newDynamicRules","initialContext","JssProvider","parentContext","prevContext","_this$props","propTypes","injectTheme","isThemingEnabled","ThemeConsumer","InnerComponent","WithStyles","lastArgs","mergeClassesProp","sheetClasses","classesProp","baseClasses","additionalClasses","combinedClasses","mergeClasses","isSame","createState","jssContext","prevProps","prevState","newState","innerRef","JssContextSubscriber","forwardRef","bigint","breakpointCols","columnClassName","columnAttrs","Masonry","reCalculateColumnCount","reCalculateColumnCountDebounce","cancelAnimationFrame","_lastRecalculateAnimationFrame","windowWidth","innerWidth","breakpointColsObject","matchedBreakpoint","breakpoint","optBreakpoint","itemsInColumns","currentColumnCount","columnIndex","renderColumns","childrenInColumns","columnWidth","logDeprecated","columnAttributes","classNameOutput","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","navigate","_onClick","isModifiedEvent","Link","_ref2$component","forwardRefShim$1","forwardRef$1","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","sensitive","styleProp","escapedPath","classnames","joinClassnames","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","off","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","nextProps","_Component2","observedBits","createNamedContext","historyContext","createNamedContext$1","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onMount","onUnmount","cacheCount","generatePath","compilePath","pretty","Redirect","computedMatch","_ref$push","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","matched","_compilePath","pathCache","regexp","compilePath$1","Route","context$1","createURL","staticHandler","noop","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","useHistory","useLocation","useParams","useRouteMatch","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","modifier","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","attachKeys","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","__makeTemplateObject","cooked","__importStar","templateObject_1","templateObject_2","templateObject_3","templateObject_4","React","core_1","helpers_1","long","short","Loader","calculateRgba","jsx","heightWidthDefaults","PureComponent","beat","sizeMarginDefaults","bounce","sizeDefaults","circle","parseLengthAndUnit","templateObject_5","climbingBox","hill","rotate","templateObject_6","templateObject_7","templateObject_8","templateObject_9","templateObject_10","templateObject_11","fade","quarter","heightWidthRadiusDefaults","rand","sizeWithUnit","marginWithUnit","index_1","thickness","lat","after","moon","moonSize","ballStyle","ball","pacman","s1","s2","pacmanStyle","pac","man","distance","propagate","pulse","even","odd","scale","skew","square","proptypes_1","sync","BasicColors","res_1","__export","commonValues","sizeValue","cssUnit","cm","mm","in","pt","em","rem","vw","vmin","vmax","valueString","lengthWithunit","__importDefault","BarLoader_1","BeatLoader_1","BounceLoader_1","CircleLoader_1","ClimbingBoxLoader_1","ClipLoader_1","ClockLoader_1","DotLoader_1","FadeLoader_1","GridLoader_1","HashLoader_1","MoonLoader_1","PacmanLoader_1","PropagateLoader_1","PulseLoader_1","RingLoader_1","RiseLoader_1","RotateLoader_1","ScaleLoader_1","SkewLoader_1","SquareLoader_1","SyncLoader_1","BarLoader","BeatLoader","BounceLoader","CircleLoader","ClimbingBoxLoader","ClipLoader","ClockLoader","DotLoader","FadeLoader","GridLoader","HashLoader","MoonLoader","PacmanLoader","PropagateLoader","PulseLoader","RingLoader","RiseLoader","RotateLoader","ScaleLoader","SkewLoader","SquareLoader","SyncLoader","isSpeedy","speedy","ctr","insert","_tag","createStyleElement","styleSheets","ownerNode","sheetForTag","isImportRule","toSheet","Sheet","ruleSheet","selectors","stylisOptions","stylis","inserted","_insert","stylisPlugins","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","interpolated","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","strings","identifierName","EmotionCacheContext","HTMLElement","ThemeContext","CacheProvider","withEmotionCache","typePropName","createEmotionProps","newProps","cssProp","Emotion","argsLength","createElementArgArray","Global","InnerGlobal","nextElementSibling","insertable","toAdd","ClassNames","ele","fun","num","und","nul","equ","useForceUpdate","withDefault","callProp","interpolateTo","onStart","onRest","onFrame","destroyed","getForwardProps","Animated","getAnimatedValue","getPayload","getChildren","addChild","AnimatedArray","AnimatedObject","animated","applyAnimatedValues","colorNames","injectApplyAnimatedValues","injectColorNames","requestFrame","injectStringInterpolator","defaultElement","injectDefaultElement","createAnimatedStyle","manualFrameloop","animatedApi","injectCreateAnimatedStyle","factory","AnimatedProps","active","controllers","configIdx","endOfAnimation","lastTime","valIdx","animatedValues","fromValues","toValues","lastPosition","isAnimated","velocity","initialVelocity","easing","decay","exp","lastVelocity","numSteps","tension","friction","mass","isOvershooting","isVelocity","precision","isDisplacement","createInterpolator","extrapolate","outputRange","inputRange","extrapolateLeft","extrapolateRight","findRange","inputMin","inputMax","outputMin","outputMax","interpolate","AnimatedInterpolation","calc","updateConfig","addAnimatedStyles","AnimatedValue","animatedStyles","animatedStyle","clearStyles","AnimatedValueArray","Controller","idle","hasChanged","local","animations","interpolations","localQueue","getValues","_ref$delay","onEnd","_ref3$from","_ref3$to","finished","runAsync","pause","fresh","_this$props$from","_this$props$to","_this$props$config","isInterpolation","fromValue","toValue","toConfig","interpolation$$1","currentValue","currentValueDiffersFromGoal","hasNewGoal","hasNewConfig","useSprings","mounted","ctrl","isFn","_useMemo","updateCtrl","updateProps","propValues","useSpring","_useSprings","ENTER","LEAVE","UPDATE","mapKeys","_props$keys","keyTransform","_get","_get$lazy","_get$reset","unique","onDestroyed","_onRest","deleted","paused","_get2","initial","_get2$trail","_get2$order","_get3","_keys","_items","currentKeys","currentSet","nextSet","removed","originalKey","updated","keyIndex","slot","changed","diffItems","cleanUp","filterKey","AnimatedStyle","colors","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","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","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","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","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","NUMBER","PERCENTAGE","rgb","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","hslToRgb","parse255","int","parse360","parse1","parsePercentage","colorToRgba","int32Color","normalizeColor","stringShapeRegex","colorRegex","colorNamesRegex","isUnitlessNumber","prefixes","dangerousStyleValue","prefixKey","attributeCache","rangeValue","outputRanges","p3","p4","attributes","styleValue","dashCase","lowercase","extendedAnimated","propsAnimated","attachProps","oldPropsAnimated","didUpdate","_getValue","animatedProps","refFn","childRef","handleRef","_react","_react2","fillRule","_classnames2","_propTypes2","_check2","_x2","_util","Toggle","_PureComponent","_possibleConstructorReturn","handleClick","handleTouchStart","handleTouchMove","handleTouchEnd","handleFocus","handleBlur","previouslyChecked","hasFocus","_inherits","checkbox","moved","click","startX","pointerCoord","activated","currentX","endX","onFocus","onBlur","icons","inputProps","onTouchStart","onTouchMove","onTouchEnd","getIcon","unchecked","onChange","touch","rnds8","rng","byteToHex","bth","rnds","_objectSpread2","CONSTANT","HIDE","REBUILD","SHOW","dispatchGlobalEvent","createEvent","initEvent","checkStatus","dataEventOff","isCapture","currentItem","hideTooltip","setUntargetItems","getTargetArray","showTooltip","targetArray","customListeners","bodyListener","_options$respectEffec","respectEffect","_options$customEvent","customEvent","tip","forId","isCustomEvent","isTargetBelongsToTooltip","getEffect","proxy","makeProxy","findCustomEvents","dataAttribute","getBody","getPosition","place","desiredPlace","effect","_getDimensions","getDimensions","tipWidth","tipHeight","_getDimensions2","targetWidth","targetHeight","_getCurrentOffset","getCurrentOffset","mouseX","mouseY","defaultOffset","getDefaultPosition","_calculateOffset","calculateOffset","extraOffsetX","extraOffsetY","windowHeight","innerHeight","_getParent","getParent","parentTop","parentLeft","getTipOffsetLeft","offsetX","getTipOffsetTop","offsetY","outsideRight","getTipOffsetRight","outsideBottom","getTipOffsetBottom","outside","outsideLeft","outsideTop","inside","placesList","insideList","newPlace","isNewState","shouldUpdatePlace","_node$getBoundingClie","boundingClientRect","targetTop","targetLeft","_getDimensions3","disToMouse","currentParent","parentElement","getTipContent","getContent","multiline","parseAria","ariaObj","nodeListToArray","nodeList","___$insertStyle","_class","_class2","defaultColors","dark","arrow","warning","light","generateTooltipStyle","customColors","hasBorder","textColor","backgroundColor","borderColor","arrowColor","generateStyle","getDefaultPopupColors","getPopupColors","ReactTooltip","rebuild","globalRebuild","mount","unbindListener","bindListener","globalShow","hasTarget","globalHide","staticMethods","bindWindowEvents","resizeHide","onWindowResize","unbindWindowEvents","windowListener","customBindListener","_this$state","eventOff","dataEvent","customListener","customUnbindListener","_this$state2","isBodyMode","bodyMode","bindBodyListener","possibleCustomEvents","possibleCustomEventsOff","customEvents","customEventsOff","unbindBodyListener","bodyModeListeners","mouseover","mousemove","updateTooltip","mouseout","targetEventOff","_event2","_event3","extraClass","html","delayHide","delayShow","ariaProps","isEmptyTip","originTooltip","delayShowLoop","delayHideLoop","delayReshow","intervalUpdateContent","insecure","delayUpdate","globalEventOff","afterShow","afterHide","overridePosition","scrollHide","clickable","methodArray","clearTimer","removeScrollListener","tooltipRef","msMatchesSelector","mozMatchesSelector","shadowRoot","_this3","_this$props2","unbindBasicListener","isCaptureMode","bindRemovalTracker","_this4","_this$props3","unbindRemovalTracker","_this$props4","placeholder","isGlobalCall","_this$props5","switchToSolid","FocusEvent","reshowDelay","updateState","addScrollListener","_getContent","updatePosition","_this5","getTooltipContent","delayTime","mouseOnToolTip","isInvisible","_this6","isScroll","isMyElement","resetState","isVisible","listenForTooltipExit","removeListenerForTooltipExit","hideTooltipOnScroll","_this7","_this8","_this9","_this$state3","tooltipClass","hasCustomColors","supportedWrappers","wrapperClassName","htmlContent","newAriaProps","MutationObserver","WebKitMutationObserver","MozMutationObserver","m1","m2","removedNodes","childList","subtree","removalTracker","mountedRef","useSetState","noUserInteraction","defaultState","matchMedia","mql","addListener","removeListener","initialState","patch","fnRef","useEffectOnce","setRafState","initialWidth","initialHeight","handler_1","isClient","sortIndex","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","separatorIndex","engine","storages","createStore","rx_one","rx_two","rx_three","rx_four","rx_escapable","rx_dangerous","rep","this_value","replacer","space","reviver","walk","eval","util","pluck","isList","storeAPI","optionalDefaultValue","_namespacePrefix","_deserialize","_serialize","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","namespace","addPlugin","_addPlugin","namespacePrefix","namespaceRegexp","_privateStoreProps","_testStorage","testStr","_assignPluginFnProp","pluginFnProp","oldFn","super_fn","newFnArgs","strVal","defaultVal","_addStorage","seenPlugin","pluginProperties","addStorage","_console","_warn","props1","props2","etc","assignProps1","assignProps2","assignArgsList","make_create","_has","regexpStr","unescape","cookies","kvp","memoryStorage","globalStorage","unfixedKey","fixedKey","fixKey","_withStorageEl","storageEl","storageName","XMLDocument","addBehavior","storageOwner","storageContainer","ActiveXObject","storeFunction","_makeIEStorageElFunction","forbiddenCharsRegex","sessionStorage","ranges","getRangeAt","genericMessage","InvariantError","invariant","verbosityLevels","verbosityLevel","wrapConsoleMethod","setVerbosity","Observable","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","hostReportError","cleanupSubscription","_cleanup","closeSubscription","_queue","notifySubscription","onNotify","flushSubscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscriber","hasSeed","startNext","outer","completeIfDone","closed","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_item","_taggedTemplateLiteral","BREAKPOINTS","sm","Direction","Banner","collapsedContent","bannerRef","expandedRef","isCollapsing","setCollapsing","bannerHeight","setBannerHeight","windowSize","setWindowSize","handleResize","cur","useWindowSize","scrollPosition","scrollDirection","UP","DOWN","setScrollPosition","setScrollDirection","prevPosition","blocking","scrollY","handleScroll","currentPosition","newScrollDirection","onScroll","useScroll","checkCanScroll","canScroll","setCanScroll","canCollapse","setCanCollapse","getCurrentHeight","setUpBanner","heightDiference","notCollapsibleClassNames","Banner__not_collapsible","Banner__collapsed","Banner_inner_container","Banner__collapsed_content","Button","danger","fullWidth","outlined","role","Button__danger","Button__disabled","Button__isLoading","Button__outlined","Button__fullWidth","loadingIcon","Button_Spinner","Button_SpinnerPath","Chip","icon","iconPosition","rel","tabIndex","_path","IconEye","xmlns","TextField","required","passwordToggleVisibility","setFocus","setActive","autoFill","setAutofill","passwordHidden","setPasswordHidden","inputError","setInputError","inputBoxRef","inputRef","handleClickOutside","MouseEvent","togglePassword","onAnimationStart","clearValue","TextFieldStyles","fieldProps","onKeyDown","TogglePasswordStyles","htmlFor","styleInject","insertAt","api","converter","defaultAttributes","toUTCString","stringifiedAttributes","jar","foundKey","withAttributes","withConverter","LuxonError","InvalidDateTimeError","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","year","day","DATE_MED","DATE_MED_WITH_WEEKDAY","weekday","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Zone","ianaName","isUniversal","offsetName","ts","formatOffset","equals","otherZone","isValid","singleton","SystemZone","resolvedOptions","parseZoneInfo","getTimezoneOffset","dtfCache","typeToPos","era","ianaZoneCache","IANAZone","isValidZone","zone","zoneName","valid","dtf","hour12","adOrBc","formatted","filled","partsOffset","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","hackyOffset","asTS","over","objToLocalTS","millisecond","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","listingMode","PolyNumberFormatter","forceSimple","padTo","otherOpts","intlOpts","useGrouping","minimumIntegerDigits","inf","getCachedINF","fixed","padStart","roundTo","PolyDateFormatter","originalZone","gmtOffset","offsetZ","setZone","plus","minutes","toJSDate","PolyRelFormatter","isEnglish","hasRelative","rtf","cacheKeyOpts","getCachedRTF","numeric","narrow","years","quarters","months","weeks","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","Locale","numberingSystem","outputCalendar","defaultToEN","specifiedLocale","Settings","localeR","numberingSystemR","defaultNumberingSystem","outputCalendarR","defaultOutputCalendar","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","localeStr","xIndex","uIndex","selectedStr","smaller","calendar","parseLocaleString","intlConfigString","weekdaysCache","standalone","monthsCache","meridiemCache","eraCache","fastNumbersCached","fastNumbers","isActuallyEn","hasNoWeirdness","alts","getOwnPropertyNames","redefaultToEN","redefaultToSystem","formatStr","DateTime","utc","mapMonths","weekdays","mapWeekdays","meridiems","eras","matching","dtFormatter","numberFormatter","relFormatter","listFormatter","getCachedLF","FixedOffsetZone","utcInstance","signedOffset","InvalidZone","normalizeZone","defaultZone","lowered","parseSpecifier","throwOnInvalid","twoDigitCutoffYear","cutoffYear","resetCache","isInteger","bestBy","best","pair","integerBetween","thing","padded","parseInteger","parseFloating","parseMillis","fraction","digits","towardZero","factor","trunc","isLeapYear","daysInYear","daysInMonth","modMonth","floorMod","UTC","setUTCFullYear","weeksInWeekYear","weekYear","untruncateYear","offsetFormat","modified","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","normalizeObject","normalizer","sign","RangeError","timeObject","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","erasLong","erasShort","erasNarrow","stringifyTokens","splits","tokenToString","literal","macroTokenToFormatOpts","DD","DDD","DDDD","tt","ttt","tttt","TTT","TTTT","fff","ffff","FF","FFF","FFFF","Formatter","fmt","currentFull","bracketed","formatOpts","systemLoc","formatWithSystemDefault","formatDateTime","formatDateTimeParts","formatInterval","formatDateTimeFromString","knownEnglish","useDateTimeFormatter","isOffsetFixed","allowZ","meridiem","maybeMacro","parseFormat","weekNumber","ordinal","formatDurationFromString","dur","tokenToField","realTokens","lildur","mapped","shiftTo","Invalid","explanation","ianaRegex","combineRegexes","regexes","combineExtractors","extractors","mergedVals","mergedZone","extractor","simpleParse","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","extractISOTime","milliseconds","extractISOOffset","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conversionAccuracy","matrix","Duration","convert","fromMap","fromUnit","toMap","toUnit","conv","antiTrunc","accurate","invalid","isLuxonDuration","fromObject","normalizeUnit","durationLike","fromMillis","isDuration","parseISODuration","parseISOTimeOnly","toFormat","fmtOpts","toHuman","unitDisplay","listStyle","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","as","fromDurationLike","minus","negate","mapUnits","reconfigure","vals","normalizeValues","rescale","newVals","removeZeroes","shiftToAll","built","accumulated","lastUnit","own","down","negated","invalidReason","invalidExplanation","v1","v2","Interval","isLuxonInterval","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","fromDateTimes","startIsValid","endIsValid","fromISO","toDuration","startOf","hasSame","isAfter","dateTime","isBefore","splitAt","dateTimes","sorted","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","intervals","sofar","currentCount","ends","difference","toLocaleString","toISODate","dateFormat","mapEndpoints","Info","locObj","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","highWater","lowestOrder","differs","differ","highOrderDiffs","remainingMillis","lowerOrderUnits","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","post","deser","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","startIndex","simple","partTypeStyleToTokenVal","dayperiod","dayPeriod","dummyDateTimeCache","expandMacroTokens","formatOptsToTokens","maybeExpandMacroToken","explainFromTokens","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","unitForToken","disqualifyingUnit","regexString","buildRegex","rawMatches","matchIndex","specificOffset","toField","dateTimeFromMatches","isSpace","tokenForPart","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","getUTCDay","computeOrdinal","uncomputeOrdinal","table","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","hasInvalidGregorianData","validYear","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","MAX_DATE","unsupportedZone","possiblyCachedWeekData","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","extended","longFormat","includeOffset","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","offsetProvis","diffRelative","calendary","lastOpts","argList","ot","_zone","isLuxonDateTime","zoneToUse","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","objNow","foundFirst","higherOrderInvalid","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","gregorian","tsFinal","offsetFinal","parseISODate","preprocessRFC2822","parseRFC2822Date","parseHTTPDate","localeToUse","fromOpts","parseFromTokens","fromFormat","parseSQL","localeOpts","tokenList","monthShort","monthLong","weekdayShort","weekdayLong","offsetNameShort","offsetNameLong","isInDST","isInLeapYear","resolvedLocaleOptions","toLocal","keepCalendarTime","newTS","offsetGuess","asObj","setLocale","settingWeekStuff","mixed","normalizedUnit","endOf","toLocaleParts","ext","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","includeZone","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","adjustedToZone","toRelative","toRelativeCalendar","isDateTime","fromFormatExplain","dateTimeish","fromJSDate"],"sourceRoot":""}