{"version":3,"file":"main.d0882e8596359e389f30.js","mappings":"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","sources":["webpack:///../../node_modules/@honeybadger-io/js/dist/browser/honeybadger.js","webpack:///../../node_modules/@honeybadger-io/react/dist/honeybadger-react.esm.js","webpack:///../../node_modules/accounting/accounting.js","webpack:///../../node_modules/i18n-js/app/assets/javascripts/i18n.js","webpack:///../../node_modules/jquery.cookie/jquery.cookie.js","webpack:///../../node_modules/moment/locale/es.js","webpack:///../../node_modules/moment/moment.js","webpack:///../../node_modules/object-assign/index.js","webpack:///../../node_modules/react-dom/index.js","webpack:///../../node_modules/react/index.js","webpack:///../../node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///../../node_modules/scheduler/index.js","webpack:///../../config/webpack/availableLocales.js","webpack:///./boot/common/exportReact.js","webpack:///./boot/common/i18nSetup.js","webpack:///./boot/common/reactMount.js","webpack:///./boot/common/setMomentLocale.js","webpack:///./boot/main/hookActionSpecificSetup.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/identifier.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMouseInteraction.js","webpack:///./utils/getCookies.js","webpack:///./utils/cookieConsent.js","webpack:///../../node_modules/uuid/dist/esm-browser/stringify.js","webpack:///../../node_modules/uuid/dist/esm-browser/regex.js","webpack:///../../node_modules/uuid/dist/esm-browser/parse.js","webpack:///../../node_modules/uuid/dist/esm-browser/validate.js","webpack:///../../node_modules/uuid/dist/esm-browser/sha1.js","webpack:///../../node_modules/uuid/dist/esm-browser/v5.js","webpack:///../../node_modules/uuid/dist/esm-browser/v35.js","webpack:///./utils/trackingUserId.js","webpack:///./boot/main/globalSetup/analytics/remarketing.js","webpack:///./boot/main/globalSetup/initializeAnalytics.js","webpack:///./boot/main/globalSetup/external-tools.js","webpack:///./boot/main/globalSetup/stickySidebar.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/timer.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///../../node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStateValidation.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/crypto.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/sampler.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/polyfills.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/requestIdleCallback.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","webpack:///../../node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMove.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackScroll.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackStyleSheet.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackInput.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMutation.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack:///../../node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/windowOpenObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/taskQueue.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/longAnimationFrame/longAnimationFrameCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/preStartStrategy.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/postStartStrategy.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/startRecordBridge.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/startFullSnapshots.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/recordIds.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewportResize.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFrustration.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewEnd.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMediaInteraction.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFocus.js","webpack:///./boot/main/globalSetup/setupDatadog.js","webpack:///./boot/main/globalSetup/setupHoneybadger.js","webpack:///./boot/main/globalSetup/index.js","webpack:///./boot/main/globalSetup/foundation.js","webpack:///./admin/instructionVideoEmbed/components/InstructionVideoEmbed.js","webpack:///./boot/main/components.lazy.js","webpack:///./boot/main/exposeComponents.js","webpack:///./boot/main/actionEntryPoints.js","webpack:///./boot/main/index.js","webpack:///./boot/vendor.js","webpack:///./boot/webpackPublicPath.js","webpack:///./common/components/Button.js","webpack:///./common/components/ErrorComponent.js","webpack:///./common/json/extract/match.js","webpack:///./common/json/extract/array.js","webpack:///./common/json/extract/array/items.js","webpack:///./common/json/extract/object.js","webpack:///./common/json/extract/object/record.js","webpack:///./common/json/extract/object/map.js","webpack:///./common/json/extract/nullable.js","webpack:///./common/json/extract/withDefault.js","webpack:///./common/json/extract/oneOf.js","webpack:///./common/json/extract/exactly.js","webpack:///./common/json/extract/rails/decimal.js","webpack:///./common/json/extract/rails/id.js","webpack:///./common/json/extract/failure.js","webpack:///./common/json/extract/primitive.js","webpack:///./common/json/extract/dates.js","webpack:///./common/json/extract/locale.js","webpack:///./common/json/extract/money.js","webpack:///./common/types/locale.js","webpack:///./common/types/money.js","webpack:///./site/allSites.js","webpack:///./site/currentSite.js","webpack:///./utils/analytics.js","webpack:///./utils/analyticsModules/analyticsLinkTracking.js","webpack:///./utils/currencyUtils.js","webpack:///./utils/satisfiesMediaQuery.js","webpack:///../../lib/javascript/putki/index.js","webpack:///../../node_modules/what-input/dist/what-input.js","webpack:///external var \"Modernizr\"","webpack:///external var \"jQuery\"","webpack:///../../node_modules/classnames/index.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Honeybadger = factory());\n})(this, (function () { 'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction getDefaultExportFromCjs (x) {\n\t\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n\t}\n\n\tfunction getAugmentedNamespace(n) {\n\t  var f = n.default;\n\t\tif (typeof f == \"function\") {\n\t\t\tvar a = function () {\n\t\t\t\treturn f.apply(this, arguments);\n\t\t\t};\n\t\t\ta.prototype = f.prototype;\n\t  } else a = {};\n\t  Object.defineProperty(a, '__esModule', {value: true});\n\t\tObject.keys(n).forEach(function (k) {\n\t\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function () {\n\t\t\t\t\treturn n[k];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn a;\n\t}\n\n\tvar browser$1 = {};\n\n\tvar src = {};\n\n\tvar events = {};\n\n\tvar util$1 = {};\n\n\tvar UNKNOWN_FUNCTION = '<unknown>';\n\t/**\n\t * This parses the different stack traces and puts them into one format\n\t * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n\t */\n\n\tfunction parse(stackString) {\n\t  var lines = stackString.split('\\n');\n\t  return lines.reduce(function (stack, line) {\n\t    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n\t    if (parseResult) {\n\t      stack.push(parseResult);\n\t    }\n\n\t    return stack;\n\t  }, []);\n\t}\n\tvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\tvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n\tfunction parseChrome(line) {\n\t  var parts = chromeRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n\t  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n\t  var submatch = chromeEvalRe.exec(parts[2]);\n\n\t  if (isEval && submatch != null) {\n\t    // throw out eval line/column and use top-most line/column number\n\t    parts[2] = submatch[1]; // url\n\n\t    parts[3] = submatch[2]; // line\n\n\t    parts[4] = submatch[3]; // column\n\t  }\n\n\t  return {\n\t    file: !isNative ? parts[2] : null,\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: isNative ? [parts[2]] : [],\n\t    lineNumber: parts[3] ? +parts[3] : null,\n\t    column: parts[4] ? +parts[4] : null\n\t  };\n\t}\n\n\tvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n\tfunction parseWinjs(line) {\n\t  var parts = winjsRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  return {\n\t    file: parts[2],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: [],\n\t    lineNumber: +parts[3],\n\t    column: parts[4] ? +parts[4] : null\n\t  };\n\t}\n\n\tvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n\tvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n\tfunction parseGecko(line) {\n\t  var parts = geckoRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\t  var submatch = geckoEvalRe.exec(parts[3]);\n\n\t  if (isEval && submatch != null) {\n\t    // throw out eval line/column and use top-most line number\n\t    parts[3] = submatch[1];\n\t    parts[4] = submatch[2];\n\t    parts[5] = null; // no column when eval\n\t  }\n\n\t  return {\n\t    file: parts[3],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: parts[2] ? parts[2].split(',') : [],\n\t    lineNumber: parts[4] ? +parts[4] : null,\n\t    column: parts[5] ? +parts[5] : null\n\t  };\n\t}\n\n\tvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\n\tfunction parseJSC(line) {\n\t  var parts = javaScriptCoreRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  return {\n\t    file: parts[3],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: [],\n\t    lineNumber: +parts[4],\n\t    column: parts[5] ? +parts[5] : null\n\t  };\n\t}\n\n\tvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n\tfunction parseNode(line) {\n\t  var parts = nodeRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  return {\n\t    file: parts[2],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: [],\n\t    lineNumber: +parts[3],\n\t    column: parts[4] ? +parts[4] : null\n\t  };\n\t}\n\n\tvar stackTraceParser_esm = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tparse: parse\n\t});\n\n\tvar require$$0$1 = /*@__PURE__*/getAugmentedNamespace(stackTraceParser_esm);\n\n\t(function (exports) {\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t      desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t    }\n\t\t    Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t    o[\"default\"] = v;\n\t\t});\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t    if (mod && mod.__esModule) return mod;\n\t\t    var result = {};\n\t\t    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t    __setModuleDefault(result, mod);\n\t\t    return result;\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t    });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t    function step(op) {\n\t\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t        while (_) try {\n\t\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t            switch (op[0]) {\n\t\t                case 0: case 1: t = op; break;\n\t\t                case 4: _.label++; return { value: op[1], done: false };\n\t\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t                default:\n\t\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t                    if (t[2]) _.ops.pop();\n\t\t                    _.trys.pop(); continue;\n\t\t            }\n\t\t            op = body.call(thisArg, _);\n\t\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t    }\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.logDeprecatedMethod = exports.globalThisOrWindow = exports.isBrowserConfig = exports.clone = exports.formatCGIData = exports.filterUrl = exports.filter = exports.generateStackTrace = exports.endpoint = exports.instrumentConsole = exports.instrument = exports.isErrorObject = exports.makeNotice = exports.logger = exports.sanitize = exports.shallowClone = exports.runAfterNotifyHandlers = exports.runBeforeNotifyHandlers = exports.getSourceForBacktrace = exports.getCauses = exports.calculateBacktraceShift = exports.DEFAULT_BACKTRACE_SHIFT = exports.makeBacktrace = exports.objectIsExtensible = exports.objectIsEmpty = exports.mergeNotice = exports.merge = void 0;\n\t\t/* eslint-disable prefer-rest-params */\n\t\tvar stackTraceParser = __importStar(require$$0$1);\n\t\tfunction merge(obj1, obj2) {\n\t\t    var result = {};\n\t\t    for (var k in obj1) {\n\t\t        result[k] = obj1[k];\n\t\t    }\n\t\t    for (var k in obj2) {\n\t\t        result[k] = obj2[k];\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\texports.merge = merge;\n\t\tfunction mergeNotice(notice1, notice2) {\n\t\t    var result = merge(notice1, notice2);\n\t\t    if (notice1.context && notice2.context) {\n\t\t        result.context = merge(notice1.context, notice2.context);\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\texports.mergeNotice = mergeNotice;\n\t\tfunction objectIsEmpty(obj) {\n\t\t    for (var k in obj) {\n\t\t        if (Object.prototype.hasOwnProperty.call(obj, k)) {\n\t\t            return false;\n\t\t        }\n\t\t    }\n\t\t    return true;\n\t\t}\n\t\texports.objectIsEmpty = objectIsEmpty;\n\t\tfunction objectIsExtensible(obj) {\n\t\t    if (typeof Object.isExtensible !== 'function') {\n\t\t        return true;\n\t\t    }\n\t\t    return Object.isExtensible(obj);\n\t\t}\n\t\texports.objectIsExtensible = objectIsExtensible;\n\t\tfunction makeBacktrace(stack, filterHbSourceCode, logger) {\n\t\t    if (filterHbSourceCode === void 0) { filterHbSourceCode = false; }\n\t\t    if (logger === void 0) { logger = console; }\n\t\t    if (!stack) {\n\t\t        return [];\n\t\t    }\n\t\t    try {\n\t\t        var backtrace = stackTraceParser\n\t\t            .parse(stack)\n\t\t            .map(function (line) {\n\t\t            return {\n\t\t                file: line.file,\n\t\t                method: line.methodName,\n\t\t                number: line.lineNumber,\n\t\t                column: line.column\n\t\t            };\n\t\t        });\n\t\t        if (filterHbSourceCode) {\n\t\t            backtrace.splice(0, calculateBacktraceShift(backtrace));\n\t\t        }\n\t\t        return backtrace;\n\t\t    }\n\t\t    catch (err) {\n\t\t        logger.debug(err);\n\t\t        return [];\n\t\t    }\n\t\t}\n\t\texports.makeBacktrace = makeBacktrace;\n\t\tfunction isFrameFromHbSourceCode(frame) {\n\t\t    var hasHbFile = false;\n\t\t    var hasHbMethod = false;\n\t\t    if (frame.file) {\n\t\t        hasHbFile = frame.file.toLowerCase().indexOf('@honeybadger-io') > -1;\n\t\t    }\n\t\t    if (frame.method) {\n\t\t        hasHbMethod = frame.method.toLowerCase().indexOf('@honeybadger-io') > -1;\n\t\t    }\n\t\t    return hasHbFile || hasHbMethod;\n\t\t}\n\t\texports.DEFAULT_BACKTRACE_SHIFT = 3;\n\t\t/**\n\t\t * If {@link generateStackTrace} is used, we want to exclude frames that come from\n\t\t * Honeybadger's source code.\n\t\t *\n\t\t * Logic:\n\t\t * - For each frame, increment the shift if source code is from Honeybadger\n\t\t * - If a frame from an <anonymous> file is encountered increment the shift ONLY if between Honeybadger source code\n\t\t *   (i.e. previous and next frames are from Honeybadger)\n\t\t * - Exit when frame encountered is not from Honeybadger source code\n\t\t *\n\t\t * Note: this will not always work, especially in browser versions where code\n\t\t *       is minified, uglified and bundled.\n\t\t *       For those cases we default to 3:\n\t\t *       - generateStackTrace\n\t\t *       - makeNotice\n\t\t *       - notify\n\t\t */\n\t\tfunction calculateBacktraceShift(backtrace) {\n\t\t    var shift = 0;\n\t\t    for (var i = 0; i < backtrace.length; i++) {\n\t\t        var frame = backtrace[i];\n\t\t        if (isFrameFromHbSourceCode(frame)) {\n\t\t            shift++;\n\t\t            continue;\n\t\t        }\n\t\t        if (!frame.file || frame.file === '<anonymous>') {\n\t\t            var nextFrame = backtrace[i + 1];\n\t\t            if (nextFrame && isFrameFromHbSourceCode(nextFrame)) {\n\t\t                shift++;\n\t\t                continue;\n\t\t            }\n\t\t        }\n\t\t        break;\n\t\t    }\n\t\t    return shift || exports.DEFAULT_BACKTRACE_SHIFT;\n\t\t}\n\t\texports.calculateBacktraceShift = calculateBacktraceShift;\n\t\tfunction getCauses(notice, logger) {\n\t\t    if (notice.cause) {\n\t\t        var causes = [];\n\t\t        var cause = notice;\n\t\t        // @ts-ignore this throws an error if tsconfig.json has strict: true\n\t\t        while (causes.length < 3 && (cause = cause.cause)) {\n\t\t            causes.push({\n\t\t                class: cause.name,\n\t\t                message: cause.message,\n\t\t                backtrace: typeof cause.stack == 'string' ? makeBacktrace(cause.stack, false, logger) : null\n\t\t            });\n\t\t        }\n\t\t        return causes;\n\t\t    }\n\t\t    return [];\n\t\t}\n\t\texports.getCauses = getCauses;\n\t\tfunction getSourceForBacktrace(backtrace, getSourceFileHandler) {\n\t\t    return __awaiter(this, void 0, void 0, function () {\n\t\t        var result, index, trace, fileContent;\n\t\t        return __generator(this, function (_a) {\n\t\t            switch (_a.label) {\n\t\t                case 0:\n\t\t                    result = [];\n\t\t                    if (!getSourceFileHandler || !backtrace || !backtrace.length) {\n\t\t                        return [2 /*return*/, result];\n\t\t                    }\n\t\t                    index = 0;\n\t\t                    _a.label = 1;\n\t\t                case 1:\n\t\t                    if (!backtrace.length) return [3 /*break*/, 3];\n\t\t                    trace = backtrace.splice(0)[index];\n\t\t                    return [4 /*yield*/, getSourceFileHandler(trace.file)];\n\t\t                case 2:\n\t\t                    fileContent = _a.sent();\n\t\t                    result[index] = getSourceCodeSnippet(fileContent, trace.number, trace.column, 2);\n\t\t                    index++;\n\t\t                    return [3 /*break*/, 1];\n\t\t                case 3: return [2 /*return*/, result];\n\t\t            }\n\t\t        });\n\t\t    });\n\t\t}\n\t\texports.getSourceForBacktrace = getSourceForBacktrace;\n\t\tfunction runBeforeNotifyHandlers(notice, handlers) {\n\t\t    var results = [];\n\t\t    var result = true;\n\t\t    for (var i = 0, len = handlers.length; i < len; i++) {\n\t\t        var handler = handlers[i];\n\t\t        var handlerResult = handler(notice);\n\t\t        if (handlerResult === false) {\n\t\t            result = false;\n\t\t        }\n\t\t        results.push(handlerResult);\n\t\t    }\n\t\t    return {\n\t\t        results: results,\n\t\t        result: result\n\t\t    };\n\t\t}\n\t\texports.runBeforeNotifyHandlers = runBeforeNotifyHandlers;\n\t\tfunction runAfterNotifyHandlers(notice, handlers, error) {\n\t\t    if (notice && notice.afterNotify) {\n\t\t        notice.afterNotify(error, notice);\n\t\t    }\n\t\t    for (var i = 0, len = handlers.length; i < len; i++) {\n\t\t        handlers[i](error, notice);\n\t\t    }\n\t\t    return true;\n\t\t}\n\t\texports.runAfterNotifyHandlers = runAfterNotifyHandlers;\n\t\t// Returns a new object with properties from other object.\n\t\tfunction shallowClone(obj) {\n\t\t    if (typeof (obj) !== 'object' || obj === null) {\n\t\t        return {};\n\t\t    }\n\t\t    var result = {};\n\t\t    for (var k in obj) {\n\t\t        result[k] = obj[k];\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\texports.shallowClone = shallowClone;\n\t\tfunction sanitize(obj, maxDepth) {\n\t\t    if (maxDepth === void 0) { maxDepth = 8; }\n\t\t    var seenObjects = [];\n\t\t    function seen(obj) {\n\t\t        if (!obj || typeof (obj) !== 'object') {\n\t\t            return false;\n\t\t        }\n\t\t        for (var i = 0; i < seenObjects.length; i++) {\n\t\t            var value = seenObjects[i];\n\t\t            if (value === obj) {\n\t\t                return true;\n\t\t            }\n\t\t        }\n\t\t        seenObjects.push(obj);\n\t\t        return false;\n\t\t    }\n\t\t    function canSerialize(obj) {\n\t\t        var typeOfObj = typeof obj;\n\t\t        // Functions are TMI\n\t\t        if (/function/.test(typeOfObj)) {\n\t\t            // Let special toJSON method pass as it's used by JSON.stringify (#722)\n\t\t            return obj.name === 'toJSON';\n\t\t        }\n\t\t        // Symbols can't convert to strings.\n\t\t        if (/symbol/.test(typeOfObj)) {\n\t\t            return false;\n\t\t        }\n\t\t        if (obj === null) {\n\t\t            return false;\n\t\t        }\n\t\t        // No prototype, likely created with `Object.create(null)`.\n\t\t        if (typeof obj === 'object' && typeof obj.hasOwnProperty === 'undefined') {\n\t\t            return false;\n\t\t        }\n\t\t        return true;\n\t\t    }\n\t\t    function serialize(obj, depth) {\n\t\t        if (depth === void 0) { depth = 0; }\n\t\t        if (depth >= maxDepth) {\n\t\t            return '[DEPTH]';\n\t\t        }\n\t\t        // Inspect invalid types\n\t\t        if (!canSerialize(obj)) {\n\t\t            return Object.prototype.toString.call(obj);\n\t\t        }\n\t\t        // Halt circular references\n\t\t        if (seen(obj)) {\n\t\t            return '[RECURSION]';\n\t\t        }\n\t\t        // Serialize inside arrays\n\t\t        if (Array.isArray(obj)) {\n\t\t            return obj.map(function (o) { return safeSerialize(o, depth + 1); });\n\t\t        }\n\t\t        // Serialize inside objects\n\t\t        if (typeof (obj) === 'object') {\n\t\t            var ret = {};\n\t\t            for (var k in obj) {\n\t\t                var v = obj[k];\n\t\t                if (Object.prototype.hasOwnProperty.call(obj, k) && (k != null) && (v != null)) {\n\t\t                    ret[k] = safeSerialize(v, depth + 1);\n\t\t                }\n\t\t            }\n\t\t            return ret;\n\t\t        }\n\t\t        // Return everything else untouched\n\t\t        return obj;\n\t\t    }\n\t\t    function safeSerialize(obj, depth) {\n\t\t        if (depth === void 0) { depth = 0; }\n\t\t        try {\n\t\t            return serialize(obj, depth);\n\t\t        }\n\t\t        catch (e) {\n\t\t            return \"[ERROR] \".concat(e);\n\t\t        }\n\t\t    }\n\t\t    return safeSerialize(obj);\n\t\t}\n\t\texports.sanitize = sanitize;\n\t\tfunction logger(client) {\n\t\t    var log = function (method) {\n\t\t        return function () {\n\t\t            var _a;\n\t\t            var args = [];\n\t\t            for (var _i = 0; _i < arguments.length; _i++) {\n\t\t                args[_i] = arguments[_i];\n\t\t            }\n\t\t            if (method === 'debug') {\n\t\t                if (!client.config.debug) {\n\t\t                    return;\n\t\t                }\n\t\t                // Log at default level so that you don't need to also enable verbose\n\t\t                // logging in Chrome.\n\t\t                method = 'log';\n\t\t            }\n\t\t            args.unshift('[Honeybadger]');\n\t\t            (_a = client.config.logger)[method].apply(_a, args);\n\t\t        };\n\t\t    };\n\t\t    return {\n\t\t        log: log('log'),\n\t\t        info: log('info'),\n\t\t        debug: log('debug'),\n\t\t        warn: log('warn'),\n\t\t        error: log('error')\n\t\t    };\n\t\t}\n\t\texports.logger = logger;\n\t\t/**\n\t\t * Converts any object into a notice object (which at minimum has the same\n\t\t * properties as Error, but supports additional Honeybadger properties.)\n\t\t */\n\t\tfunction makeNotice(thing) {\n\t\t    var notice;\n\t\t    if (!thing) {\n\t\t        notice = {};\n\t\t    }\n\t\t    else if (isErrorObject(thing)) {\n\t\t        var e = thing;\n\t\t        notice = merge(thing, { name: e.name, message: e.message, stack: e.stack, cause: e.cause });\n\t\t    }\n\t\t    else if (typeof thing === 'object') {\n\t\t        notice = shallowClone(thing);\n\t\t    }\n\t\t    else {\n\t\t        var m = String(thing);\n\t\t        notice = { message: m };\n\t\t    }\n\t\t    return notice;\n\t\t}\n\t\texports.makeNotice = makeNotice;\n\t\tfunction isErrorObject(thing) {\n\t\t    return thing instanceof Error\n\t\t        || Object.prototype.toString.call(thing) === '[object Error]'; // Important for cross-realm objects\n\t\t}\n\t\texports.isErrorObject = isErrorObject;\n\t\t/**\n\t\t * Instrument an existing function inside an object (usually global).\n\t\t * @param {!Object} object\n\t\t * @param {!String} name\n\t\t * @param {!Function} replacement\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tfunction instrument(object, name, replacement) {\n\t\t    if (!object || !name || !replacement || !(name in object)) {\n\t\t        return;\n\t\t    }\n\t\t    try {\n\t\t        var original = object[name];\n\t\t        while (original && original.__hb_original) {\n\t\t            original = original.__hb_original;\n\t\t        }\n\t\t        object[name] = replacement(original);\n\t\t        object[name].__hb_original = original;\n\t\t    }\n\t\t    catch (_e) {\n\t\t        // Ignores errors where \"original\" is a restricted object (see #1001)\n\t\t        // Uncaught Error: Permission denied to access property \"__hb_original\"\n\t\t        // Also ignores:\n\t\t        //   Error: TypeError: Cannot set property onunhandledrejection of [object Object] which has only a getter\n\t\t        //   User-Agent: Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-G960F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.1 Chrome/79.0.3945.136 Mobile Safari/537.36\n\t\t    }\n\t\t}\n\t\texports.instrument = instrument;\n\t\tvar _consoleAlreadyInstrumented = false;\n\t\tvar listeners = [];\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tfunction instrumentConsole(_window, handler) {\n\t\t    if (!_window || !_window.console || !handler) {\n\t\t        return;\n\t\t    }\n\t\t    listeners.push(handler);\n\t\t    if (_consoleAlreadyInstrumented) {\n\t\t        return;\n\t\t    }\n\t\t    _consoleAlreadyInstrumented = true;\n\t\t    ['debug', 'info', 'warn', 'error', 'log'].forEach(function (level) {\n\t\t        instrument(_window.console, level, function hbLogger(original) {\n\t\t            return function () {\n\t\t                var args = Array.prototype.slice.call(arguments);\n\t\t                listeners.forEach(function (listener) {\n\t\t                    try {\n\t\t                        listener(level, args);\n\t\t                    }\n\t\t                    catch (_e) {\n\t\t                        // ignore\n\t\t                        // should never reach here because instrument method already wraps with try/catch block\n\t\t                    }\n\t\t                });\n\t\t                if (typeof original === 'function') {\n\t\t                    Function.prototype.apply.call(original, _window.console, arguments);\n\t\t                }\n\t\t            };\n\t\t        });\n\t\t    });\n\t\t}\n\t\texports.instrumentConsole = instrumentConsole;\n\t\tfunction endpoint(base, path) {\n\t\t    var endpoint = base.trim().replace(/\\/$/, '');\n\t\t    path = path.trim().replace(/(^\\/|\\/$)/g, '');\n\t\t    return \"\".concat(endpoint, \"/\").concat(path);\n\t\t}\n\t\texports.endpoint = endpoint;\n\t\tfunction generateStackTrace() {\n\t\t    try {\n\t\t        throw new Error('');\n\t\t    }\n\t\t    catch (e) {\n\t\t        if (e.stack) {\n\t\t            return e.stack;\n\t\t        }\n\t\t    }\n\t\t    var maxStackSize = 10;\n\t\t    var stack = [];\n\t\t    var curr = arguments.callee;\n\t\t    while (curr && stack.length < maxStackSize) {\n\t\t        if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n\t\t            stack.push(RegExp.$1 || '<anonymous>');\n\t\t        }\n\t\t        else {\n\t\t            stack.push('<anonymous>');\n\t\t        }\n\t\t        try {\n\t\t            curr = curr.caller;\n\t\t        }\n\t\t        catch (e) {\n\t\t            break;\n\t\t        }\n\t\t    }\n\t\t    return stack.join('\\n');\n\t\t}\n\t\texports.generateStackTrace = generateStackTrace;\n\t\tfunction filter(obj, filters) {\n\t\t    if (!is('Object', obj)) {\n\t\t        return;\n\t\t    }\n\t\t    if (!is('Array', filters)) {\n\t\t        filters = [];\n\t\t    }\n\t\t    var seen = [];\n\t\t    function filter(obj) {\n\t\t        var k, newObj;\n\t\t        if (is('Object', obj) || is('Array', obj)) {\n\t\t            if (seen.indexOf(obj) !== -1) {\n\t\t                return '[CIRCULAR DATA STRUCTURE]';\n\t\t            }\n\t\t            seen.push(obj);\n\t\t        }\n\t\t        if (is('Object', obj)) {\n\t\t            newObj = {};\n\t\t            for (k in obj) {\n\t\t                if (filterMatch(k, filters)) {\n\t\t                    newObj[k] = '[FILTERED]';\n\t\t                }\n\t\t                else {\n\t\t                    newObj[k] = filter(obj[k]);\n\t\t                }\n\t\t            }\n\t\t            return newObj;\n\t\t        }\n\t\t        if (is('Array', obj)) {\n\t\t            return obj.map(function (v) {\n\t\t                return filter(v);\n\t\t            });\n\t\t        }\n\t\t        if (is('Function', obj)) {\n\t\t            return '[FUNC]';\n\t\t        }\n\t\t        return obj;\n\t\t    }\n\t\t    return filter(obj);\n\t\t}\n\t\texports.filter = filter;\n\t\tfunction filterMatch(key, filters) {\n\t\t    for (var i = 0; i < filters.length; i++) {\n\t\t        if (key.toLowerCase().indexOf(filters[i].toLowerCase()) !== -1) {\n\t\t            return true;\n\t\t        }\n\t\t    }\n\t\t    return false;\n\t\t}\n\t\tfunction is(type, obj) {\n\t\t    var klass = Object.prototype.toString.call(obj).slice(8, -1);\n\t\t    return obj !== undefined && obj !== null && klass === type;\n\t\t}\n\t\tfunction filterUrl(url, filters) {\n\t\t    if (!filters) {\n\t\t        return url;\n\t\t    }\n\t\t    if (typeof url !== 'string') {\n\t\t        return url;\n\t\t    }\n\t\t    var query = url.split(/\\?/, 2)[1];\n\t\t    if (!query) {\n\t\t        return url;\n\t\t    }\n\t\t    var result = url;\n\t\t    query.split(/[&]\\s?/).forEach(function (pair) {\n\t\t        var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n\t\t        if (filterMatch(key, filters)) {\n\t\t            result = result.replace(\"\".concat(key, \"=\").concat(value), \"\".concat(key, \"=[FILTERED]\"));\n\t\t        }\n\t\t    });\n\t\t    return result;\n\t\t}\n\t\texports.filterUrl = filterUrl;\n\t\tfunction formatCGIData(vars, prefix) {\n\t\t    if (prefix === void 0) { prefix = ''; }\n\t\t    var formattedVars = {};\n\t\t    Object.keys(vars).forEach(function (key) {\n\t\t        var formattedKey = prefix + key.replace(/\\W/g, '_').toUpperCase();\n\t\t        formattedVars[formattedKey] = vars[key];\n\t\t    });\n\t\t    return formattedVars;\n\t\t}\n\t\texports.formatCGIData = formatCGIData;\n\t\tfunction clone(obj) {\n\t\t    return JSON.parse(JSON.stringify(obj));\n\t\t}\n\t\texports.clone = clone;\n\t\tvar THRESHOLD_COLUMN_NUMBER = 10000;\n\t\tvar THRESHOLD_LINE_LENGTH = 10000;\n\t\tvar THRESHOLD_FILE_SIZE = 200000; // 200KB threshold\n\t\tfunction getThresholdExceededSnippet(lineNumber) {\n\t\t    var _a;\n\t\t    return _a = {}, _a[lineNumber] = 'SOURCE_SIZE_TOO_LARGE', _a;\n\t\t}\n\t\tfunction getSourceCodeSnippet(fileData, lineNumber, columnNumber, sourceRadius) {\n\t\t    if (sourceRadius === void 0) { sourceRadius = 2; }\n\t\t    if (!fileData) {\n\t\t        return null;\n\t\t    }\n\t\t    // If column number is provided and very high, it's likely a bundled/minified file\n\t\t    if (columnNumber && columnNumber > THRESHOLD_COLUMN_NUMBER) {\n\t\t        return getThresholdExceededSnippet(lineNumber);\n\t\t    }\n\t\t    // If file is very large, it's likely bundled\n\t\t    if (fileData.length > THRESHOLD_FILE_SIZE) {\n\t\t        return getThresholdExceededSnippet(lineNumber);\n\t\t    }\n\t\t    var lines = fileData.split('\\n');\n\t\t    // add one empty line because array index starts from 0, but error line number is counted from 1\n\t\t    lines.unshift('');\n\t\t    // Check if the target line is extremely long\n\t\t    var targetLine = lines[lineNumber];\n\t\t    if (targetLine && targetLine.length > THRESHOLD_LINE_LENGTH) {\n\t\t        return getThresholdExceededSnippet(lineNumber);\n\t\t    }\n\t\t    var start = lineNumber - sourceRadius;\n\t\t    var end = lineNumber + sourceRadius;\n\t\t    var result = {};\n\t\t    for (var i = start; i <= end; i++) {\n\t\t        var line = lines[i];\n\t\t        if (typeof line === 'string') {\n\t\t            result[i] = line;\n\t\t        }\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\tfunction isBrowserConfig(config) {\n\t\t    return config.async !== undefined;\n\t\t}\n\t\texports.isBrowserConfig = isBrowserConfig;\n\t\t/** globalThis has fairly good support. But just in case, lets check its defined.\n\t\t * @see {https://caniuse.com/?search=globalThis}\n\t\t */\n\t\tfunction globalThisOrWindow() {\n\t\t    if (typeof globalThis !== 'undefined') {\n\t\t        return globalThis;\n\t\t    }\n\t\t    if (typeof self !== 'undefined') {\n\t\t        return self;\n\t\t    }\n\t\t    return window;\n\t\t}\n\t\texports.globalThisOrWindow = globalThisOrWindow;\n\t\tvar _deprecatedMethodCalls = {};\n\t\t/**\n\t\t * Logs a deprecation warning, every X calls to the method.\n\t\t */\n\t\tfunction logDeprecatedMethod(logger, oldMethod, newMethod, callCountThreshold) {\n\t\t    if (callCountThreshold === void 0) { callCountThreshold = 100; }\n\t\t    var key = \"\".concat(oldMethod, \"-\").concat(newMethod);\n\t\t    if (typeof _deprecatedMethodCalls[key] === 'undefined') {\n\t\t        _deprecatedMethodCalls[key] = 0;\n\t\t    }\n\t\t    if (_deprecatedMethodCalls[key] % callCountThreshold !== 0) {\n\t\t        _deprecatedMethodCalls[key]++;\n\t\t        return;\n\t\t    }\n\t\t    var msg = \"Deprecation warning: \".concat(oldMethod, \" has been deprecated; please use \").concat(newMethod, \" instead.\");\n\t\t    logger.warn(msg);\n\t\t    _deprecatedMethodCalls[key]++;\n\t\t}\n\t\texports.logDeprecatedMethod = logDeprecatedMethod;\n\t\t\n\t} (util$1));\n\n\tObject.defineProperty(events, \"__esModule\", { value: true });\n\tvar util_1$4 = util$1;\n\tfunction default_1$4(_window) {\n\t    if (_window === void 0) { _window = (0, util_1$4.globalThisOrWindow)(); }\n\t    return {\n\t        shouldReloadOnConfigure: false,\n\t        load: function (client) {\n\t            function sendEventsToInsights() {\n\t                return client.config.eventsEnabled;\n\t            }\n\t            if (!sendEventsToInsights()) {\n\t                return;\n\t            }\n\t            (0, util_1$4.instrumentConsole)(_window, function (level, args) {\n\t                if (!sendEventsToInsights()) {\n\t                    return;\n\t                }\n\t                if (args.length === 0) {\n\t                    return;\n\t                }\n\t                var data = {\n\t                    severity: level,\n\t                };\n\t                if (typeof args[0] === 'string') {\n\t                    data.message = args[0];\n\t                    data.args = args.slice(1);\n\t                }\n\t                else {\n\t                    data.args = args;\n\t                }\n\t                client.event('log', data);\n\t            });\n\t        }\n\t    };\n\t}\n\tevents.default = default_1$4;\n\n\tvar client = {};\n\n\tvar store = {};\n\n\tObject.defineProperty(store, \"__esModule\", { value: true });\n\tstore.GlobalStore = void 0;\n\tvar util_1$3 = util$1;\n\tvar GlobalStore = /** @class */ (function () {\n\t    function GlobalStore(contents, breadcrumbsLimit) {\n\t        this.contents = contents;\n\t        this.breadcrumbsLimit = breadcrumbsLimit;\n\t    }\n\t    GlobalStore.create = function (contents, breadcrumbsLimit) {\n\t        return new GlobalStore(contents, breadcrumbsLimit);\n\t    };\n\t    GlobalStore.prototype.available = function () {\n\t        return true;\n\t    };\n\t    GlobalStore.prototype.getContents = function (key) {\n\t        var value = key ? this.contents[key] : this.contents;\n\t        return JSON.parse(JSON.stringify(value));\n\t    };\n\t    GlobalStore.prototype.setContext = function (context) {\n\t        this.contents.context = (0, util_1$3.merge)(this.contents.context, context || {});\n\t    };\n\t    GlobalStore.prototype.addBreadcrumb = function (breadcrumb) {\n\t        if (this.contents.breadcrumbs.length == this.breadcrumbsLimit) {\n\t            this.contents.breadcrumbs.shift();\n\t        }\n\t        this.contents.breadcrumbs.push(breadcrumb);\n\t    };\n\t    GlobalStore.prototype.clear = function () {\n\t        this.contents.context = {};\n\t        this.contents.breadcrumbs = [];\n\t    };\n\t    GlobalStore.prototype.run = function (callback) {\n\t        return callback();\n\t    };\n\t    return GlobalStore;\n\t}());\n\tstore.GlobalStore = GlobalStore;\n\n\tvar throttled_events_logger = {};\n\n\tclass NdJson {\n\t    static parse(data) {\n\t        const lines = data.trim().split('\\n');\n\t        return lines.map(line => JSON.parse(line));\n\t    }\n\t    static stringify(data) {\n\t        return data.map(item => JSON.stringify(item)).join('\\n');\n\t    }\n\t}\n\n\tvar module = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tNdJson: NdJson\n\t});\n\n\tvar require$$0 = /*@__PURE__*/getAugmentedNamespace(module);\n\n\tvar defaults = {};\n\n\tObject.defineProperty(defaults, \"__esModule\", { value: true });\n\tdefaults.CONFIG = void 0;\n\tdefaults.CONFIG = {\n\t    apiKey: null,\n\t    endpoint: 'https://api.honeybadger.io',\n\t    appEndpoint: 'https://app.honeybadger.io',\n\t    environment: null,\n\t    hostname: null,\n\t    projectRoot: null,\n\t    component: null,\n\t    action: null,\n\t    revision: null,\n\t    reportData: null,\n\t    breadcrumbsEnabled: true,\n\t    // we could decide the value of eventsEnabled based on `env` and `developmentEnvironments`\n\t    eventsEnabled: false,\n\t    maxBreadcrumbs: 40,\n\t    maxObjectDepth: 8,\n\t    logger: console,\n\t    developmentEnvironments: ['dev', 'development', 'test'],\n\t    debug: false,\n\t    tags: null,\n\t    enableUncaught: true,\n\t    enableUnhandledRejection: true,\n\t    afterUncaught: function () { return true; },\n\t    filters: ['creditcard', 'password'],\n\t    __plugins: [],\n\t};\n\n\tvar __assign$2 = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t    __assign$2 = Object.assign || function(t) {\n\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t            s = arguments[i];\n\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t                t[p] = s[p];\n\t        }\n\t        return t;\n\t    };\n\t    return __assign$2.apply(this, arguments);\n\t};\n\tvar __awaiter$2 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t    });\n\t};\n\tvar __generator$2 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t    function step(op) {\n\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t        while (_) try {\n\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t            switch (op[0]) {\n\t                case 0: case 1: t = op; break;\n\t                case 4: _.label++; return { value: op[1], done: false };\n\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t                default:\n\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t                    if (t[2]) _.ops.pop();\n\t                    _.trys.pop(); continue;\n\t            }\n\t            op = body.call(thisArg, _);\n\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t    }\n\t};\n\tObject.defineProperty(throttled_events_logger, \"__esModule\", { value: true });\n\tthrottled_events_logger.ThrottledEventsLogger = void 0;\n\tvar json_nd_1 = require$$0;\n\tvar util_1$2 = util$1;\n\tvar defaults_1$1 = defaults;\n\tvar ThrottledEventsLogger = /** @class */ (function () {\n\t    function ThrottledEventsLogger(config, transport) {\n\t        this.config = config;\n\t        this.transport = transport;\n\t        this.queue = [];\n\t        this.isProcessing = false;\n\t        this.config = __assign$2(__assign$2({}, defaults_1$1.CONFIG), config);\n\t        this.logger = this.originalLogger();\n\t    }\n\t    ThrottledEventsLogger.prototype.configure = function (opts) {\n\t        for (var k in opts) {\n\t            this.config[k] = opts[k];\n\t        }\n\t    };\n\t    ThrottledEventsLogger.prototype.log = function (payload) {\n\t        this.queue.push(payload);\n\t        if (!this.isProcessing) {\n\t            this.processQueue();\n\t        }\n\t    };\n\t    ThrottledEventsLogger.prototype.flushAsync = function () {\n\t        this.logger.debug('[Honeybadger] Flushing events');\n\t        return this.send();\n\t    };\n\t    ThrottledEventsLogger.prototype.processQueue = function () {\n\t        var _this = this;\n\t        if (this.queue.length === 0 || this.isProcessing) {\n\t            return;\n\t        }\n\t        this.isProcessing = true;\n\t        this.send()\n\t            .then(function () {\n\t            setTimeout(function () {\n\t                _this.isProcessing = false;\n\t                _this.processQueue();\n\t            }, 50);\n\t        })\n\t            .catch(function (error) {\n\t            _this.logger.error('[Honeybadger] Error making HTTP request:', error);\n\t            // Continue processing the queue even if there's an error\n\t            setTimeout(function () {\n\t                _this.isProcessing = false;\n\t                _this.processQueue();\n\t            }, 50);\n\t        });\n\t    };\n\t    ThrottledEventsLogger.prototype.send = function () {\n\t        return __awaiter$2(this, void 0, void 0, function () {\n\t            var eventsData, data;\n\t            return __generator$2(this, function (_a) {\n\t                if (this.queue.length === 0) {\n\t                    return [2 /*return*/];\n\t                }\n\t                eventsData = this.queue.slice();\n\t                this.queue = [];\n\t                data = json_nd_1.NdJson.stringify(eventsData);\n\t                return [2 /*return*/, this.makeHttpRequest(data)];\n\t            });\n\t        });\n\t    };\n\t    ThrottledEventsLogger.prototype.makeHttpRequest = function (data) {\n\t        return __awaiter$2(this, void 0, void 0, function () {\n\t            var _this = this;\n\t            return __generator$2(this, function (_a) {\n\t                return [2 /*return*/, this.transport\n\t                        .send({\n\t                        headers: {\n\t                            'X-API-Key': this.config.apiKey,\n\t                            'Content-Type': 'application/json',\n\t                        },\n\t                        method: 'POST',\n\t                        endpoint: (0, util_1$2.endpoint)(this.config.endpoint, '/v1/events'),\n\t                        maxObjectDepth: this.config.maxObjectDepth,\n\t                        logger: this.logger,\n\t                    }, data)\n\t                        .then(function () {\n\t                        if (_this.config.debug) {\n\t                            _this.logger.debug('[Honeybadger] Events sent successfully');\n\t                        }\n\t                    })\n\t                        .catch(function (err) {\n\t                        _this.logger.error(\"[Honeybadger] Error sending events: \".concat(err.message));\n\t                    })];\n\t            });\n\t        });\n\t    };\n\t    /**\n\t     * todo: improve this\n\t     *\n\t     * The EventsLogger overrides the console methods to enable automatic instrumentation\n\t     * of console logs to the Honeybadger API.\n\t     * So if we want to log something in here we need to use the original methods.\n\t     */\n\t    ThrottledEventsLogger.prototype.originalLogger = function () {\n\t        var _a, _b, _c, _d, _e;\n\t        return {\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            log: (_a = console.log.__hb_original) !== null && _a !== void 0 ? _a : console.log,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            info: (_b = console.info.__hb_original) !== null && _b !== void 0 ? _b : console.info,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            debug: (_c = console.debug.__hb_original) !== null && _c !== void 0 ? _c : console.debug,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            warn: (_d = console.warn.__hb_original) !== null && _d !== void 0 ? _d : console.warn,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            error: (_e = console.error.__hb_original) !== null && _e !== void 0 ? _e : console.error,\n\t        };\n\t    };\n\t    return ThrottledEventsLogger;\n\t}());\n\tthrottled_events_logger.ThrottledEventsLogger = ThrottledEventsLogger;\n\n\tvar __assign$1 = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t    __assign$1 = Object.assign || function(t) {\n\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t            s = arguments[i];\n\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t                t[p] = s[p];\n\t        }\n\t        return t;\n\t    };\n\t    return __assign$1.apply(this, arguments);\n\t};\n\tvar __awaiter$1 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t    });\n\t};\n\tvar __generator$1 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t    function step(op) {\n\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t        while (_) try {\n\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t            switch (op[0]) {\n\t                case 0: case 1: t = op; break;\n\t                case 4: _.label++; return { value: op[1], done: false };\n\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t                default:\n\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t                    if (t[2]) _.ops.pop();\n\t                    _.trys.pop(); continue;\n\t            }\n\t            op = body.call(thisArg, _);\n\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t    }\n\t};\n\tObject.defineProperty(client, \"__esModule\", { value: true });\n\tclient.Client = void 0;\n\tvar util_1$1 = util$1;\n\tvar store_1 = store;\n\tvar throttled_events_logger_1 = throttled_events_logger;\n\tvar defaults_1 = defaults;\n\t// Split at commas and spaces\n\tvar TAG_SEPARATOR = /,|\\s+/;\n\t// Checks for non-blank characters\n\tvar NOT_BLANK = /\\S/;\n\tvar Client = /** @class */ (function () {\n\t    function Client(opts, transport) {\n\t        if (opts === void 0) { opts = {}; }\n\t        this.__pluginsLoaded = false;\n\t        this.__store = null;\n\t        this.__beforeNotifyHandlers = [];\n\t        this.__afterNotifyHandlers = [];\n\t        this.__notifier = {\n\t            name: '@honeybadger-io/core',\n\t            url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/core',\n\t            version: '6.12.3'\n\t        };\n\t        this.config = __assign$1(__assign$1({}, defaults_1.CONFIG), opts);\n\t        this.__initStore();\n\t        this.__transport = transport;\n\t        this.__eventsLogger = new throttled_events_logger_1.ThrottledEventsLogger(this.config, this.__transport);\n\t        this.logger = (0, util_1$1.logger)(this);\n\t    }\n\t    Client.prototype.getVersion = function () {\n\t        return this.__notifier.version;\n\t    };\n\t    Client.prototype.getNotifier = function () {\n\t        return this.__notifier;\n\t    };\n\t    /**\n\t     * CAREFUL: When adding a new notifier or updating the name of an existing notifier,\n\t     * the Honeybadger rails project may need its mappings updated.\n\t     * See https://github.com/honeybadger-io/honeybadger/blob/master/app/presenters/breadcrumbs_presenter.rb\n\t     *     https://github.com/honeybadger-io/honeybadger/blob/master/app/models/parser/java_script.rb\n\t     *     https://github.com/honeybadger-io/honeybadger/blob/master/app/models/language.rb\n\t     **/\n\t    Client.prototype.setNotifier = function (notifier) {\n\t        this.__notifier = notifier;\n\t    };\n\t    Client.prototype.configure = function (opts) {\n\t        if (opts === void 0) { opts = {}; }\n\t        for (var k in opts) {\n\t            this.config[k] = opts[k];\n\t        }\n\t        this.__eventsLogger.configure(this.config);\n\t        this.loadPlugins();\n\t        return this;\n\t    };\n\t    Client.prototype.loadPlugins = function () {\n\t        var _this = this;\n\t        var pluginsToLoad = this.__pluginsLoaded\n\t            ? this.config.__plugins.filter(function (plugin) { return plugin.shouldReloadOnConfigure; })\n\t            : this.config.__plugins;\n\t        pluginsToLoad.forEach(function (plugin) { return plugin.load(_this); });\n\t        this.__pluginsLoaded = true;\n\t    };\n\t    Client.prototype.__initStore = function () {\n\t        this.__store = new store_1.GlobalStore({ context: {}, breadcrumbs: [] }, this.config.maxBreadcrumbs);\n\t    };\n\t    Client.prototype.beforeNotify = function (handler) {\n\t        this.__beforeNotifyHandlers.push(handler);\n\t        return this;\n\t    };\n\t    Client.prototype.afterNotify = function (handler) {\n\t        this.__afterNotifyHandlers.push(handler);\n\t        return this;\n\t    };\n\t    Client.prototype.setContext = function (context) {\n\t        if (typeof context === 'object' && context != null) {\n\t            this.__store.setContext(context);\n\t        }\n\t        return this;\n\t    };\n\t    Client.prototype.resetContext = function (context) {\n\t        this.logger.warn('Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.');\n\t        this.__store.clear();\n\t        if (typeof context === 'object' && context !== null) {\n\t            this.__store.setContext(context);\n\t        }\n\t        return this;\n\t    };\n\t    Client.prototype.clear = function () {\n\t        this.__store.clear();\n\t        return this;\n\t    };\n\t    Client.prototype.notify = function (noticeable, name, extra) {\n\t        var _this = this;\n\t        if (name === void 0) { name = undefined; }\n\t        if (extra === void 0) { extra = undefined; }\n\t        var notice = this.makeNotice(noticeable, name, extra);\n\t        // we need to have the source file data before the beforeNotifyHandlers,\n\t        // in case they modify them\n\t        var sourceCodeData = notice && notice.backtrace ? notice.backtrace.map(function (trace) { return (0, util_1$1.shallowClone)(trace); }) : null;\n\t        var preConditionsResult = this.__runPreconditions(notice);\n\t        if (preConditionsResult instanceof Error) {\n\t            (0, util_1$1.runAfterNotifyHandlers)(notice, this.__afterNotifyHandlers, preConditionsResult);\n\t            return false;\n\t        }\n\t        if (preConditionsResult instanceof Promise) {\n\t            preConditionsResult.then(function (result) {\n\t                if (result instanceof Error) {\n\t                    (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, result);\n\t                    return false;\n\t                }\n\t                return _this.__send(notice, sourceCodeData);\n\t            });\n\t            return true;\n\t        }\n\t        this.__send(notice, sourceCodeData).catch(function (_err) { });\n\t        return true;\n\t    };\n\t    /**\n\t     * An async version of {@link notify} that resolves only after the notice has been reported to Honeybadger.\n\t     * Implemented using the {@link afterNotify} hook.\n\t     * Rejects if for any reason the report failed to be reported.\n\t     * Useful in serverless environments (AWS Lambda).\n\t     */\n\t    Client.prototype.notifyAsync = function (noticeable, name, extra) {\n\t        var _this = this;\n\t        if (name === void 0) { name = undefined; }\n\t        if (extra === void 0) { extra = undefined; }\n\t        return new Promise(function (resolve, reject) {\n\t            var applyAfterNotify = function (partialNotice) {\n\t                var originalAfterNotify = partialNotice.afterNotify;\n\t                partialNotice.afterNotify = function (err) {\n\t                    originalAfterNotify === null || originalAfterNotify === void 0 ? void 0 : originalAfterNotify.call(_this, err);\n\t                    if (err) {\n\t                        return reject(err);\n\t                    }\n\t                    resolve();\n\t                };\n\t            };\n\t            // We have to respect any afterNotify hooks that come from the arguments\n\t            var objectToOverride;\n\t            if (noticeable.afterNotify) {\n\t                objectToOverride = noticeable;\n\t            }\n\t            else if (name && name.afterNotify) {\n\t                objectToOverride = name;\n\t            }\n\t            else if (extra && extra.afterNotify) {\n\t                objectToOverride = extra;\n\t            }\n\t            else if (name && typeof name === 'object') {\n\t                objectToOverride = name;\n\t            }\n\t            else if (extra) {\n\t                objectToOverride = extra;\n\t            }\n\t            else {\n\t                objectToOverride = name = {};\n\t            }\n\t            applyAfterNotify(objectToOverride);\n\t            _this.notify(noticeable, name, extra);\n\t        });\n\t    };\n\t    Client.prototype.makeNotice = function (noticeable, name, extra) {\n\t        if (name === void 0) { name = undefined; }\n\t        if (extra === void 0) { extra = undefined; }\n\t        var notice = (0, util_1$1.makeNotice)(noticeable);\n\t        if (name && !(typeof name === 'object')) {\n\t            var n = String(name);\n\t            name = { name: n };\n\t        }\n\t        if (name) {\n\t            notice = (0, util_1$1.mergeNotice)(notice, name);\n\t        }\n\t        if (typeof extra === 'object' && extra !== null) {\n\t            notice = (0, util_1$1.mergeNotice)(notice, extra);\n\t        }\n\t        if ((0, util_1$1.objectIsEmpty)(notice)) {\n\t            return null;\n\t        }\n\t        var context = this.__store.getContents('context');\n\t        var noticeTags = this.__constructTags(notice.tags);\n\t        var contextTags = this.__constructTags(context['tags']);\n\t        var configTags = this.__constructTags(this.config.tags);\n\t        // Turning into a Set will remove duplicates\n\t        var tags = noticeTags.concat(contextTags).concat(configTags);\n\t        var uniqueTags = tags.filter(function (item, index) { return tags.indexOf(item) === index; });\n\t        notice = (0, util_1$1.merge)(notice, {\n\t            name: notice.name || 'Error',\n\t            context: (0, util_1$1.merge)(context, notice.context),\n\t            projectRoot: notice.projectRoot || this.config.projectRoot,\n\t            environment: notice.environment || this.config.environment,\n\t            component: notice.component || this.config.component,\n\t            action: notice.action || this.config.action,\n\t            revision: notice.revision || this.config.revision,\n\t            tags: uniqueTags,\n\t        });\n\t        // If we're passed a custom backtrace array, use it\n\t        // Otherwise we make one.\n\t        if (!Array.isArray(notice.backtrace) || !notice.backtrace.length) {\n\t            if (typeof notice.stack !== 'string' || !notice.stack.trim()) {\n\t                notice.stack = (0, util_1$1.generateStackTrace)();\n\t                notice.backtrace = (0, util_1$1.makeBacktrace)(notice.stack, true, this.logger);\n\t            }\n\t            else {\n\t                notice.backtrace = (0, util_1$1.makeBacktrace)(notice.stack, false, this.logger);\n\t            }\n\t        }\n\t        return notice;\n\t    };\n\t    Client.prototype.addBreadcrumb = function (message, opts) {\n\t        if (!this.config.breadcrumbsEnabled) {\n\t            return;\n\t        }\n\t        opts = opts || {};\n\t        var metadata = (0, util_1$1.shallowClone)(opts.metadata);\n\t        var category = opts.category || 'custom';\n\t        var timestamp = new Date().toISOString();\n\t        this.__store.addBreadcrumb({\n\t            category: category,\n\t            message: message,\n\t            metadata: metadata,\n\t            timestamp: timestamp\n\t        });\n\t        return this;\n\t    };\n\t    /**\n\t     * @deprecated Use {@link event} instead.\n\t     */\n\t    Client.prototype.logEvent = function (data) {\n\t        (0, util_1$1.logDeprecatedMethod)(this.logger, 'Honeybadger.logEvent', 'Honeybadger.event');\n\t        this.event('log', data);\n\t    };\n\t    Client.prototype.event = function (type, data) {\n\t        var _a;\n\t        if (typeof type === 'object') {\n\t            data = type;\n\t            type = (_a = type['event_type']) !== null && _a !== void 0 ? _a : undefined;\n\t        }\n\t        this.__eventsLogger.log(__assign$1({ event_type: type, ts: new Date().toISOString() }, data));\n\t    };\n\t    /**\n\t     * This method currently flushes the event (Insights) queue.\n\t     * In the future, it should also flush the error queue (assuming an error throttler is implemented).\n\t     */\n\t    Client.prototype.flushAsync = function () {\n\t        return this.__eventsLogger.flushAsync();\n\t    };\n\t    Client.prototype.__getBreadcrumbs = function () {\n\t        return this.__store.getContents('breadcrumbs').slice();\n\t    };\n\t    Client.prototype.__getContext = function () {\n\t        return this.__store.getContents('context');\n\t    };\n\t    Client.prototype.__developmentMode = function () {\n\t        if (this.config.reportData === true) {\n\t            return false;\n\t        }\n\t        return (this.config.environment && this.config.developmentEnvironments.includes(this.config.environment));\n\t    };\n\t    Client.prototype.__buildPayload = function (notice) {\n\t        var headers = (0, util_1$1.filter)(notice.headers, this.config.filters) || {};\n\t        var cgiData = (0, util_1$1.filter)(__assign$1(__assign$1({}, notice.cgiData), (0, util_1$1.formatCGIData)(headers, 'HTTP_')), this.config.filters);\n\t        return {\n\t            notifier: this.__notifier,\n\t            breadcrumbs: {\n\t                enabled: !!this.config.breadcrumbsEnabled,\n\t                trail: notice.__breadcrumbs || []\n\t            },\n\t            error: {\n\t                class: notice.name,\n\t                message: notice.message,\n\t                backtrace: notice.backtrace,\n\t                fingerprint: notice.fingerprint,\n\t                tags: notice.tags,\n\t                causes: (0, util_1$1.getCauses)(notice, this.logger),\n\t            },\n\t            request: {\n\t                url: (0, util_1$1.filterUrl)(notice.url, this.config.filters),\n\t                component: notice.component,\n\t                action: notice.action,\n\t                context: notice.context,\n\t                cgi_data: cgiData,\n\t                params: (0, util_1$1.filter)(notice.params, this.config.filters) || {},\n\t                session: (0, util_1$1.filter)(notice.session, this.config.filters) || {}\n\t            },\n\t            server: {\n\t                project_root: notice.projectRoot,\n\t                environment_name: notice.environment,\n\t                revision: notice.revision,\n\t                hostname: this.config.hostname,\n\t                time: new Date().toUTCString()\n\t            },\n\t            details: notice.details || {}\n\t        };\n\t    };\n\t    Client.prototype.__constructTags = function (tags) {\n\t        if (!tags) {\n\t            return [];\n\t        }\n\t        return tags.toString().split(TAG_SEPARATOR).filter(function (tag) { return NOT_BLANK.test(tag); });\n\t    };\n\t    Client.prototype.__runPreconditions = function (notice) {\n\t        var _this = this;\n\t        var preConditionError = null;\n\t        if (!notice) {\n\t            this.logger.debug('failed to build error report');\n\t            preConditionError = new Error('failed to build error report');\n\t        }\n\t        if (this.config.reportData === false) {\n\t            this.logger.debug('skipping error report: honeybadger.js is disabled', notice);\n\t            preConditionError = new Error('honeybadger.js is disabled');\n\t        }\n\t        if (this.__developmentMode()) {\n\t            this.logger.log('honeybadger.js is in development mode; the following error report will be sent in production.', notice);\n\t            preConditionError = new Error('honeybadger.js is in development mode');\n\t        }\n\t        if (!this.config.apiKey) {\n\t            this.logger.warn('could not send error report: no API key has been configured', notice);\n\t            preConditionError = new Error('missing API key');\n\t        }\n\t        var beforeNotifyResult = (0, util_1$1.runBeforeNotifyHandlers)(notice, this.__beforeNotifyHandlers);\n\t        if (!preConditionError && !beforeNotifyResult.result) {\n\t            this.logger.debug('skipping error report: one or more beforeNotify handlers returned false', notice);\n\t            preConditionError = new Error('beforeNotify handlers returned false');\n\t        }\n\t        if (beforeNotifyResult.results.length && beforeNotifyResult.results.some(function (result) { return result instanceof Promise; })) {\n\t            return Promise.allSettled(beforeNotifyResult.results)\n\t                .then(function (results) {\n\t                if (!preConditionError && (results.some(function (result) { return result.status === 'rejected' || result.value === false; }))) {\n\t                    _this.logger.debug('skipping error report: one or more beforeNotify handlers returned false', notice);\n\t                    preConditionError = new Error('beforeNotify handlers (async) returned false');\n\t                }\n\t                if (preConditionError) {\n\t                    return preConditionError;\n\t                }\n\t            });\n\t        }\n\t        return preConditionError;\n\t    };\n\t    Client.prototype.__send = function (notice, originalBacktrace) {\n\t        var _this = this;\n\t        if (this.config.breadcrumbsEnabled) {\n\t            this.addBreadcrumb('Honeybadger Notice', {\n\t                category: 'notice',\n\t                metadata: {\n\t                    message: notice.message,\n\t                    name: notice.name,\n\t                    stack: notice.stack\n\t                }\n\t            });\n\t            notice.__breadcrumbs = this.__store.getContents('breadcrumbs');\n\t        }\n\t        else {\n\t            notice.__breadcrumbs = [];\n\t        }\n\t        return (0, util_1$1.getSourceForBacktrace)(originalBacktrace, this.__getSourceFileHandler)\n\t            .then(function (sourcePerTrace) { return __awaiter$1(_this, void 0, void 0, function () {\n\t            var payload;\n\t            return __generator$1(this, function (_a) {\n\t                sourcePerTrace.forEach(function (source, index) {\n\t                    notice.backtrace[index].source = source;\n\t                });\n\t                payload = this.__buildPayload(notice);\n\t                return [2 /*return*/, this.__transport\n\t                        .send({\n\t                        headers: {\n\t                            'X-API-Key': this.config.apiKey,\n\t                            'Content-Type': 'application/json',\n\t                            'Accept': 'text/json, application/json'\n\t                        },\n\t                        method: 'POST',\n\t                        endpoint: (0, util_1$1.endpoint)(this.config.endpoint, '/v1/notices/js'),\n\t                        maxObjectDepth: this.config.maxObjectDepth,\n\t                        logger: this.logger,\n\t                    }, payload)];\n\t            });\n\t        }); })\n\t            .then(function (res) {\n\t            if (res.statusCode !== 201) {\n\t                (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, new Error(\"Bad HTTP response: \".concat(res.statusCode)));\n\t                _this.logger.warn(\"Error report failed: unknown response from server. code=\".concat(res.statusCode));\n\t                return false;\n\t            }\n\t            var uuid = JSON.parse(res.body).id;\n\t            (0, util_1$1.runAfterNotifyHandlers)((0, util_1$1.merge)(notice, {\n\t                id: uuid\n\t            }), _this.__afterNotifyHandlers);\n\t            var noticeUrl = (0, util_1$1.endpoint)(_this.config.appEndpoint, \"notice/\".concat(uuid));\n\t            _this.logger.info(\"Error report sent \\u26A1 \".concat(noticeUrl));\n\t            return true;\n\t        })\n\t            .catch(function (err) {\n\t            _this.logger.error('Error report failed: an unknown error occurred.', \"message=\".concat(err.message));\n\t            (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, err);\n\t            return false;\n\t        });\n\t    };\n\t    return Client;\n\t}());\n\tclient.Client = Client;\n\n\tvar types = {};\n\n\tObject.defineProperty(types, \"__esModule\", { value: true });\n\n\t(function (exports) {\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t      desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t    }\n\t\t    Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t    o[\"default\"] = v;\n\t\t});\n\t\tvar __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {\n\t\t    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n\t\t};\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t    if (mod && mod.__esModule) return mod;\n\t\t    var result = {};\n\t\t    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t    __setModuleDefault(result, mod);\n\t\t    return result;\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.Plugins = exports.Defaults = exports.Util = exports.Types = exports.Client = void 0;\n\t\tvar events_1 = __importDefault(events);\n\t\tvar client_1 = client;\n\t\tObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.Client; } });\n\t\t__exportStar(store, exports);\n\t\texports.Types = __importStar(types);\n\t\texports.Util = __importStar(util$1);\n\t\texports.Defaults = __importStar(defaults);\n\t\texports.Plugins = {\n\t\t    events: events_1.default\n\t\t};\n\t\t\n\t} (src));\n\n\tvar util = {};\n\n\tObject.defineProperty(util, \"__esModule\", { value: true });\n\tutil.preferCatch = util.encodeCookie = util.decodeCookie = util.localURLPathname = util.parseURL = util.nativeFetch = util.stringTextOfElement = util.stringSelectorOfElement = util.stringNameOfElement = void 0;\n\tvar core_1$7 = src;\n\tvar globalThisOrWindow$7 = core_1$7.Util.globalThisOrWindow;\n\t/**\n\t * Converts an HTMLElement into a human-readable string.\n\t * @param {!HTMLElement} element\n\t * @return {string}\n\t */\n\tfunction stringNameOfElement(element) {\n\t    if (!element || !element.tagName) {\n\t        return '';\n\t    }\n\t    var name = element.tagName.toLowerCase();\n\t    // Ignore the root <html> element in selectors and events.\n\t    if (name === 'html') {\n\t        return '';\n\t    }\n\t    if (element.id) {\n\t        name += \"#\".concat(element.id);\n\t    }\n\t    var stringClassNames = element.getAttribute('class');\n\t    if (stringClassNames) {\n\t        stringClassNames.split(/\\s+/).forEach(function (className) {\n\t            name += \".\".concat(className);\n\t        });\n\t    }\n\t    ['alt', 'name', 'title', 'type'].forEach(function (attrName) {\n\t        var attr = element.getAttribute(attrName);\n\t        if (attr) {\n\t            name += \"[\".concat(attrName, \"=\\\"\").concat(attr, \"\\\"]\");\n\t        }\n\t    });\n\t    var siblings = getSiblings(element);\n\t    if (siblings.length > 1) {\n\t        name += \":nth-child(\".concat(Array.prototype.indexOf.call(siblings, element) + 1, \")\");\n\t    }\n\t    return name;\n\t}\n\tutil.stringNameOfElement = stringNameOfElement;\n\tfunction stringSelectorOfElement(element) {\n\t    var name = stringNameOfElement(element);\n\t    if (element.parentNode && element.parentNode.tagName) {\n\t        var parentName = stringSelectorOfElement(element.parentNode);\n\t        if (parentName.length > 0) {\n\t            return \"\".concat(parentName, \" > \").concat(name);\n\t        }\n\t    }\n\t    return name;\n\t}\n\tutil.stringSelectorOfElement = stringSelectorOfElement;\n\tfunction stringTextOfElement(element) {\n\t    var text = element.textContent || element.innerText || '';\n\t    if (!text && (element.type === 'submit' || element.type === 'button')) {\n\t        text = element.value;\n\t    }\n\t    return truncate(text.trim(), 300);\n\t}\n\tutil.stringTextOfElement = stringTextOfElement;\n\tfunction nativeFetch() {\n\t    var global = globalThisOrWindow$7();\n\t    if (!global.fetch) {\n\t        return false;\n\t    }\n\t    if (isNative(global.fetch)) {\n\t        return true;\n\t    }\n\t    if (typeof document === 'undefined') {\n\t        return false;\n\t    }\n\t    // If fetch isn't native, it may be wrapped by someone else. Try to get\n\t    // a pristine function from an iframe.\n\t    try {\n\t        var sandbox = document.createElement('iframe');\n\t        sandbox.style.display = 'none';\n\t        document.head.appendChild(sandbox);\n\t        var result = sandbox.contentWindow.fetch && isNative(sandbox.contentWindow.fetch);\n\t        document.head.removeChild(sandbox);\n\t        return result;\n\t    }\n\t    catch (err) {\n\t        if (console && console.warn) {\n\t            console.warn('failed to detect native fetch via iframe: ' + err);\n\t        }\n\t    }\n\t    return false;\n\t}\n\tutil.nativeFetch = nativeFetch;\n\tfunction isNative(func) {\n\t    return func.toString().indexOf('native') !== -1;\n\t}\n\tfunction parseURL(url) {\n\t    // Regexp: https://tools.ietf.org/html/rfc3986#appendix-B\n\t    var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/) || {};\n\t    return {\n\t        protocol: match[2],\n\t        host: match[4],\n\t        pathname: match[5]\n\t    };\n\t}\n\tutil.parseURL = parseURL;\n\tfunction localURLPathname(url) {\n\t    var parsed = parseURL(url);\n\t    var parsedDocURL = parseURL(document.URL);\n\t    // URL must be relative\n\t    if (!parsed.host || !parsed.protocol) {\n\t        return parsed.pathname;\n\t    }\n\t    // Same domain\n\t    if (parsed.protocol === parsedDocURL.protocol && parsed.host === parsedDocURL.host) {\n\t        return parsed.pathname;\n\t    }\n\t    // x-domain\n\t    return \"\".concat(parsed.protocol, \"://\").concat(parsed.host).concat(parsed.pathname);\n\t}\n\tutil.localURLPathname = localURLPathname;\n\tfunction decodeCookie(string) {\n\t    var result = {};\n\t    string.split(/[;,]\\s?/).forEach(function (pair) {\n\t        var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n\t        result[key] = value;\n\t    });\n\t    return result;\n\t}\n\tutil.decodeCookie = decodeCookie;\n\tfunction encodeCookie(object) {\n\t    if (typeof object !== 'object') {\n\t        return undefined;\n\t    }\n\t    var cookies = [];\n\t    for (var k in object) {\n\t        cookies.push(k + '=' + object[k]);\n\t    }\n\t    return cookies.join(';');\n\t}\n\tutil.encodeCookie = encodeCookie;\n\t// Helpers\n\tfunction getSiblings(element) {\n\t    try {\n\t        var nodes = element.parentNode.childNodes;\n\t        var siblings_1 = [];\n\t        Array.prototype.forEach.call(nodes, function (node) {\n\t            if (node.tagName && node.tagName === element.tagName) {\n\t                siblings_1.push(node);\n\t            }\n\t        });\n\t        return siblings_1;\n\t    }\n\t    catch (e) {\n\t        return [];\n\t    }\n\t}\n\tfunction truncate(string, length) {\n\t    if (string.length > length) {\n\t        string = string.substr(0, length) + '...';\n\t    }\n\t    return string;\n\t}\n\t// Used to decide which error handling method to use when wrapping async\n\t// handlers: try/catch, or `window.onerror`. When available, `window.onerror`\n\t// will provide more information in modern browsers.\n\tutil.preferCatch = (function () {\n\t    var preferCatch = true;\n\t    // In case we're in an environment without access to \"window\", lets make sure theres a window.\n\t    if (typeof window === 'undefined')\n\t        return preferCatch;\n\t    // IE < 10\n\t    if (!window.atob) {\n\t        preferCatch = false;\n\t    }\n\t    // Modern browsers support the full ErrorEvent API\n\t    // See https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n\t    if (window.ErrorEvent) {\n\t        try {\n\t            if ((new window.ErrorEvent('')).colno === 0) {\n\t                preferCatch = false;\n\t            }\n\t            // eslint-disable-next-line no-empty\n\t        }\n\t        catch (_e) { }\n\t    }\n\t    return preferCatch;\n\t})();\n\n\tvar onerror = {};\n\n\tObject.defineProperty(onerror, \"__esModule\", { value: true });\n\tonerror.onError = onerror.ignoreNextOnError = void 0;\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$6 = src;\n\tvar instrument$4 = core_1$6.Util.instrument, makeNotice = core_1$6.Util.makeNotice, globalThisOrWindow$6 = core_1$6.Util.globalThisOrWindow;\n\tvar ignoreOnError = 0;\n\tvar currentTimeout;\n\tfunction ignoreNextOnError() {\n\t    ignoreOnError += 1;\n\t    clearTimeout(currentTimeout);\n\t    currentTimeout = setTimeout(function () {\n\t        ignoreOnError = 0;\n\t    });\n\t}\n\tonerror.ignoreNextOnError = ignoreNextOnError;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfunction onError(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$6(); }\n\t    return {\n\t        load: function (client) {\n\t            instrument$4(_window, 'onerror', function (original) {\n\t                var onerror = function (msg, url, line, col, err) {\n\t                    client.logger.debug('window.onerror callback invoked', arguments);\n\t                    if (ignoreOnError > 0) {\n\t                        client.logger.debug('Ignoring window.onerror (error likely reported earlier)', arguments);\n\t                        ignoreOnError -= 1;\n\t                        return;\n\t                    }\n\t                    // See https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onerror#Notes\n\t                    if (line === 0 && /Script error\\.?/.test(msg)) {\n\t                        if (client.config.enableUncaught) {\n\t                            // Log only if the user wants to report uncaught errors\n\t                            client.logger.warn('Ignoring cross-domain script error: enable CORS to track these types of errors', arguments);\n\t                        }\n\t                        return;\n\t                    }\n\t                    var notice = makeNotice(err);\n\t                    if (!notice.name) {\n\t                        notice.name = 'window.onerror';\n\t                    }\n\t                    if (!notice.message) {\n\t                        notice.message = msg;\n\t                    }\n\t                    if (!notice.stack) {\n\t                        // Simulate v8 stack\n\t                        notice.stack = [notice.message, '\\n    at ? (', url || 'unknown', ':', line || 0, ':', col || 0, ')'].join('');\n\t                    }\n\t                    client.addBreadcrumb((notice.name === 'window.onerror' || !notice.name) ? 'window.onerror' : \"window.onerror: \".concat(notice.name), {\n\t                        category: 'error',\n\t                        metadata: {\n\t                            name: notice.name,\n\t                            message: notice.message,\n\t                            stack: notice.stack\n\t                        }\n\t                    });\n\t                    if (client.config.enableUncaught) {\n\t                        client.notify(notice);\n\t                    }\n\t                };\n\t                return function (msg, url, line, col, err) {\n\t                    onerror(msg, url, line, col, err);\n\t                    if (typeof original === 'function') {\n\t                        return original.apply(_window, arguments);\n\t                    }\n\t                    return false;\n\t                };\n\t            });\n\t        }\n\t    };\n\t}\n\tonerror.onError = onError;\n\n\tvar onunhandledrejection = {};\n\n\tObject.defineProperty(onunhandledrejection, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$5 = src;\n\tvar instrument$3 = core_1$5.Util.instrument, globalThisOrWindow$5 = core_1$5.Util.globalThisOrWindow;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfunction default_1$3(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$5(); }\n\t    return {\n\t        load: function (client) {\n\t            if (!client.config.enableUnhandledRejection) {\n\t                return;\n\t            }\n\t            instrument$3(_window, 'onunhandledrejection', function (original) {\n\t                // See https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n\t                function onunhandledrejection(promiseRejectionEvent) {\n\t                    var _a;\n\t                    client.logger.debug('window.onunhandledrejection callback invoked', arguments);\n\t                    if (!client.config.enableUnhandledRejection) {\n\t                        return;\n\t                    }\n\t                    var reason = promiseRejectionEvent.reason;\n\t                    if (reason instanceof Error) {\n\t                        // simulate v8 stack\n\t                        // const fileName = reason.fileName || 'unknown'\n\t                        // const lineNumber = reason.lineNumber || 0\n\t                        var fileName = 'unknown';\n\t                        var lineNumber = 0;\n\t                        var stackFallback = \"\".concat(reason.message, \"\\n    at ? (\").concat(fileName, \":\").concat(lineNumber, \")\");\n\t                        var stack = reason.stack || stackFallback;\n\t                        var err = {\n\t                            name: reason.name,\n\t                            message: \"UnhandledPromiseRejectionWarning: \".concat(reason),\n\t                            stack: stack\n\t                        };\n\t                        client.addBreadcrumb(\"window.onunhandledrejection: \".concat(err.name), {\n\t                            category: 'error',\n\t                            metadata: err\n\t                        });\n\t                        client.notify(err);\n\t                        return;\n\t                    }\n\t                    var message = typeof reason === 'string' ? reason : ((_a = JSON.stringify(reason)) !== null && _a !== void 0 ? _a : 'Unspecified reason');\n\t                    client.notify({\n\t                        name: 'window.onunhandledrejection',\n\t                        message: \"UnhandledPromiseRejectionWarning: \".concat(message)\n\t                    });\n\t                }\n\t                return function (promiseRejectionEvent) {\n\t                    onunhandledrejection(promiseRejectionEvent);\n\t                    if (typeof original === 'function') {\n\t                        original.apply(this, arguments);\n\t                    }\n\t                };\n\t            });\n\t        }\n\t    };\n\t}\n\tonunhandledrejection.default = default_1$3;\n\n\tvar breadcrumbs = {};\n\n\tObject.defineProperty(breadcrumbs, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$4 = src;\n\tvar util_1 = util;\n\tvar sanitize$1 = core_1$4.Util.sanitize, instrument$2 = core_1$4.Util.instrument, instrumentConsole = core_1$4.Util.instrumentConsole, globalThisOrWindow$4 = core_1$4.Util.globalThisOrWindow;\n\tfunction default_1$2(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$4(); }\n\t    return {\n\t        load: function (client) {\n\t            function breadcrumbsEnabled(type) {\n\t                if (client.config.breadcrumbsEnabled === true) {\n\t                    return true;\n\t                }\n\t                if (type) {\n\t                    return client.config.breadcrumbsEnabled[type] === true;\n\t                }\n\t                return client.config.breadcrumbsEnabled !== false;\n\t            }\n\t            // Breadcrumbs: instrument console\n\t            (function () {\n\t                if (!breadcrumbsEnabled('console')) {\n\t                    return;\n\t                }\n\t                function inspectArray(obj) {\n\t                    if (!Array.isArray(obj)) {\n\t                        return '';\n\t                    }\n\t                    return obj.map(function (value) {\n\t                        try {\n\t                            return String(value);\n\t                        }\n\t                        catch (e) {\n\t                            return '[unknown]';\n\t                        }\n\t                    }).join(' ');\n\t                }\n\t                instrumentConsole(_window, function (level, args) {\n\t                    var message = inspectArray(args);\n\t                    var opts = {\n\t                        category: 'log',\n\t                        metadata: {\n\t                            level: level,\n\t                            arguments: sanitize$1(args, 3)\n\t                        }\n\t                    };\n\t                    client.addBreadcrumb(message, opts);\n\t                });\n\t            })();\n\t            // Breadcrumbs: instrument click events\n\t            (function () {\n\t                if (!breadcrumbsEnabled('dom')) {\n\t                    return;\n\t                }\n\t                if (typeof _window.addEventListener !== 'function') {\n\t                    return;\n\t                }\n\t                _window.addEventListener('click', function (event) {\n\t                    var message, selector, text;\n\t                    try {\n\t                        message = (0, util_1.stringNameOfElement)(event.target);\n\t                        selector = (0, util_1.stringSelectorOfElement)(event.target);\n\t                        text = (0, util_1.stringTextOfElement)(event.target);\n\t                    }\n\t                    catch (e) {\n\t                        message = 'UI Click';\n\t                        selector = '[unknown]';\n\t                        text = '[unknown]';\n\t                    }\n\t                    // There's nothing to display\n\t                    if (message.length === 0) {\n\t                        return;\n\t                    }\n\t                    client.addBreadcrumb(message, {\n\t                        category: 'ui.click',\n\t                        metadata: {\n\t                            selector: selector,\n\t                            text: text,\n\t                            event: event\n\t                        }\n\t                    });\n\t                }, _window.location ? true : false); // In CloudFlare workers useCapture must be false. window.location is a hacky way to detect it.\n\t            })();\n\t            // Breadcrumbs: instrument XMLHttpRequest\n\t            (function () {\n\t                if (!breadcrumbsEnabled('network')) {\n\t                    return;\n\t                }\n\t                // Some environments may not support XMLHttpRequest.\n\t                if (typeof XMLHttpRequest === 'undefined') {\n\t                    return;\n\t                }\n\t                // -- On xhr.open: capture initial metadata\n\t                instrument$2(XMLHttpRequest.prototype, 'open', function (original) {\n\t                    return function () {\n\t                        // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t                        var xhr = this;\n\t                        var rawUrl = arguments[1];\n\t                        // in case of url being URL object (which is valid input) we need to stringify it\n\t                        var url = typeof rawUrl === 'string' ? rawUrl : String(rawUrl);\n\t                        var method = typeof arguments[0] === 'string' ? arguments[0].toUpperCase() : arguments[0];\n\t                        var message = \"\".concat(method, \" \").concat((0, util_1.localURLPathname)(url));\n\t                        this.__hb_xhr = {\n\t                            type: 'xhr',\n\t                            method: method,\n\t                            url: url,\n\t                            message: message\n\t                        };\n\t                        if (typeof original === 'function') {\n\t                            original.apply(xhr, arguments);\n\t                        }\n\t                    };\n\t                });\n\t                // -- On xhr.send: set up xhr.onreadystatechange to report breadcrumb\n\t                instrument$2(XMLHttpRequest.prototype, 'send', function (original) {\n\t                    return function () {\n\t                        // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t                        var xhr = this;\n\t                        function onreadystatechangeHandler() {\n\t                            if (xhr.readyState === 4) {\n\t                                var message = void 0;\n\t                                if (xhr.__hb_xhr) {\n\t                                    xhr.__hb_xhr.status_code = xhr.status;\n\t                                    message = xhr.__hb_xhr.message;\n\t                                    delete xhr.__hb_xhr.message;\n\t                                }\n\t                                client.addBreadcrumb(message || 'XMLHttpRequest', {\n\t                                    category: 'request',\n\t                                    metadata: xhr.__hb_xhr\n\t                                });\n\t                            }\n\t                        }\n\t                        if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n\t                            instrument$2(xhr, 'onreadystatechange', function (original) {\n\t                                return function () {\n\t                                    onreadystatechangeHandler();\n\t                                    if (typeof original === 'function') {\n\t                                        // eslint-disable-next-line prefer-rest-params\n\t                                        original.apply(this, arguments);\n\t                                    }\n\t                                };\n\t                            });\n\t                        }\n\t                        else {\n\t                            xhr.onreadystatechange = onreadystatechangeHandler;\n\t                        }\n\t                        if (typeof original === 'function') {\n\t                            // eslint-disable-next-line prefer-rest-params\n\t                            original.apply(xhr, arguments);\n\t                        }\n\t                    };\n\t                });\n\t            })();\n\t            // Breadcrumbs: instrument fetch\n\t            (function () {\n\t                if (!breadcrumbsEnabled('network')) {\n\t                    return;\n\t                }\n\t                if (!(0, util_1.nativeFetch)()) {\n\t                    // Polyfills use XHR.\n\t                    return;\n\t                }\n\t                instrument$2(_window, 'fetch', function (original) {\n\t                    return function () {\n\t                        // eslint-disable-next-line prefer-rest-params\n\t                        var input = arguments[0];\n\t                        var method = 'GET';\n\t                        var url;\n\t                        if (typeof input === 'string') {\n\t                            url = input;\n\t                        }\n\t                        else if ('Request' in _window && input instanceof Request) {\n\t                            url = input.url;\n\t                            if (input.method) {\n\t                                method = input.method;\n\t                            }\n\t                        }\n\t                        else {\n\t                            url = String(input);\n\t                        }\n\t                        if (arguments[1] && arguments[1].method) {\n\t                            method = arguments[1].method;\n\t                        }\n\t                        if (typeof method === 'string') {\n\t                            method = method.toUpperCase();\n\t                        }\n\t                        // localURLPathname cant be constructed for CF workers due to reliance on \"document\".\n\t                        var message = \"\".concat(method, \" \").concat(typeof document === 'undefined' ? url : (0, util_1.localURLPathname)(url));\n\t                        var metadata = {\n\t                            type: 'fetch',\n\t                            method: method,\n\t                            url: url\n\t                        };\n\t                        return original\n\t                            .apply(this, arguments)\n\t                            .then(function (response) {\n\t                            metadata['status_code'] = response.status;\n\t                            client.addBreadcrumb(message, {\n\t                                category: 'request',\n\t                                metadata: metadata\n\t                            });\n\t                            return response;\n\t                        })\n\t                            .catch(function (error) {\n\t                            client.addBreadcrumb('fetch error', {\n\t                                category: 'error',\n\t                                metadata: metadata\n\t                            });\n\t                            throw error;\n\t                        });\n\t                    };\n\t                });\n\t            })();\n\t            // Breadcrumbs: instrument navigation\n\t            (function () {\n\t                if (!breadcrumbsEnabled('navigation')) {\n\t                    return;\n\t                }\n\t                if (_window.location == null) {\n\t                    // Most likely in a CF worker, we should be listening to fetch requests instead.\n\t                    return;\n\t                }\n\t                // The last known href of the current page\n\t                var lastHref = _window.location.href;\n\t                function recordUrlChange(from, to) {\n\t                    lastHref = to;\n\t                    client.addBreadcrumb('Page changed', {\n\t                        category: 'navigation',\n\t                        metadata: {\n\t                            from: from,\n\t                            to: to\n\t                        }\n\t                    });\n\t                }\n\t                if (typeof addEventListener === 'function') {\n\t                    addEventListener('popstate', function (_event) {\n\t                        recordUrlChange(lastHref, _window.location.href);\n\t                    });\n\t                }\n\t                if (typeof _window.history === 'undefined') {\n\t                    return;\n\t                }\n\t                // https://developer.mozilla.org/en-US/docs/Web/API/History/pushState\n\t                // https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n\t                function historyWrapper(original) {\n\t                    return function () {\n\t                        var url = arguments.length > 2 ? arguments[2] : undefined;\n\t                        if (url) {\n\t                            recordUrlChange(lastHref, String(url));\n\t                        }\n\t                        return original.apply(this, arguments);\n\t                    };\n\t                }\n\t                instrument$2(_window.history, 'pushState', historyWrapper);\n\t                instrument$2(_window.history, 'replaceState', historyWrapper);\n\t            })();\n\t        }\n\t    };\n\t}\n\tbreadcrumbs.default = default_1$2;\n\n\tvar timers = {};\n\n\tObject.defineProperty(timers, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$3 = src;\n\tvar instrument$1 = core_1$3.Util.instrument, globalThisOrWindow$3 = core_1$3.Util.globalThisOrWindow;\n\tfunction default_1$1(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$3(); }\n\t    return {\n\t        load: function (client) {\n\t            // Wrap timers\n\t            (function () {\n\t                function instrumentTimer(wrapOpts) {\n\t                    return function (original) {\n\t                        // See https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout\n\t                        return function (func, delay) {\n\t                            if (typeof func === 'function') {\n\t                                var args_1 = Array.prototype.slice.call(arguments, 2);\n\t                                func = client.__wrap(func, wrapOpts);\n\t                                return original(function () {\n\t                                    func.apply(void 0, args_1);\n\t                                }, delay);\n\t                            }\n\t                            else {\n\t                                return original(func, delay);\n\t                            }\n\t                        };\n\t                    };\n\t                }\n\t                instrument$1(_window, 'setTimeout', instrumentTimer({ component: 'setTimeout' }));\n\t                instrument$1(_window, 'setInterval', instrumentTimer({ component: 'setInterval' }));\n\t            })();\n\t        }\n\t    };\n\t}\n\ttimers.default = default_1$1;\n\n\tvar event_listeners = {};\n\n\tObject.defineProperty(event_listeners, \"__esModule\", { value: true });\n\tvar core_1$2 = src;\n\tvar instrument = core_1$2.Util.instrument, globalThisOrWindow$2 = core_1$2.Util.globalThisOrWindow;\n\tfunction default_1(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$2(); }\n\t    return {\n\t        load: function (client) {\n\t            // Wrap event listeners\n\t            // Event targets borrowed from bugsnag-js:\n\t            // See https://github.com/bugsnag/bugsnag-js/blob/d55af916a4d3c7757f979d887f9533fe1a04cc93/src/bugsnag.js#L542\n\t            var targets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n\t            targets.forEach(function (prop) {\n\t                var prototype = _window[prop] && _window[prop].prototype;\n\t                if (prototype && Object.prototype.hasOwnProperty.call(prototype, 'addEventListener')) {\n\t                    instrument(prototype, 'addEventListener', function (original) {\n\t                        var wrapOpts = { component: \"\".concat(prop, \".prototype.addEventListener\") };\n\t                        // See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n\t                        return function (type, listener, useCapture, wantsUntrusted) {\n\t                            try {\n\t                                if (listener && listener.handleEvent != null) {\n\t                                    listener.handleEvent = client.__wrap(listener.handleEvent, wrapOpts);\n\t                                }\n\t                            }\n\t                            catch (e) {\n\t                                // Ignore 'Permission denied to access property \"handleEvent\"' errors.\n\t                                client.logger.error(e);\n\t                            }\n\t                            return original.call(this, type, client.__wrap(listener, wrapOpts), useCapture, wantsUntrusted);\n\t                        };\n\t                    });\n\t                    instrument(prototype, 'removeEventListener', function (original) {\n\t                        return function (type, listener, useCapture, wantsUntrusted) {\n\t                            original.call(this, type, listener, useCapture, wantsUntrusted);\n\t                            return original.call(this, type, client.__wrap(listener), useCapture, wantsUntrusted);\n\t                        };\n\t                    });\n\t                }\n\t            });\n\t        }\n\t    };\n\t}\n\tevent_listeners.default = default_1;\n\n\tvar transport = {};\n\n\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t    });\n\t};\n\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t    function step(op) {\n\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t        while (_) try {\n\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t            switch (op[0]) {\n\t                case 0: case 1: t = op; break;\n\t                case 4: _.label++; return { value: op[1], done: false };\n\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t                default:\n\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t                    if (t[2]) _.ops.pop();\n\t                    _.trys.pop(); continue;\n\t            }\n\t            op = body.call(thisArg, _);\n\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t    }\n\t};\n\tObject.defineProperty(transport, \"__esModule\", { value: true });\n\ttransport.BrowserTransport = void 0;\n\tvar core_1$1 = src;\n\tvar sanitize = core_1$1.Util.sanitize, globalThisOrWindow$1 = core_1$1.Util.globalThisOrWindow;\n\t/**\n\t * Helper function to get typesafe Object.entries()\n\t * https://twitter.com/mattpocockuk/status/1502264005251018754?lang=en\n\t */\n\tfunction objectEntries(obj) {\n\t    return Object.entries(obj);\n\t}\n\tvar BrowserTransport = /** @class */ (function () {\n\t    function BrowserTransport(headers) {\n\t        if (headers === void 0) { headers = {}; }\n\t        this.headers = {};\n\t        this.headers = headers;\n\t    }\n\t    BrowserTransport.prototype.defaultHeaders = function () {\n\t        return this.headers;\n\t    };\n\t    BrowserTransport.prototype.send = function (options, payload) {\n\t        return __awaiter(this, void 0, void 0, function () {\n\t            var headerArray, headers, requestInit, response, body;\n\t            return __generator(this, function (_a) {\n\t                switch (_a.label) {\n\t                    case 0:\n\t                        headerArray = options.headers ? objectEntries(options.headers) : [];\n\t                        headers = this.defaultHeaders();\n\t                        headerArray.forEach(function (_a) {\n\t                            var key = _a[0], value = _a[1];\n\t                            if (key != null && value != null) {\n\t                                headers[String(key)] = String(value);\n\t                            }\n\t                        });\n\t                        requestInit = {\n\t                            method: options.method,\n\t                            headers: headers\n\t                        };\n\t                        // GET methods cannot have a body.\n\t                        if (options.method === 'POST' && payload) {\n\t                            requestInit.body = typeof payload === 'string' ? payload : JSON.stringify(sanitize(payload, options.maxObjectDepth));\n\t                        }\n\t                        return [4 /*yield*/, globalThisOrWindow$1().fetch(options.endpoint, requestInit)];\n\t                    case 1:\n\t                        response = _a.sent();\n\t                        return [4 /*yield*/, response.text()];\n\t                    case 2:\n\t                        body = _a.sent();\n\t                        return [2 /*return*/, Promise.resolve({ statusCode: response.status, body: body })];\n\t                }\n\t            });\n\t        });\n\t    };\n\t    return BrowserTransport;\n\t}());\n\ttransport.BrowserTransport = BrowserTransport;\n\n\tvar feedbackForm = {};\n\n\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t    __assign = Object.assign || function(t) {\n\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t            s = arguments[i];\n\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t                t[p] = s[p];\n\t        }\n\t        return t;\n\t    };\n\t    return __assign.apply(this, arguments);\n\t};\n\tObject.defineProperty(feedbackForm, \"__esModule\", { value: true });\n\tfeedbackForm.BrowserFeedbackForm = void 0;\n\tvar core_1 = src;\n\tvar globalThisOrWindow = core_1.Util.globalThisOrWindow;\n\tvar BrowserFeedbackForm = /** @class */ (function () {\n\t    function BrowserFeedbackForm(config, logger, scriptUrl) {\n\t        this.config = config;\n\t        this.logger = logger;\n\t        this.scriptUrl = scriptUrl;\n\t    }\n\t    /* ROLLUP_STRIP_CODE_CHROME_EXTENSION_START */\n\t    BrowserFeedbackForm.prototype.appendUserFeedbackTag = function (window, options) {\n\t        if (options === void 0) { options = {}; }\n\t        var script = window.document.createElement('script');\n\t        script.setAttribute('src', this.scriptUrl);\n\t        script.setAttribute('async', 'true');\n\t        if (options.onLoad) {\n\t            script.onload = options.onLoad;\n\t        }\n\t        (commonjsGlobal.document.head || commonjsGlobal.document.body).appendChild(script);\n\t    };\n\t    BrowserFeedbackForm.prototype.isUserFeedbackUrlAlreadyVisible = function () {\n\t        var global = globalThisOrWindow();\n\t        var feedbackScriptUrl = this.scriptUrl;\n\t        for (var i = 0; i < global.document.scripts.length; i++) {\n\t            var script = global.document.scripts[i];\n\t            if (script.src === feedbackScriptUrl) {\n\t                return true;\n\t            }\n\t        }\n\t        return false;\n\t    };\n\t    /* ROLLUP_STRIP_CODE_CHROME_EXTENSION_END */\n\t    BrowserFeedbackForm.prototype.show = function (lastNoticeId, options) {\n\t        if (options === void 0) { options = {}; }\n\t        if (typeof (this.appendUserFeedbackTag) !== 'function') {\n\t            this.logger.debug('Feedback form is not available in this environment');\n\t            return;\n\t        }\n\t        if (!this.config || !this.config.apiKey) {\n\t            this.logger.debug('Client not initialized');\n\t            return;\n\t        }\n\t        if (!lastNoticeId) {\n\t            this.logger.debug(\"Can't show user feedback form without a notice already reported\");\n\t            return;\n\t        }\n\t        var global = globalThisOrWindow();\n\t        if (typeof global.document === 'undefined') {\n\t            this.logger.debug('global.document is undefined. Cannot attach script');\n\t            return;\n\t        }\n\t        if (this.isUserFeedbackUrlAlreadyVisible()) {\n\t            this.logger.debug('User feedback form is already visible');\n\t            return;\n\t        }\n\t        global['honeybadgerUserFeedbackOptions'] = __assign(__assign({}, options), { apiKey: this.config.apiKey, endpoint: this.config.userFeedbackEndpoint, noticeId: lastNoticeId });\n\t        this.appendUserFeedbackTag(global, options);\n\t    };\n\t    return BrowserFeedbackForm;\n\t}());\n\tfeedbackForm.BrowserFeedbackForm = BrowserFeedbackForm;\n\n\t(function (exports) {\n\t\tvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n\t\t    var extendStatics = function (d, b) {\n\t\t        extendStatics = Object.setPrototypeOf ||\n\t\t            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t\t            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n\t\t        return extendStatics(d, b);\n\t\t    };\n\t\t    return function (d, b) {\n\t\t        if (typeof b !== \"function\" && b !== null)\n\t\t            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\t\t        extendStatics(d, b);\n\t\t        function __() { this.constructor = d; }\n\t\t        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t    };\n\t\t})();\n\t\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t\t    __assign = Object.assign || function(t) {\n\t\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t\t            s = arguments[i];\n\t\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t\t                t[p] = s[p];\n\t\t        }\n\t\t        return t;\n\t\t    };\n\t\t    return __assign.apply(this, arguments);\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t    });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t    function step(op) {\n\t\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t        while (_) try {\n\t\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t            switch (op[0]) {\n\t\t                case 0: case 1: t = op; break;\n\t\t                case 4: _.label++; return { value: op[1], done: false };\n\t\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t                default:\n\t\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t                    if (t[2]) _.ops.pop();\n\t\t                    _.trys.pop(); continue;\n\t\t            }\n\t\t            op = body.call(thisArg, _);\n\t\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t    }\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.Types = exports.getUserFeedbackScriptUrl = void 0;\n\t\tvar core_1 = src;\n\t\tvar util_1 = util;\n\t\tvar onerror_1 = onerror;\n\t\tvar onunhandledrejection_1 = __importDefault(onunhandledrejection);\n\t\tvar breadcrumbs_1 = __importDefault(breadcrumbs);\n\t\tvar timers_1 = __importDefault(timers);\n\t\tvar event_listeners_1 = __importDefault(event_listeners);\n\t\tvar transport_1 = transport;\n\t\tvar feedback_form_1 = feedbackForm;\n\t\tvar merge = core_1.Util.merge, filter = core_1.Util.filter, objectIsExtensible = core_1.Util.objectIsExtensible, globalThisOrWindow = core_1.Util.globalThisOrWindow;\n\t\tvar getProjectRoot = function () {\n\t\t    var global = globalThisOrWindow();\n\t\t    var projectRoot = '';\n\t\t    // Cloudflare workers do not have access to location API.\n\t\t    if (global.location != null) {\n\t\t        projectRoot = global.location.protocol + '//' + global.location.host;\n\t\t    }\n\t\t    return projectRoot;\n\t\t};\n\t\tvar getUserFeedbackScriptUrl = function (version) {\n\t\t    var majorMinorVersion = version.split('.').slice(0, 2).join('.');\n\t\t    return \"https://js.honeybadger.io/v\".concat(majorMinorVersion, \"/honeybadger-feedback-form.js\");\n\t\t};\n\t\texports.getUserFeedbackScriptUrl = getUserFeedbackScriptUrl;\n\t\tvar Honeybadger = /** @class */ (function (_super) {\n\t\t    __extends(Honeybadger, _super);\n\t\t    function Honeybadger(opts) {\n\t\t        if (opts === void 0) { opts = {}; }\n\t\t        var _this = _super.call(this, __assign({ userFeedbackEndpoint: 'https://api.honeybadger.io/v2/feedback', async: true, maxErrors: null, projectRoot: getProjectRoot() }, opts), new transport_1.BrowserTransport({\n\t\t            'User-Agent': userAgent(),\n\t\t        })) || this;\n\t\t        /** @internal */\n\t\t        _this.__errorsSent = 0;\n\t\t        /** @internal */\n\t\t        _this.__lastWrapErr = undefined;\n\t\t        /** @internal */\n\t\t        _this.__lastNoticeId = undefined;\n\t\t        /** @internal */\n\t\t        _this.__beforeNotifyHandlers = [\n\t\t            function (notice) {\n\t\t                if (_this.__exceedsMaxErrors()) {\n\t\t                    _this.logger.debug('Dropping notice: max errors exceeded', notice);\n\t\t                    return false;\n\t\t                }\n\t\t                if (notice && !notice.url && typeof document !== 'undefined') {\n\t\t                    notice.url = document.URL;\n\t\t                }\n\t\t                _this.__incrementErrorsCount();\n\t\t                return true;\n\t\t            }\n\t\t        ];\n\t\t        _this.__afterNotifyHandlers = [\n\t\t            function (_error, notice) {\n\t\t                if (notice) {\n\t\t                    _this.__lastNoticeId = notice.id;\n\t\t                }\n\t\t            }\n\t\t        ];\n\t\t        return _this;\n\t\t    }\n\t\t    Honeybadger.prototype.configure = function (opts) {\n\t\t        if (opts === void 0) { opts = {}; }\n\t\t        return _super.prototype.configure.call(this, opts);\n\t\t    };\n\t\t    Honeybadger.prototype.resetMaxErrors = function () {\n\t\t        return (this.__errorsSent = 0);\n\t\t    };\n\t\t    Honeybadger.prototype.factory = function (opts) {\n\t\t        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t        var clone = new Honeybadger(opts);\n\t\t        clone.setNotifier(this.getNotifier());\n\t\t        return clone;\n\t\t    };\n\t\t    Honeybadger.prototype.checkIn = function (_id) {\n\t\t        throw new Error('Honeybadger.checkIn() is not supported on the browser');\n\t\t    };\n\t\t    Honeybadger.prototype.showUserFeedbackForm = function (options) {\n\t\t        if (options === void 0) { options = {}; }\n\t\t        return __awaiter(this, void 0, void 0, function () {\n\t\t            var form;\n\t\t            return __generator(this, function (_a) {\n\t\t                form = new feedback_form_1.BrowserFeedbackForm(this.config, this.logger, this.getUserFeedbackSubmitUrl());\n\t\t                form.show(this.__lastNoticeId, options);\n\t\t                return [2 /*return*/];\n\t\t            });\n\t\t        });\n\t\t    };\n\t\t    Honeybadger.prototype.getUserFeedbackSubmitUrl = function () {\n\t\t        return (0, exports.getUserFeedbackScriptUrl)(this.getVersion());\n\t\t    };\n\t\t    /** @internal */\n\t\t    Honeybadger.prototype.__buildPayload = function (notice) {\n\t\t        var cgiData = {\n\t\t            HTTP_USER_AGENT: undefined,\n\t\t            HTTP_REFERER: undefined,\n\t\t            HTTP_COOKIE: undefined\n\t\t        };\n\t\t        if (typeof navigator !== 'undefined' && navigator.userAgent) {\n\t\t            cgiData.HTTP_USER_AGENT = navigator.userAgent;\n\t\t        }\n\t\t        if (typeof document !== 'undefined' && document.referrer.match(/\\S/)) {\n\t\t            cgiData.HTTP_REFERER = document.referrer;\n\t\t        }\n\t\t        var cookiesObject;\n\t\t        if (typeof notice.cookies === 'string') {\n\t\t            cookiesObject = (0, util_1.decodeCookie)(notice.cookies);\n\t\t        }\n\t\t        else {\n\t\t            cookiesObject = notice.cookies;\n\t\t        }\n\t\t        if (cookiesObject) {\n\t\t            cgiData.HTTP_COOKIE = (0, util_1.encodeCookie)(filter(cookiesObject, this.config.filters));\n\t\t        }\n\t\t        var payload = _super.prototype.__buildPayload.call(this, notice);\n\t\t        payload.request.cgi_data = merge(cgiData, payload.request.cgi_data);\n\t\t        return payload;\n\t\t    };\n\t\t    /**\n\t\t     * wrap always returns the same function so that callbacks can be removed via\n\t\t     * removeEventListener.\n\t\t     * @internal\n\t\t     */\n\t\t    Honeybadger.prototype.__wrap = function (f, opts) {\n\t\t        if (opts === void 0) { opts = {}; }\n\t\t        var func = f;\n\t\t        if (!opts) {\n\t\t            opts = {};\n\t\t        }\n\t\t        try {\n\t\t            if (typeof func !== 'function') {\n\t\t                return func;\n\t\t            }\n\t\t            if (!objectIsExtensible(func)) {\n\t\t                return func;\n\t\t            }\n\t\t            if (!func.___hb) {\n\t\t                // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\t                var client_1 = this;\n\t\t                func.___hb = function () {\n\t\t                    if (util_1.preferCatch) {\n\t\t                        try {\n\t\t                            // eslint-disable-next-line prefer-rest-params\n\t\t                            return func.apply(this, arguments);\n\t\t                        }\n\t\t                        catch (err) {\n\t\t                            if (client_1.__lastWrapErr === err) {\n\t\t                                throw (err);\n\t\t                            }\n\t\t                            client_1.__lastWrapErr = err;\n\t\t                            (0, onerror_1.ignoreNextOnError)();\n\t\t                            client_1.addBreadcrumb(opts.component ? \"\".concat(opts.component, \": \").concat(err.name) : err.name, {\n\t\t                                category: 'error',\n\t\t                                metadata: {\n\t\t                                    message: err.message,\n\t\t                                    name: err.name,\n\t\t                                    stack: err.stack\n\t\t                                }\n\t\t                            });\n\t\t                            if (client_1.config.enableUncaught) {\n\t\t                                client_1.notify(err);\n\t\t                            }\n\t\t                            throw (err);\n\t\t                        }\n\t\t                    }\n\t\t                    else {\n\t\t                        // eslint-disable-next-line prefer-rest-params\n\t\t                        return func.apply(this, arguments);\n\t\t                    }\n\t\t                };\n\t\t            }\n\t\t            func.___hb.___hb = func.___hb;\n\t\t            return func.___hb;\n\t\t        }\n\t\t        catch (_e) {\n\t\t            return func;\n\t\t        }\n\t\t    };\n\t\t    /** @internal */\n\t\t    Honeybadger.prototype.__incrementErrorsCount = function () {\n\t\t        return this.__errorsSent++;\n\t\t    };\n\t\t    /** @internal */\n\t\t    Honeybadger.prototype.__exceedsMaxErrors = function () {\n\t\t        return this.config.maxErrors && this.__errorsSent >= this.config.maxErrors;\n\t\t    };\n\t\t    return Honeybadger;\n\t\t}(core_1.Client));\n\t\tvar NOTIFIER = {\n\t\t    name: '@honeybadger-io/js',\n\t\t    url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/js',\n\t\t    version: '6.12.3'\n\t\t};\n\t\tvar userAgent = function () {\n\t\t    if (typeof navigator !== 'undefined') {\n\t\t        return \"Honeybadger JS Browser Client \".concat(NOTIFIER.version, \"; \").concat(navigator.userAgent);\n\t\t    }\n\t\t    return \"Honeybadger JS Browser Client \".concat(NOTIFIER.version, \"; n/a; n/a\");\n\t\t};\n\t\tvar singleton = new Honeybadger({\n\t\t    __plugins: [\n\t\t        (0, onerror_1.onError)(),\n\t\t        (0, onunhandledrejection_1.default)(),\n\t\t        (0, timers_1.default)(),\n\t\t        (0, event_listeners_1.default)(),\n\t\t        (0, breadcrumbs_1.default)(),\n\t\t        core_1.Plugins.events(),\n\t\t    ]\n\t\t});\n\t\tsingleton.setNotifier(NOTIFIER);\n\t\tvar core_2 = src;\n\t\tObject.defineProperty(exports, \"Types\", { enumerable: true, get: function () { return core_2.Types; } });\n\t\texports.default = singleton;\n\t\t\n\t} (browser$1));\n\n\tvar browser = /*@__PURE__*/getDefaultExportFromCjs(browser$1);\n\n\treturn browser;\n\n}));\n//# sourceMappingURL=honeybadger.js.map\n","import Honeybadger from '@honeybadger-io/js';\nexport { default as Honeybadger } from '@honeybadger-io/js';\nimport React, { Component } from 'react';\n\nfunction DefaultErrorComponent({ error, info }) {\n    return (React.createElement(\"div\", { className: 'error' },\n        React.createElement(\"div\", null, \"An Error Occurred\"),\n        React.createElement(\"div\", null, error ? error.toString() : ''),\n        React.createElement(\"div\", null, info ? JSON.stringify(info, null, 2) : '')));\n}\n\nclass HoneybadgerErrorBoundary extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            error: null,\n            info: null,\n            errorOccurred: false\n        };\n    }\n    static getDerivedStateFromError(error) {\n        return { error: error, errorOccurred: true, info: null };\n    }\n    componentDidMount() {\n        this.props.honeybadger.afterNotify((error, _notice) => {\n            if (!error && this.props.showUserFeedbackFormOnError) {\n                this.props.honeybadger.showUserFeedbackForm();\n            }\n        });\n    }\n    componentDidCatch(error, errorInfo) {\n        this.setState({ error, info: errorInfo });\n        this.props.honeybadger.notify(error, { context: errorInfo });\n    }\n    getErrorComponent() {\n        return this.props.ErrorComponent\n            ? React.createElement(this.props.ErrorComponent, { ...this.state })\n            : React.createElement(DefaultErrorComponent, { ...this.state });\n    }\n    render() {\n        return (React.createElement(React.Fragment, null, this.state.errorOccurred\n            ? this.getErrorComponent()\n            : this.props.children));\n    }\n}\nHoneybadgerErrorBoundary.defaultProps = {\n    showUserFeedbackFormOnError: false\n};\n\nconst NOTIFIER = {\n    name: '@honeybadger-io/react',\n    url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/react',\n    version: '6.1.27'\n};\nHoneybadger.setNotifier(NOTIFIER);\n\nexport { HoneybadgerErrorBoundary };\n//# sourceMappingURL=honeybadger-react.esm.js.map\n","/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.1';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '')         // strip out any cruft\n\t\t\t\t.replace(decimal, '.')      // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","// I18n.js\n// =======\n//\n// This small library provides the Rails I18n API on the Javascript.\n// You don't actually have to use Rails (or even Ruby) to use I18n.js.\n// Just make sure you export all translations in an object like this:\n//\n//     I18n.translations.en = {\n//       hello: \"Hello World\"\n//     };\n//\n// See tests for specific formatting like numbers and dates.\n//\n\n// Using UMD pattern from\n// https://github.com/umdjs/umd#regular-module\n// `returnExports.js` version\n;(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(\"i18n\", function(){ return factory(root);});\n  } else if (typeof module === 'object' && module.exports) {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory(root);\n  } else {\n    // Browser globals (root is window)\n    root.I18n = factory(root);\n  }\n}(this, function(global) {\n  \"use strict\";\n\n  // Use previously defined object if exists in current scope\n  var I18n = global && global.I18n || {};\n\n  // Just cache the Array#slice function.\n  var slice = Array.prototype.slice;\n\n  // Apply number padding.\n  var padding = function(number) {\n    return (\"0\" + number.toString()).substr(-2);\n  };\n\n  // Improved toFixed number rounding function with support for unprecise floating points\n  // JavaScript's standard toFixed function does not round certain numbers correctly (for example 0.105 with precision 2).\n  var toFixed = function(number, precision) {\n    return decimalAdjust('round', number, -precision).toFixed(precision);\n  };\n\n  // Is a given variable an object?\n  // Borrowed from Underscore.js\n  var isObject = function(obj) {\n    var type = typeof obj;\n    return type === 'function' || type === 'object'\n  };\n\n  var isFunction = function(func) {\n    var type = typeof func;\n    return type === 'function'\n  };\n\n  // Check if value is different than undefined and null;\n  var isSet = function(value) {\n    return typeof(value) !== 'undefined' && value !== null;\n  };\n\n  // Is a given value an array?\n  // Borrowed from Underscore.js\n  var isArray = function(val) {\n    if (Array.isArray) {\n      return Array.isArray(val);\n    }\n    return Object.prototype.toString.call(val) === '[object Array]';\n  };\n\n  var isString = function(val) {\n    return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n  };\n\n  var isNumber = function(val) {\n    return typeof val === 'number' || Object.prototype.toString.call(val) === '[object Number]';\n  };\n\n  var isBoolean = function(val) {\n    return val === true || val === false;\n  };\n\n  var isNull = function(val) {\n    return val === null;\n  };\n\n  var decimalAdjust = function(type, value, exp) {\n    // If the exp is undefined or zero...\n    if (typeof exp === 'undefined' || +exp === 0) {\n      return Math[type](value);\n    }\n    value = +value;\n    exp = +exp;\n    // If the value is not a number or the exp is not an integer...\n    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n      return NaN;\n    }\n    // Shift\n    value = value.toString().split('e');\n    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));\n    // Shift back\n    value = value.toString().split('e');\n    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));\n  };\n\n  var lazyEvaluate = function(message, scope) {\n    if (isFunction(message)) {\n      return message(scope);\n    } else {\n      return message;\n    }\n  };\n\n  var merge = function (dest, obj) {\n    var key, value;\n    for (key in obj) if (obj.hasOwnProperty(key)) {\n      value = obj[key];\n      if (isString(value) || isNumber(value) || isBoolean(value) || isArray(value) || isNull(value)) {\n        dest[key] = value;\n      } else {\n        if (dest[key] == null) dest[key] = {};\n        merge(dest[key], value);\n      }\n    }\n    return dest;\n  };\n\n  // Set default days/months translations.\n  var DATE = {\n      day_names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n    , abbr_day_names: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n    , month_names: [null, \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n    , abbr_month_names: [null, \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n    , meridian: [\"AM\", \"PM\"]\n  };\n\n  // Set default number format.\n  var NUMBER_FORMAT = {\n      precision: 3\n    , separator: \".\"\n    , delimiter: \",\"\n    , strip_insignificant_zeros: false\n  };\n\n  // Set default currency format.\n  var CURRENCY_FORMAT = {\n      unit: \"$\"\n    , precision: 2\n    , format: \"%u%n\"\n    , sign_first: true\n    , delimiter: \",\"\n    , separator: \".\"\n  };\n\n  // Set default percentage format.\n  var PERCENTAGE_FORMAT = {\n      unit: \"%\"\n    , precision: 3\n    , format: \"%n%u\"\n    , separator: \".\"\n    , delimiter: \"\"\n  };\n\n  // Set default size units.\n  var SIZE_UNITS = [null, \"kb\", \"mb\", \"gb\", \"tb\"];\n\n  // Other default options\n  var DEFAULT_OPTIONS = {\n    // Set default locale. This locale will be used when fallback is enabled and\n    // the translation doesn't exist in a particular locale.\n      defaultLocale: \"en\"\n    // Set the current locale to `en`.\n    , locale: \"en\"\n    // Set the translation key separator.\n    , defaultSeparator: \".\"\n    // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n    , placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm\n    // Set if engine should fallback to the default locale when a translation\n    // is missing.\n    , fallbacks: false\n    // Set the default translation object.\n    , translations: {}\n    // Set missing translation behavior. 'message' will display a message\n    // that the translation is missing, 'guess' will try to guess the string\n    , missingBehaviour: 'message'\n    // if you use missingBehaviour with 'message', but want to know that the\n    // string is actually missing for testing purposes, you can prefix the\n    // guessed string by setting the value here. By default, no prefix!\n    , missingTranslationPrefix: ''\n  };\n\n  // Set default locale. This locale will be used when fallback is enabled and\n  // the translation doesn't exist in a particular locale.\n  I18n.reset = function() {\n    var key;\n    for (key in DEFAULT_OPTIONS) {\n      this[key] = DEFAULT_OPTIONS[key];\n    }\n  };\n\n  // Much like `reset`, but only assign options if not already assigned\n  I18n.initializeOptions = function() {\n    var key;\n    for (key in DEFAULT_OPTIONS) if (!isSet(this[key])) {\n      this[key] = DEFAULT_OPTIONS[key];\n    }\n  };\n  I18n.initializeOptions();\n\n  // Return a list of all locales that must be tried before returning the\n  // missing translation message. By default, this will consider the inline option,\n  // current locale and fallback locale.\n  //\n  //     I18n.locales.get(\"de-DE\");\n  //     // [\"de-DE\", \"de\", \"en\"]\n  //\n  // You can define custom rules for any locale. Just make sure you return a array\n  // containing all locales.\n  //\n  //     // Default the Wookie locale to English.\n  //     I18n.locales[\"wk\"] = function(locale) {\n  //       return [\"en\"];\n  //     };\n  //\n  I18n.locales = {};\n\n  // Retrieve locales based on inline locale, current locale or default to\n  // I18n's detection.\n  I18n.locales.get = function(locale) {\n    var result = this[locale] || this[I18n.locale] || this[\"default\"];\n\n    if (isFunction(result)) {\n      result = result(locale);\n    }\n\n    if (isArray(result) === false) {\n      result = [result];\n    }\n\n    return result;\n  };\n\n  // The default locale list.\n  I18n.locales[\"default\"] = function(locale) {\n    var locales = []\n      , list = []\n    ;\n\n    // Handle the inline locale option that can be provided to\n    // the `I18n.t` options.\n    if (locale) {\n      locales.push(locale);\n    }\n\n    // Add the current locale to the list.\n    if (!locale && I18n.locale) {\n      locales.push(I18n.locale);\n    }\n\n    // Add the default locale if fallback strategy is enabled.\n    if (I18n.fallbacks && I18n.defaultLocale) {\n      locales.push(I18n.defaultLocale);\n    }\n\n    // Locale code format 1:\n    // According to RFC4646 (https://www.ietf.org/rfc/rfc4646.txt)\n    // language codes for Traditional Chinese should be `zh-Hant`\n    //\n    // But due to backward compatibility\n    // We use older version of IETF language tag\n    // @see https://www.w3.org/TR/html401/struct/dirlang.html\n    // @see https://en.wikipedia.org/wiki/IETF_language_tag\n    //\n    // Format: `language-code = primary-code ( \"-\" subcode )*`\n    //\n    // primary-code uses ISO639-1\n    // @see https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n    // @see https://www.iso.org/iso/home/standards/language_codes.htm\n    //\n    // subcode uses ISO 3166-1 alpha-2\n    // @see https://en.wikipedia.org/wiki/ISO_3166\n    // @see https://www.iso.org/iso/country_codes.htm\n    //\n    // @note\n    //   subcode can be in upper case or lower case\n    //   defining it in upper case is a convention only\n\n\n    // Locale code format 2:\n    // Format: `code = primary-code ( \"-\" region-code )*`\n    // primary-code uses ISO 639-1\n    // script-code uses ISO 15924\n    // region-code uses ISO 3166-1 alpha-2\n    // Example: zh-Hant-TW, en-HK, zh-Hant-CN\n    //\n    // It is similar to RFC4646 (or actually the same),\n    // but seems to be limited to language, script, region\n\n    // Compute each locale with its country code.\n    // So this will return an array containing\n    // `de-DE` and `de`\n    // or\n    // `zh-hans-tw`, `zh-hans`, `zh`\n    // locales.\n    locales.forEach(function(locale) {\n      var localeParts = locale.split(\"-\");\n      var firstFallback = null;\n      var secondFallback = null;\n      if (localeParts.length === 3) {\n        firstFallback = [\n          localeParts[0],\n          localeParts[1]\n        ].join(\"-\");\n        secondFallback = localeParts[0];\n      }\n      else if (localeParts.length === 2) {\n        firstFallback = localeParts[0];\n      }\n\n      if (list.indexOf(locale) === -1) {\n        list.push(locale);\n      }\n\n      if (! I18n.fallbacks) {\n        return;\n      }\n\n      [\n        firstFallback,\n        secondFallback\n      ].forEach(function(nullableFallbackLocale) {\n        // We don't want null values\n        if (typeof nullableFallbackLocale === \"undefined\") { return; }\n        if (nullableFallbackLocale === null) { return; }\n        // We don't want duplicate values\n        //\n        // Comparing with `locale` first is faster than\n        // checking whether value's presence in the list\n        if (nullableFallbackLocale === locale) { return; }\n        if (list.indexOf(nullableFallbackLocale) !== -1) { return; }\n\n        list.push(nullableFallbackLocale);\n      });\n    });\n\n    // No locales set? English it is.\n    if (!locales.length) {\n      locales.push(\"en\");\n    }\n\n    return list;\n  };\n\n  // Hold pluralization rules.\n  I18n.pluralization = {};\n\n  // Return the pluralizer for a specific locale.\n  // If no specify locale is found, then I18n's default will be used.\n  I18n.pluralization.get = function(locale) {\n    return this[locale] || this[I18n.locale] || this[\"default\"];\n  };\n\n  // The default pluralizer rule.\n  // It detects the `zero`, `one`, and `other` scopes.\n  I18n.pluralization[\"default\"] = function(count) {\n    switch (count) {\n      case 0: return [\"zero\", \"other\"];\n      case 1: return [\"one\"];\n      default: return [\"other\"];\n    }\n  };\n\n  // Return current locale. If no locale has been set, then\n  // the current locale will be the default locale.\n  I18n.currentLocale = function() {\n    return this.locale || this.defaultLocale;\n  };\n\n  // Check if value is different than undefined and null;\n  I18n.isSet = isSet;\n\n  // Find and process the translation using the provided scope and options.\n  // This is used internally by some functions and should not be used as an\n  // public API.\n  I18n.lookup = function(scope, options) {\n    options = options || {};\n\n    var locales = this.locales.get(options.locale).slice()\n      , locale\n      , scopes\n      , fullScope\n      , translations\n    ;\n\n    fullScope = this.getFullScope(scope, options);\n\n    while (locales.length) {\n      locale = locales.shift();\n      scopes = fullScope.split(options.separator || this.defaultSeparator);\n      translations = this.translations[locale];\n\n      if (!translations) {\n        continue;\n      }\n      while (scopes.length) {\n        translations = translations[scopes.shift()];\n\n        if (translations === undefined || translations === null) {\n          break;\n        }\n      }\n\n      if (translations !== undefined && translations !== null) {\n        return translations;\n      }\n    }\n\n    if (isSet(options.defaultValue)) {\n      return lazyEvaluate(options.defaultValue, scope);\n    }\n  };\n\n  // lookup pluralization rule key into translations\n  I18n.pluralizationLookupWithoutFallback = function(count, locale, translations) {\n    var pluralizer = this.pluralization.get(locale)\n      , pluralizerKeys = pluralizer(count)\n      , pluralizerKey\n      , message;\n\n    if (translations && isObject(translations)) {\n      while (pluralizerKeys.length) {\n        pluralizerKey = pluralizerKeys.shift();\n        if (isSet(translations[pluralizerKey])) {\n          message = translations[pluralizerKey];\n          break;\n        }\n      }\n    }\n\n    return message;\n  };\n\n  // Lookup dedicated to pluralization\n  I18n.pluralizationLookup = function(count, scope, options) {\n    options = options || {};\n    var locales = this.locales.get(options.locale).slice()\n      , locale\n      , scopes\n      , translations\n      , message\n    ;\n    scope = this.getFullScope(scope, options);\n\n    while (locales.length) {\n      locale = locales.shift();\n      scopes = scope.split(options.separator || this.defaultSeparator);\n      translations = this.translations[locale];\n\n      if (!translations) {\n        continue;\n      }\n\n      while (scopes.length) {\n        translations = translations[scopes.shift()];\n        if (!isObject(translations)) {\n          break;\n        }\n        if (scopes.length === 0) {\n          message = this.pluralizationLookupWithoutFallback(count, locale, translations);\n        }\n      }\n      if (typeof message !== \"undefined\" && message !== null) {\n        break;\n      }\n    }\n\n    if (typeof message === \"undefined\" || message === null) {\n      if (isSet(options.defaultValue)) {\n        if (isObject(options.defaultValue)) {\n          message = this.pluralizationLookupWithoutFallback(count, options.locale, options.defaultValue);\n        } else {\n          message = options.defaultValue;\n        }\n        translations = options.defaultValue;\n      }\n    }\n\n    return { message: message, translations: translations };\n  };\n\n  // Rails changed the way the meridian is stored.\n  // It started with `date.meridian` returning an array,\n  // then it switched to `time.am` and `time.pm`.\n  // This function abstracts this difference and returns\n  // the correct meridian or the default value when none is provided.\n  I18n.meridian = function() {\n    var time = this.lookup(\"time\");\n    var date = this.lookup(\"date\");\n\n    if (time && time.am && time.pm) {\n      return [time.am, time.pm];\n    } else if (date && date.meridian) {\n      return date.meridian;\n    } else {\n      return DATE.meridian;\n    }\n  };\n\n  // Merge serveral hash options, checking if value is set before\n  // overwriting any value. The precedence is from left to right.\n  //\n  //     I18n.prepareOptions({name: \"John Doe\"}, {name: \"Mary Doe\", role: \"user\"});\n  //     #=> {name: \"John Doe\", role: \"user\"}\n  //\n  I18n.prepareOptions = function() {\n    var args = slice.call(arguments)\n      , options = {}\n      , subject\n    ;\n\n    while (args.length) {\n      subject = args.shift();\n\n      if (typeof(subject) != \"object\") {\n        continue;\n      }\n\n      for (var attr in subject) {\n        if (!subject.hasOwnProperty(attr)) {\n          continue;\n        }\n\n        if (isSet(options[attr])) {\n          continue;\n        }\n\n        options[attr] = subject[attr];\n      }\n    }\n\n    return options;\n  };\n\n  // Generate a list of translation options for default fallbacks.\n  // `defaultValue` is also deleted from options as it is returned as part of\n  // the translationOptions array.\n  I18n.createTranslationOptions = function(scope, options) {\n    var translationOptions = [{scope: scope}];\n\n    // Defaults should be an array of hashes containing either\n    // fallback scopes or messages\n    if (isSet(options.defaults)) {\n      translationOptions = translationOptions.concat(options.defaults);\n    }\n\n    // Maintain support for defaultValue. Since it is always a message\n    // insert it in to the translation options as such.\n    if (isSet(options.defaultValue)) {\n      translationOptions.push({ message: options.defaultValue });\n    }\n\n    return translationOptions;\n  };\n\n  // Translate the given scope with the provided options.\n  I18n.translate = function(scope, options) {\n    options = options || {};\n\n    var translationOptions = this.createTranslationOptions(scope, options);\n\n    var translation;\n    var usedScope = scope;\n\n    var optionsWithoutDefault = this.prepareOptions(options)\n    delete optionsWithoutDefault.defaultValue\n\n    // Iterate through the translation options until a translation\n    // or message is found.\n    var translationFound =\n      translationOptions.some(function(translationOption) {\n        if (isSet(translationOption.scope)) {\n          usedScope = translationOption.scope;\n          translation = this.lookup(usedScope, optionsWithoutDefault);\n        } else if (isSet(translationOption.message)) {\n          translation = lazyEvaluate(translationOption.message, scope);\n        }\n\n        if (translation !== undefined && translation !== null) {\n          return true;\n        }\n      }, this);\n\n    if (!translationFound) {\n      return this.missingTranslation(scope, options);\n    }\n\n    if (typeof(translation) === \"string\") {\n      translation = this.interpolate(translation, options);\n    } else if (isArray(translation)) {\n      translation = translation.map(function(t) {\n        return (typeof(t) === \"string\" ? this.interpolate(t, options) : t);\n      }, this);\n    } else if (isObject(translation) && isSet(options.count)) {\n      translation = this.pluralize(options.count, usedScope, options);\n    }\n\n    return translation;\n  };\n\n  // This function interpolates the all variables in the given message.\n  I18n.interpolate = function(message, options) {\n    if (message == null) {\n      return message;\n    }\n\n    options = options || {};\n    var matches = message.match(this.placeholder)\n      , placeholder\n      , value\n      , name\n      , regex\n    ;\n\n    if (!matches) {\n      return message;\n    }\n\n    while (matches.length) {\n      placeholder = matches.shift();\n      name = placeholder.replace(this.placeholder, \"$1\");\n\n      if (isSet(options[name])) {\n        value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n      } else if (name in options) {\n        value = this.nullPlaceholder(placeholder, message, options);\n      } else {\n        value = this.missingPlaceholder(placeholder, message, options);\n      }\n\n      regex = new RegExp(placeholder.replace(/{/gm, \"\\\\{\").replace(/}/gm, \"\\\\}\"));\n      message = message.replace(regex, value);\n    }\n\n    return message.replace(/_#\\$#_/g, \"$\");\n  };\n\n  // Pluralize the given scope using the `count` value.\n  // The pluralized translation may have other placeholders,\n  // which will be retrieved from `options`.\n  I18n.pluralize = function(count, scope, options) {\n    options = this.prepareOptions({count: String(count)}, options)\n    var pluralizer, result;\n\n    result = this.pluralizationLookup(count, scope, options);\n    if (typeof result.translations === \"undefined\" || result.translations == null) {\n      return this.missingTranslation(scope, options);\n    }\n\n    if (typeof result.message !== \"undefined\" && result.message != null) {\n      return this.interpolate(result.message, options);\n    }\n    else {\n      pluralizer = this.pluralization.get(options.locale);\n      return this.missingTranslation(scope + '.' + pluralizer(count)[0], options);\n    }\n  };\n\n  // Return a missing translation message for the given parameters.\n  I18n.missingTranslation = function(scope, options) {\n    //guess intended string\n    if(this.missingBehaviour === 'guess'){\n      //get only the last portion of the scope\n      var s = scope.split('.').slice(-1)[0];\n      //replace underscore with space && camelcase with space and lowercase letter\n      return (this.missingTranslationPrefix.length > 0 ? this.missingTranslationPrefix : '') +\n          s.replace(/_/g,' ').replace(/([a-z])([A-Z])/g,\n          function(match, p1, p2) {return p1 + ' ' + p2.toLowerCase()} );\n    }\n\n    var localeForTranslation = (options != null && options.locale != null) ? options.locale : this.currentLocale();\n    var fullScope           = this.getFullScope(scope, options);\n    var fullScopeWithLocale = [localeForTranslation, fullScope].join(options.separator || this.defaultSeparator);\n\n    return '[missing \"' + fullScopeWithLocale + '\" translation]';\n  };\n\n  // Return a missing placeholder message for given parameters\n  I18n.missingPlaceholder = function(placeholder, message, options) {\n    return \"[missing \" + placeholder + \" value]\";\n  };\n\n  I18n.nullPlaceholder = function() {\n    return I18n.missingPlaceholder.apply(I18n, arguments);\n  };\n\n  // Format number using localization rules.\n  // The options will be retrieved from the `number.format` scope.\n  // If this isn't present, then the following options will be used:\n  //\n  // - `precision`: `3`\n  // - `separator`: `\".\"`\n  // - `delimiter`: `\",\"`\n  // - `strip_insignificant_zeros`: `false`\n  //\n  // You can also override these options by providing the `options` argument.\n  //\n  I18n.toNumber = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.format\")\n      , NUMBER_FORMAT\n    );\n\n    var negative = number < 0\n      , string = toFixed(Math.abs(number), options.precision).toString()\n      , parts = string.split(\".\")\n      , precision\n      , buffer = []\n      , formattedNumber\n      , format = options.format || \"%n\"\n      , sign = negative ? \"-\" : \"\"\n    ;\n\n    number = parts[0];\n    precision = parts[1];\n\n    while (number.length > 0) {\n      buffer.unshift(number.substr(Math.max(0, number.length - 3), 3));\n      number = number.substr(0, number.length -3);\n    }\n\n    formattedNumber = buffer.join(options.delimiter);\n\n    if (options.strip_insignificant_zeros && precision) {\n      precision = precision.replace(/0+$/, \"\");\n    }\n\n    if (options.precision > 0 && precision) {\n      formattedNumber += options.separator + precision;\n    }\n\n    if (options.sign_first) {\n      format = \"%s\" + format;\n    }\n    else {\n      format = format.replace(\"%n\", \"%s%n\");\n    }\n\n    formattedNumber = format\n      .replace(\"%u\", options.unit)\n      .replace(\"%n\", formattedNumber)\n      .replace(\"%s\", sign)\n    ;\n\n    return formattedNumber;\n  };\n\n  // Format currency with localization rules.\n  // The options will be retrieved from the `number.currency.format` and\n  // `number.format` scopes, in that order.\n  //\n  // Any missing option will be retrieved from the `I18n.toNumber` defaults and\n  // the following options:\n  //\n  // - `unit`: `\"$\"`\n  // - `precision`: `2`\n  // - `format`: `\"%u%n\"`\n  // - `delimiter`: `\",\"`\n  // - `separator`: `\".\"`\n  //\n  // You can also override these options by providing the `options` argument.\n  //\n  I18n.toCurrency = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.currency.format\", options)\n      , this.lookup(\"number.format\", options)\n      , CURRENCY_FORMAT\n    );\n\n    return this.toNumber(number, options);\n  };\n\n  // Localize several values.\n  // You can provide the following scopes: `currency`, `number`, or `percentage`.\n  // If you provide a scope that matches the `/^(date|time)/` regular expression\n  // then the `value` will be converted by using the `I18n.toTime` function.\n  //\n  // It will default to the value's `toString` function.\n  //\n  I18n.localize = function(scope, value, options) {\n    options || (options = {});\n\n    switch (scope) {\n      case \"currency\":\n        return this.toCurrency(value, options);\n      case \"number\":\n        scope = this.lookup(\"number.format\", options);\n        return this.toNumber(value, scope);\n      case \"percentage\":\n        return this.toPercentage(value, options);\n      default:\n        var localizedValue;\n\n        if (scope.match(/^(date|time)/)) {\n          localizedValue = this.toTime(scope, value, options);\n        } else {\n          localizedValue = value.toString();\n        }\n\n        return this.interpolate(localizedValue, options);\n    }\n  };\n\n  // Parse a given `date` string into a JavaScript Date object.\n  // This function is time zone aware.\n  //\n  // The following string formats are recognized:\n  //\n  //    yyyy-mm-dd\n  //    yyyy-mm-dd[ T]hh:mm::ss\n  //    yyyy-mm-dd[ T]hh:mm::ss\n  //    yyyy-mm-dd[ T]hh:mm::ssZ\n  //    yyyy-mm-dd[ T]hh:mm::ss+0000\n  //    yyyy-mm-dd[ T]hh:mm::ss+00:00\n  //    yyyy-mm-dd[ T]hh:mm::ss.123Z\n  //\n  I18n.parseDate = function(date) {\n    var matches, convertedDate, fraction;\n    // A date input of `null` or `undefined` will be returned as-is\n    if (date == null) {\n      return date;\n    }\n    // we have a date, so just return it.\n    if (typeof(date) === \"object\") {\n      return date;\n    }\n\n    matches = date.toString().match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})([\\.,]\\d{1,3})?)?(Z|\\+00:?00)?/);\n\n    if (matches) {\n      for (var i = 1; i <= 6; i++) {\n        matches[i] = parseInt(matches[i], 10) || 0;\n      }\n\n      // month starts on 0\n      matches[2] -= 1;\n\n      fraction = matches[7] ? 1000 * (\"0\" + matches[7]) : null;\n\n      if (matches[8]) {\n        convertedDate = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction));\n      } else {\n        convertedDate = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction);\n      }\n    } else if (typeof(date) == \"number\") {\n      // UNIX timestamp\n      convertedDate = new Date();\n      convertedDate.setTime(date);\n    } else if (date.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n      // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n      // webkit/firefox, but not by IE, so we must parse it manually.\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse([\n        RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5\n      ].join(\" \")));\n    } else if (date.match(/\\d+ \\d+:\\d+:\\d+ [+-]\\d+ \\d+/)) {\n      // a valid javascript format with timezone info\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse(date));\n    } else {\n      // an arbitrary javascript string\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse(date));\n    }\n\n    return convertedDate;\n  };\n\n  // Formats time according to the directives in the given format string.\n  // The directives begins with a percent (%) character. Any text not listed as a\n  // directive will be passed through to the output string.\n  //\n  // The accepted formats are:\n  //\n  //     %a     - The abbreviated weekday name (Sun)\n  //     %A     - The full weekday name (Sunday)\n  //     %b     - The abbreviated month name (Jan)\n  //     %B     - The full month name (January)\n  //     %c     - The preferred local date and time representation\n  //     %d     - Day of the month (01..31)\n  //     %-d    - Day of the month (1..31)\n  //     %H     - Hour of the day, 24-hour clock (00..23)\n  //     %-H/%k - Hour of the day, 24-hour clock (0..23)\n  //     %I     - Hour of the day, 12-hour clock (01..12)\n  //     %-I/%l - Hour of the day, 12-hour clock (1..12)\n  //     %m     - Month of the year (01..12)\n  //     %-m    - Month of the year (1..12)\n  //     %M     - Minute of the hour (00..59)\n  //     %-M    - Minute of the hour (0..59)\n  //     %p     - Meridian indicator (AM  or  PM)\n  //     %P     - Meridian indicator (am  or  pm)\n  //     %S     - Second of the minute (00..60)\n  //     %-S    - Second of the minute (0..60)\n  //     %w     - Day of the week (Sunday is 0, 0..6)\n  //     %y     - Year without a century (00..99)\n  //     %-y    - Year without a century (0..99)\n  //     %Y     - Year with century\n  //     %z/%Z  - Timezone offset (+0545)\n  //\n  I18n.strftime = function(date, format, options) {\n    var options = this.lookup(\"date\", options)\n      , meridianOptions = I18n.meridian()\n    ;\n\n    if (!options) {\n      options = {};\n    }\n\n    options = this.prepareOptions(options, DATE);\n\n    if (isNaN(date.getTime())) {\n      throw new Error('I18n.strftime() requires a valid date object, but received an invalid date.');\n    }\n\n    var weekDay = date.getDay()\n      , day = date.getDate()\n      , year = date.getFullYear()\n      , month = date.getMonth() + 1\n      , hour = date.getHours()\n      , hour12 = hour\n      , meridian = hour > 11 ? 1 : 0\n      , secs = date.getSeconds()\n      , mins = date.getMinutes()\n      , offset = date.getTimezoneOffset()\n      , absOffsetHours = Math.floor(Math.abs(offset / 60))\n      , absOffsetMinutes = Math.abs(offset) - (absOffsetHours * 60)\n      , timezoneoffset = (offset > 0 ? \"-\" : \"+\") +\n          (absOffsetHours.toString().length < 2 ? \"0\" + absOffsetHours : absOffsetHours) +\n          (absOffsetMinutes.toString().length < 2 ? \"0\" + absOffsetMinutes : absOffsetMinutes)\n    ;\n\n    if (hour12 > 12) {\n      hour12 = hour12 - 12;\n    } else if (hour12 === 0) {\n      hour12 = 12;\n    }\n\n    format = format.replace(\"%a\", options.abbr_day_names[weekDay]);\n    format = format.replace(\"%A\", options.day_names[weekDay]);\n    format = format.replace(\"%b\", options.abbr_month_names[month]);\n    format = format.replace(\"%B\", options.month_names[month]);\n    format = format.replace(\"%d\", padding(day));\n    format = format.replace(\"%e\", day);\n    format = format.replace(\"%-d\", day);\n    format = format.replace(\"%H\", padding(hour));\n    format = format.replace(\"%-H\", hour);\n    format = format.replace(\"%k\", hour);\n    format = format.replace(\"%I\", padding(hour12));\n    format = format.replace(\"%-I\", hour12);\n    format = format.replace(\"%l\", hour12);\n    format = format.replace(\"%m\", padding(month));\n    format = format.replace(\"%-m\", month);\n    format = format.replace(\"%M\", padding(mins));\n    format = format.replace(\"%-M\", mins);\n    format = format.replace(\"%p\", meridianOptions[meridian]);\n    format = format.replace(\"%P\", meridianOptions[meridian].toLowerCase());\n    format = format.replace(\"%S\", padding(secs));\n    format = format.replace(\"%-S\", secs);\n    format = format.replace(\"%w\", weekDay);\n    format = format.replace(\"%y\", padding(year));\n    format = format.replace(\"%-y\", padding(year).replace(/^0+/, \"\"));\n    format = format.replace(\"%Y\", year);\n    format = format.replace(\"%z\", timezoneoffset);\n    format = format.replace(\"%Z\", timezoneoffset);\n\n    return format;\n  };\n\n  // Convert the given dateString into a formatted date.\n  I18n.toTime = function(scope, dateString, options) {\n    var date = this.parseDate(dateString)\n      , format = this.lookup(scope, options)\n    ;\n\n    // A date input of `null` or `undefined` will be returned as-is\n    if (date == null) {\n      return date;\n    }\n\n    var date_string = date.toString()\n    if (date_string.match(/invalid/i)) {\n      return date_string;\n    }\n\n    if (!format) {\n      return date_string;\n    }\n\n    return this.strftime(date, format, options);\n  };\n\n  // Convert a number into a formatted percentage value.\n  I18n.toPercentage = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.percentage.format\", options)\n      , this.lookup(\"number.format\", options)\n      , PERCENTAGE_FORMAT\n    );\n\n    return this.toNumber(number, options);\n  };\n\n  // Convert a number into a readable size representation.\n  I18n.toHumanSize = function(number, options) {\n    var kb = 1024\n      , size = number\n      , iterations = 0\n      , unit\n      , precision\n      , fullScope\n    ;\n\n    while (size >= kb && iterations < 4) {\n      size = size / kb;\n      iterations += 1;\n    }\n\n    if (iterations === 0) {\n      fullScope = this.getFullScope(\"number.human.storage_units.units.byte\", options);\n      unit = this.t(fullScope, {count: size});\n      precision = 0;\n    } else {\n      fullScope = this.getFullScope(\"number.human.storage_units.units.\" + SIZE_UNITS[iterations], options);\n      unit = this.t(fullScope);\n      precision = (size - Math.floor(size) === 0) ? 0 : 1;\n    }\n\n    options = this.prepareOptions(\n        options\n      , {unit: unit, precision: precision, format: \"%n%u\", delimiter: \"\"}\n    );\n\n    return this.toNumber(size, options);\n  };\n\n  I18n.getFullScope = function(scope, options) {\n    options = options || {};\n\n    // Deal with the scope as an array.\n    if (isArray(scope)) {\n      scope = scope.join(options.separator || this.defaultSeparator);\n    }\n\n    // Deal with the scope option provided through the second argument.\n    //\n    //    I18n.t('hello', {scope: 'greetings'});\n    //\n    if (options.scope) {\n      scope = [options.scope, scope].join(options.separator || this.defaultSeparator);\n    }\n\n    return scope;\n  };\n  /**\n   * Merge obj1 with obj2 (shallow merge), without modifying inputs\n   * @param {Object} obj1\n   * @param {Object} obj2\n   * @returns {Object} Merged values of obj1 and obj2\n   *\n   * In order to support ES3, `Object.prototype.hasOwnProperty.call` is used\n   * Idea is from:\n   * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8\n   */\n  I18n.extend = function ( obj1, obj2 ) {\n    if (typeof(obj1) === \"undefined\" && typeof(obj2) === \"undefined\") {\n      return {};\n    }\n    return merge(obj1, obj2);\n  };\n\n  // Set aliases, so we can save some typing.\n  I18n.t = I18n.translate.bind(I18n);\n  I18n.l = I18n.localize.bind(I18n);\n  I18n.p = I18n.pluralize.bind(I18n);\n\n  return I18n;\n}));\n","/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (value !== undefined && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v0.19.1\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\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=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","// @flow\n// NOTE: This file is also imported from frontend JS application so that this\n//       file is the only one acting as the source of truth of what are the\n//       available locales!\n\n// Use a tuple type for locales as that disallows both adding new locales\n// or removing old locales without changing types.\n\n// Note: this file is not auto-formatted with Prettier as it would remove the\n// flow comments\n\nconst locales /*: ['fi', 'sv', 'en', 'da', 'pl', 'es', 'de', 'tra'] */ = [\n  'fi',\n  'sv',\n  'en',\n  'da',\n  'pl',\n  'es',\n  'de',\n  'tra'\n];\n\n/*::\nexport type Locale = 'fi' | 'sv' | 'en' | 'da' | 'pl' | 'es' | 'de' | 'tra';\n\n// This makes sure that all defined locales are specified in Locale type above\n(locales.map(locale => (locale: Locale)));\n*/\n\nmodule.exports = { locales };\n","import * as React from 'react';\nwindow.React = React;\n","import i18nFallbacks from 'railsRoot/config/i18n_fallbacks.json';\nimport I18n from 'i18n-js';\n\nexport default function i18nSetup() {\n  window.I18n = I18n;\n  I18n.locale = __LOCALE__;\n  I18n.defaultLocale = 'fi';\n  I18n.translations = I18N_RUNTIME_TRANSLATIONS;\n  I18n.placeholder = /%\\{(.*?)\\}/gm;\n\n  // Configure runtime I18n.t to test each fallback locale in the\n  // defined order before falling back to the default missing translation\n  // logic -- which most likely would show an error.\n  //\n  // This replicates the logic we see on Rails side.\n  const originalMissingTranslation = I18n.missingTranslation;\n  I18n.missingTranslation = function (scope, options) {\n    // English translation doesn't define fallback locales, so we\n    // default to an empty array of fallback locales to not crash when\n    // fallback locales don't exist.\n    //\n    // This makes a missing translation error show up in case I18n.t\n    // ends up using a translation that doesn't exist and we use English.\n    const fallbackLocales = i18nFallbacks[this.locale] || [];\n    if (options.__usedFallbackLocales >= fallbackLocales.length) {\n      return originalMissingTranslation.call(this, scope, options);\n    }\n    const nextFallbackLocaleIndex =\n      typeof options.__usedFallbackLocales === 'undefined'\n        ? 0\n        : options.__usedFallbackLocales + 1;\n    return I18n.t(scope, {\n      ...options,\n      locale: fallbackLocales[nextFallbackLocaleIndex],\n      __usedFallbackLocales: nextFallbackLocaleIndex\n    });\n  };\n\n  // We want missing placeholders to not output anything in order for the In-Context\n  // translation mode to pick the original translation as it was in the language under\n  // translation -- that is, we want to effectively disable interpolation altogether.\n  if (__LOCALE__ === 'tra') {\n    I18n.missingPlaceholder = placeholder => placeholder;\n  }\n}\n","// @flow\n\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport Honeybadger from '@honeybadger-io/js';\n\nimport { HoneybadgerErrorBoundary } from '@honeybadger-io/react';\nimport ErrorComponent from 'common/components/ErrorComponent.js';\n\ntype AnyProps = {| [string]: any |};\n\ntype ComponentMap = any;\ntype LazyComponentMap = any;\n\nexport function exposeComponents(mountableComponents: ComponentMap) {\n  window.Venuu.REACT_COMPONENTS = {\n    ...window.Venuu.REACT_COMPONENTS,\n    ...mountableComponents\n  };\n}\n\nexport function exposeLazyComponents(mountableComponents: LazyComponentMap) {\n  window.Venuu.REACT_LAZY_COMPONENTS = {\n    ...window.Venuu.REACT_LAZY_COMPONENTS,\n    ...mountableComponents\n  };\n}\n\nexport function createElement(\n  component: React.ComponentType<AnyProps>,\n  props: AnyProps\n): React.Node {\n  // $FlowFixMe[not-a-function] -- Suppressed during Flow upgrade to 0.241.0. Delete this comment to view the error.\n  return React.createElement(component, props);\n}\n\nconst mountComponentFromNode = (node: HTMLElement) => {\n  const componentName = node.getAttribute('data-react-class');\n  const componentId = node.getAttribute('data-component-id');\n  if (!componentName || !componentId) {\n    throw new Error(\"Can't mount react node\");\n  }\n  const props = window.Venuu.REACT_PROPS[`${componentName}:${componentId}`];\n  mountComponent(componentName, props, node);\n};\n\nfunction mountComponent(\n  componentName: string,\n  props: AnyProps,\n  node: HTMLElement\n) {\n  const normalComponent =\n    window.Venuu.REACT_COMPONENTS &&\n    window.Venuu.REACT_COMPONENTS[componentName];\n  const loadLazyComponent =\n    window.Venuu.REACT_LAZY_COMPONENTS &&\n    window.Venuu.REACT_LAZY_COMPONENTS[componentName];\n\n  if (normalComponent) {\n    render(normalComponent, props, node);\n  } else if (loadLazyComponent) {\n    loadLazyComponent()\n      .then(component => {\n        render(component, props, node);\n      })\n      .catch(err => {\n        // eslint-disable-next-line no-console\n        console.error(err);\n      });\n  } else {\n    throw new Error(\n      `Could not find mountable component ${componentName}. ` +\n        'You need to expose it through REACT_COMPONENTS or REACT_LAZY_COMPONENTS.'\n    );\n  }\n}\n\nfunction render(component: any, props: AnyProps, node: HTMLElement) {\n  try {\n    Honeybadger.setContext({ component: component.name, props });\n    // $FlowFixMe[incompatible-type] createElement() has a too wide potential return type\n    const element: React.Element<React.ElementType> = createElement(\n      component,\n      props\n    );\n    // TODO: Call ReactDOM.hydrate instead when the component has been server-rendered\n    ReactDOM.render(\n      <HoneybadgerErrorBoundary\n        honeybadger={Honeybadger}\n        ErrorComponent={ErrorComponent}\n      >\n        {element}\n      </HoneybadgerErrorBoundary>,\n      node\n    );\n  } finally {\n    Honeybadger.setContext({ component: null, props: null });\n  }\n}\n\nexport function mountAllComponents() {\n  const reactNodes = document.querySelectorAll('[data-react-class]');\n\n  // YYyeah, document.querySelectorAll doesn't return an Array but a NodeList object. And that\n  // fucker naturally doesn't support .map function, because DOM API sucks balls, so we have to\n  // rely on normal for-loop to iterate the nodes.\n  // https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Why_is_NodeList_not_an_Array\n  for (let i = 0; i < reactNodes.length; i++) {\n    mountComponentFromNode(reactNodes[i]);\n  }\n}\n","// Setup moment.js locale bundle-wide\nimport moment from 'moment';\nimport 'moment/locale/current';\nmoment.locale(__LOCALE__ === 'en' ? 'en-gb' : __LOCALE__);\n","// @flow\n\nimport Honeybadger from '@honeybadger-io/js';\nimport { retrieve } from 'putki';\nimport actionEntryPoints from './actionEntryPoints';\nimport $ from 'jquery';\n\nfunction buildModuleName(controller: string, action: string) {\n  const camelCaseController = controller.replace(/(_\\w)/g, match =>\n    match[1].toUpperCase()\n  );\n  const upcaseAction = action.replace(/^./, match => match.toUpperCase());\n  return `${camelCaseController}${upcaseAction}`;\n}\n\nfunction actionAlias(action: string): string {\n  const crudAliases: { [string]: ?string } = {\n    update: 'edit',\n    create: 'new'\n  };\n  return crudAliases[action] || action;\n}\n\nfunction findScript(controller: string, action: string) {\n  const moduleNameWithAction = buildModuleName(controller, actionAlias(action));\n  const moduleNameWithoutAction = buildModuleName(controller, '');\n\n  if (typeof actionEntryPoints[moduleNameWithAction] === 'function') {\n    const actionFunc = actionEntryPoints[moduleNameWithAction];\n    return actionFunc();\n  }\n\n  if (typeof actionEntryPoints[moduleNameWithoutAction] === 'function') {\n    const actionFunc = actionEntryPoints[moduleNameWithoutAction];\n    return actionFunc();\n  }\n\n  return Promise.resolve({ default: () => {} });\n}\n\nconst controller = retrieve('controller');\nconst action = retrieve('action');\n\nif (typeof controller === 'string' && typeof action === 'string') {\n  findScript(controller, action)\n    .then(module => module.default)\n    .then(initializer => {\n      $(document).ready(() => {\n        try {\n          initializer();\n        } catch (err) {\n          Honeybadger.notify(err);\n          // The error is thrown as that was what honeybadger-js v2.x used to do when\n          // we were wrapping the initializer with Honeybadger.wrap().\n          //\n          // It doesn't make much sense as nothing is going to catch this error.\n          //\n          // TODO: Handle an initializer error gracefully.\n          throw err;\n        }\n      });\n    })\n    .catch(err => {\n      // eslint-disable-next-line no-console\n      console.error(err);\n    });\n}\n","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n    ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n    ExperimentalFeature[\"REMOTE_CONFIGURATION\"] = \"remote_configuration\";\n    ExperimentalFeature[\"LONG_ANIMATION_FRAME\"] = \"long_animation_frame\";\n    ExperimentalFeature[\"ANONYMOUS_USER_TRACKING\"] = \"anonymous_user_tracking\";\n    ExperimentalFeature[\"ACTION_NAME_MASKING\"] = \"action_name_masking\";\n    ExperimentalFeature[\"CONSISTENT_TRACE_SAMPLING\"] = \"consistent_trace_sampling\";\n    ExperimentalFeature[\"DELAY_VIEWPORT_COLLECTION\"] = \"delay_viewport_collection\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n    if (Array.isArray(enableExperimentalFeatures)) {\n        addExperimentalFeatures(enableExperimentalFeatures.filter(function (flag) {\n            return objectHasValue(ExperimentalFeature, flag);\n        }));\n    }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n    enabledFeatures.forEach(function (flag) {\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","import { addEventListener, Observable, setTimeout, clearTimeout, monitor, includes } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { retrieveFirstInputTiming } from './firstInputPolyfill';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n    RumPerformanceEntryType[\"EVENT\"] = \"event\";\n    RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n    RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n    RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n    RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n    RumPerformanceEntryType[\"LONG_ANIMATION_FRAME\"] = \"long-animation-frame\";\n    RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n    RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n    RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nexport function createPerformanceObservable(configuration, options) {\n    return new Observable(function (observable) {\n        if (!window.PerformanceObserver) {\n            return;\n        }\n        var handlePerformanceEntries = function (entries) {\n            var rumPerformanceEntries = filterRumPerformanceEntries(entries);\n            if (rumPerformanceEntries.length > 0) {\n                observable.notify(rumPerformanceEntries);\n            }\n        };\n        var timeoutId;\n        var isObserverInitializing = true;\n        var observer = new PerformanceObserver(monitor(function (entries) {\n            // In Safari the performance observer callback is synchronous.\n            // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n            if (isObserverInitializing) {\n                timeoutId = setTimeout(function () { return handlePerformanceEntries(entries.getEntries()); });\n            }\n            else {\n                handlePerformanceEntries(entries.getEntries());\n            }\n        }));\n        try {\n            observer.observe(options);\n        }\n        catch (_a) {\n            // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n            // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n            // TODO: remove this fallback in the next major version\n            var fallbackSupportedEntryTypes = [\n                RumPerformanceEntryType.RESOURCE,\n                RumPerformanceEntryType.NAVIGATION,\n                RumPerformanceEntryType.LONG_TASK,\n                RumPerformanceEntryType.PAINT,\n            ];\n            if (includes(fallbackSupportedEntryTypes, options.type)) {\n                if (options.buffered) {\n                    timeoutId = setTimeout(function () { return handlePerformanceEntries(performance.getEntriesByType(options.type)); });\n                }\n                try {\n                    observer.observe({ entryTypes: [options.type] });\n                }\n                catch (_b) {\n                    // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n                    // errors when observing only unsupported entry types.\n                    //\n                    // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n                    // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n                    // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n                    // even if they do support the entry type.\n                    return;\n                }\n            }\n        }\n        isObserverInitializing = false;\n        manageResourceTimingBufferFull(configuration);\n        var stopFirstInputTiming;\n        if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n            options.type === RumPerformanceEntryType.FIRST_INPUT) {\n            ;\n            (stopFirstInputTiming = retrieveFirstInputTiming(configuration, function (timing) {\n                handlePerformanceEntries([timing]);\n            }).stop);\n        }\n        return function () {\n            observer.disconnect();\n            if (stopFirstInputTiming) {\n                stopFirstInputTiming();\n            }\n            clearTimeout(timeoutId);\n        };\n    });\n}\nvar resourceTimingBufferFullListener;\nfunction manageResourceTimingBufferFull(configuration) {\n    if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n        resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', function () {\n            performance.clearResourceTimings();\n        });\n    }\n    return function () {\n        resourceTimingBufferFullListener === null || resourceTimingBufferFullListener === void 0 ? void 0 : resourceTimingBufferFullListener.stop();\n    };\n}\nfunction supportPerformanceObject() {\n    return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n    return (window.PerformanceObserver &&\n        PerformanceObserver.supportedEntryTypes !== undefined &&\n        PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nfunction filterRumPerformanceEntries(entries) {\n    return entries.filter(function (entry) { return !isForbiddenResource(entry); });\n}\nfunction isForbiddenResource(entry) {\n    return (entry.entryType === RumPerformanceEntryType.RESOURCE &&\n        (!isAllowedRequestUrl(entry.name) || !hasValidResourceEntryDuration(entry)));\n}\n//# sourceMappingURL=performanceObservable.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n    var publicApi = assign({\n        version: \"5.35.1\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady: function (callback) {\n            callback();\n        },\n    }, stub);\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get: function () {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    var existingGlobalVariable = global[name];\n    if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n        display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n    }\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n    }\n}\n//# sourceMappingURL=init.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    var originalMethod = descriptor.value;\n    descriptor.value = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        displayIfDebugEnabled(e);\n        if (onMonitorErrorCollected) {\n            try {\n                onMonitorErrorCollected(e);\n            }\n            catch (e) {\n                displayIfDebugEnabled(e);\n            }\n        }\n    }\n}\nexport function displayIfDebugEnabled() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (debugMode) {\n        display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n    }\n}\n//# sourceMappingURL=monitor.js.map","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n    return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n    return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    var correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n    return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function getPathName(url) {\n    var pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function buildUrl(url, base) {\n    var supportedURL = getSupportedUrl();\n    if (supportedURL) {\n        try {\n            return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n        }\n        catch (error) {\n            throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({ url: url, base: base })));\n        }\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n    }\n    var doc = document;\n    var anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        var baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n    if (isURLSupported === undefined) {\n        try {\n            var url = new originalURL('http://test/path');\n            isURLSupported = url.href === 'http://test/path';\n        }\n        catch (_a) {\n            isURLSupported = false;\n        }\n    }\n    return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { assign } from '../tools/utils/polyfills';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n    if (!fetchObservable) {\n        fetchObservable = createFetchObservable();\n    }\n    return fetchObservable;\n}\nexport function resetFetchObservable() {\n    fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n    return new Observable(function (observable) {\n        if (!window.fetch) {\n            return;\n        }\n        var stop = instrumentMethod(window, 'fetch', function (call) { return beforeSend(call, observable); }, {\n            computeHandlingStack: true,\n        }).stop;\n        return stop;\n    });\n}\nfunction beforeSend(_a, observable) {\n    var parameters = _a.parameters, onPostCall = _a.onPostCall, handlingStack = _a.handlingStack;\n    var input = parameters[0], init = parameters[1];\n    var methodFromParams = init && init.method;\n    if (methodFromParams === undefined && input instanceof Request) {\n        methodFromParams = input.method;\n    }\n    var method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n    var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n    var startClocks = clocksNow();\n    var context = {\n        state: 'start',\n        init: init,\n        input: input,\n        method: method,\n        startClocks: startClocks,\n        url: url,\n        handlingStack: handlingStack,\n    };\n    observable.notify(context);\n    // Those properties can be changed by observable subscribers\n    parameters[0] = context.input;\n    parameters[1] = context.init;\n    onPostCall(function (responsePromise) { return afterSend(observable, responsePromise, context); });\n}\nfunction afterSend(observable, responsePromise, startContext) {\n    var context = startContext;\n    function reportFetch(partialContext) {\n        context.state = 'resolve';\n        assign(context, partialContext);\n        observable.notify(context);\n    }\n    responsePromise.then(monitor(function (response) {\n        reportFetch({\n            response: response,\n            responseType: response.type,\n            status: response.status,\n            isAborted: false,\n        });\n    }), monitor(function (error) {\n        var _a, _b;\n        reportFetch({\n            status: 0,\n            isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n            error: error,\n        });\n    }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n    if (expireDelay === void 0) { expireDelay = 0; }\n    var date = new Date();\n    date.setTime(date.getTime() + expireDelay);\n    var expires = \"expires=\".concat(date.toUTCString());\n    var sameSite = options && options.crossSite ? 'none' : 'strict';\n    var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n    var secure = options && options.secure ? ';secure' : '';\n    var partitioned = options && options.partitioned ? ';partitioned' : '';\n    document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure).concat(partitioned);\n}\nexport function getCookie(name) {\n    return findCommaSeparatedValue(document.cookie, name);\n}\nvar initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n    if (!initCookieParsed) {\n        initCookieParsed = findCommaSeparatedValues(document.cookie);\n    }\n    return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n    initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n    setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n    if (document.cookie === undefined || document.cookie === null) {\n        return false;\n    }\n    try {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n        var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n        deleteCookie(testCookieName, options);\n        return isCookieCorrectlySet;\n    }\n    catch (error) {\n        display.error(error);\n        return false;\n    }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n    if (getCurrentSiteCache === undefined) {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_site_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        var domainLevels = window.location.hostname.split('.');\n        var candidateDomain = domainLevels.pop();\n        while (domainLevels.length && !getCookie(testCookieName)) {\n            candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n            setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n        }\n        deleteCookie(testCookieName, { domain: candidateDomain });\n        getCurrentSiteCache = candidateDomain;\n    }\n    return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","export function isIE() {\n    return detectBrowserCached() === 0 /* Browser.IE */;\n}\nexport function isChromium() {\n    return detectBrowserCached() === 1 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n    return detectBrowserCached() === 2 /* Browser.SAFARI */;\n}\nvar browserCache;\nfunction detectBrowserCached() {\n    return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow) {\n    var _a;\n    if (browserWindow === void 0) { browserWindow = window; }\n    var userAgent = browserWindow.navigator.userAgent;\n    if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n        return 1 /* Browser.CHROMIUM */;\n    }\n    if (\n    // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n    // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n    // useragent test as a semi-working fallback.\n    ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n        (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n        return 2 /* Browser.SAFARI */;\n    }\n    if (browserWindow.document.documentMode) {\n        return 0 /* Browser.IE */;\n    }\n    return 3 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n    var _a;\n    if (numberOfRetries === void 0) { numberOfRetries = 0; }\n    var isLockEnabled = sessionStoreStrategy.isLockEnabled, persistSession = sessionStoreStrategy.persistSession, expireSession = sessionStoreStrategy.expireSession;\n    var persistWithLock = function (session) { return persistSession(assign({}, session, { lock: currentLock })); };\n    var retrieveStore = function () {\n        var session = sessionStoreStrategy.retrieveSession();\n        var lock = session.lock;\n        if (session.lock) {\n            delete session.lock;\n        }\n        return {\n            session: session,\n            lock: lock,\n        };\n    };\n    if (!ongoingOperations) {\n        ongoingOperations = operations;\n    }\n    if (operations !== ongoingOperations) {\n        bufferedOperations.push(operations);\n        return;\n    }\n    if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n        next(sessionStoreStrategy);\n        return;\n    }\n    var currentLock;\n    var currentStore = retrieveStore();\n    if (isLockEnabled) {\n        // if someone has lock, retry later\n        if (currentStore.lock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n        // acquire lock\n        currentLock = generateUUID();\n        persistWithLock(currentStore.session);\n        // if lock is not acquired, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    var processedSession = operations.process(currentStore.session);\n    if (isLockEnabled) {\n        // if lock corrupted after process, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    if (processedSession) {\n        if (isSessionInExpiredState(processedSession)) {\n            expireSession(processedSession);\n        }\n        else {\n            expandSessionState(processedSession);\n            if (isLockEnabled) {\n                persistWithLock(processedSession);\n            }\n            else {\n                persistSession(processedSession);\n            }\n        }\n    }\n    if (isLockEnabled) {\n        // correctly handle lock around expiration would require to handle this case properly at several levels\n        // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n        if (!(processedSession && isSessionInExpiredState(processedSession))) {\n            // if lock corrupted after persist, retry later\n            currentStore = retrieveStore();\n            if (currentStore.lock !== currentLock) {\n                retryLater(operations, sessionStoreStrategy, numberOfRetries);\n                return;\n            }\n            persistSession(currentStore.session);\n            processedSession = currentStore.session;\n        }\n    }\n    // call after even if session is not persisted in order to perform operations on\n    // up-to-date session state value => the value could have been modified by another tab\n    (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n    next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n    setTimeout(function () {\n        processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n    }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n    ongoingOperations = undefined;\n    var nextOperations = bufferedOperations.shift();\n    if (nextOperations) {\n        processSessionStoreOperations(nextOperations, sessionStore);\n    }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { getCrypto } from '../../browser/crypto';\nexport function createTraceIdentifier() {\n    return createIdentifier(64);\n}\nexport function createSpanIdentifier() {\n    return createIdentifier(63);\n}\nvar createIdentifierImplementationCache;\nfunction createIdentifier(bits) {\n    if (!createIdentifierImplementationCache) {\n        createIdentifierImplementationCache =\n            isExperimentalFeatureEnabled(ExperimentalFeature.CONSISTENT_TRACE_SAMPLING) && areBigIntIdentifiersSupported()\n                ? createIdentifierUsingBigInt\n                : createIdentifierUsingUint32Array;\n    }\n    return createIdentifierImplementationCache(bits);\n}\nexport function areBigIntIdentifiersSupported() {\n    try {\n        crypto.getRandomValues(new BigUint64Array(1));\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\nfunction createIdentifierUsingBigInt(bits) {\n    var id = crypto.getRandomValues(new BigUint64Array(1))[0];\n    if (bits === 63) {\n        // eslint-disable-next-line no-bitwise\n        id >>= BigInt('1');\n    }\n    return id;\n}\n// TODO: remove this when all browser we support have BigInt support\nfunction createIdentifierUsingUint32Array(bits) {\n    var buffer = getCrypto().getRandomValues(new Uint32Array(2));\n    if (bits === 63) {\n        // eslint-disable-next-line no-bitwise\n        buffer[buffer.length - 1] >>>= 1; // force 63-bit\n    }\n    return {\n        toString: function (radix) {\n            if (radix === void 0) { radix = 10; }\n            var high = buffer[1];\n            var low = buffer[0];\n            var str = '';\n            do {\n                var mod = (high % radix) * 4294967296 + low;\n                high = Math.floor(high / radix);\n                low = Math.floor(mod / radix);\n                str = (mod % radix).toString(radix) + str;\n            } while (high || low);\n            return str;\n        },\n    };\n}\nexport function toPaddedHexadecimalString(id) {\n    var traceId = id.toString(16);\n    // TODO: replace with String.prototype.padStart when we drop IE11 support\n    return Array(17 - traceId.length).join('0') + traceId;\n}\n//# sourceMappingURL=identifier.js.map","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, assign, round, isExperimentalFeatureEnabled, ExperimentalFeature, getConnectivity, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { limitModification } from './limitModification';\nvar VIEW_MODIFIABLE_FIELD_PATHS = {\n    'view.name': 'string',\n    'view.url': 'string',\n    'view.referrer': 'string',\n};\nvar USER_CUSTOMIZABLE_FIELD_PATHS = {\n    context: 'object',\n};\nvar ROOT_MODIFIABLE_FIELD_PATHS = {\n    service: 'string',\n    version: 'string',\n};\nvar modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError) {\n    var _a, _b;\n    modifiableFieldPathsByEvent = (_a = {},\n        _a[\"view\" /* RumEventType.VIEW */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n        _a[\"error\" /* RumEventType.ERROR */] = assign({\n            'error.message': 'string',\n            'error.stack': 'string',\n            'error.resource.url': 'string',\n            'error.fingerprint': 'string',\n        }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n        _a[\"resource\" /* RumEventType.RESOURCE */] = assign({\n            'resource.url': 'string',\n        }, isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n            ? {\n                'resource.graphql': 'object',\n            }\n            : {}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n        _a[\"action\" /* RumEventType.ACTION */] = assign({\n            'action.target.name': 'string',\n        }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n        _a[\"long_task\" /* RumEventType.LONG_TASK */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n        _a[\"vital\" /* RumEventType.VITAL */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n        _a);\n    var eventRateLimiters = (_b = {},\n        _b[\"error\" /* RumEventType.ERROR */] = createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError),\n        _b[\"action\" /* RumEventType.ACTION */] = createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError),\n        _b[\"vital\" /* RumEventType.VITAL */] = createEventRateLimiter(\"vital\" /* RumEventType.VITAL */, configuration.eventRateLimiterThreshold, reportError),\n        _b);\n    var syntheticsContext = getSyntheticsContext();\n    lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (_a) {\n        var startTime = _a.startTime, rawRumEvent = _a.rawRumEvent, domainContext = _a.domainContext, savedCommonContext = _a.savedCommonContext, customerContext = _a.customerContext;\n        var viewHistoryEntry = viewHistory.findView(startTime);\n        var urlContext = urlContexts.findUrl(startTime);\n        var session = sessionManager.findTrackedSession(startTime);\n        if (session && viewHistoryEntry && urlContext) {\n            var commonContext = savedCommonContext || getCommonContext();\n            var actionId = actionContexts.findActionId(startTime);\n            var rumContext = {\n                _dd: {\n                    format_version: 2,\n                    drift: currentDrift(),\n                    configuration: {\n                        session_sample_rate: round(configuration.sessionSampleRate, 3),\n                        session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n                    },\n                    browser_sdk_version: canUseEventBridge() ? \"5.35.1\" : undefined,\n                },\n                application: {\n                    id: configuration.applicationId,\n                },\n                date: timeStampNow(),\n                service: viewHistoryEntry.service || configuration.service,\n                version: viewHistoryEntry.version || configuration.version,\n                source: 'browser',\n                session: {\n                    id: session.id,\n                    type: syntheticsContext\n                        ? \"synthetics\" /* SessionType.SYNTHETICS */\n                        : ciVisibilityContext.get()\n                            ? \"ci_test\" /* SessionType.CI_TEST */\n                            : \"user\" /* SessionType.USER */,\n                },\n                view: {\n                    id: viewHistoryEntry.id,\n                    name: viewHistoryEntry.name,\n                    url: urlContext.url,\n                    referrer: urlContext.referrer,\n                },\n                action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n                synthetics: syntheticsContext,\n                ci_test: ciVisibilityContext.get(),\n                display: displayContext.get(),\n                connectivity: getConnectivity(),\n            };\n            var serverRumEvent = combine(rumContext, rawRumEvent);\n            serverRumEvent.context = combine(commonContext.context, viewHistoryEntry.context, customerContext);\n            if (!('has_replay' in serverRumEvent.session)) {\n                ;\n                serverRumEvent.session.has_replay = commonContext.hasReplay;\n            }\n            if (serverRumEvent.type === 'view') {\n                ;\n                serverRumEvent.session.sampled_for_replay =\n                    session.sessionReplay === 1 /* SessionReplayState.SAMPLED */;\n            }\n            if (\n            // TODO: remove ff and should always add anonymous user id\n            isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING) &&\n                !commonContext.user.anonymous_id) {\n                commonContext.user.anonymous_id = session.anonymousId;\n            }\n            if (!isEmptyObject(commonContext.user)) {\n                ;\n                serverRumEvent.usr = commonContext.user;\n            }\n            if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n                if (isEmptyObject(serverRumEvent.context)) {\n                    delete serverRumEvent.context;\n                }\n                lifeCycle.notify(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n            }\n        }\n    });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n    var _a;\n    if (beforeSend) {\n        var result = limitModification(event, modifiableFieldPathsByEvent[event.type], function (event) {\n            return beforeSend(event, domainContext);\n        });\n        if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n            return false;\n        }\n        if (result === false) {\n            display.warn(\"Can't dismiss view events using beforeSend!\");\n        }\n    }\n    var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n    return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n    return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}\n//# sourceMappingURL=assembly.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n    if (!xhrObservable) {\n        xhrObservable = createXhrObservable(configuration);\n    }\n    return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n    return new Observable(function (observable) {\n        var stopInstrumentingStart = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr).stop;\n        var stopInstrumentingSend = instrumentMethod(XMLHttpRequest.prototype, 'send', function (call) {\n            sendXhr(call, configuration, observable);\n        }, { computeHandlingStack: true }).stop;\n        var stopInstrumentingAbort = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr).stop;\n        return function () {\n            stopInstrumentingStart();\n            stopInstrumentingSend();\n            stopInstrumentingAbort();\n        };\n    });\n}\nfunction openXhr(_a) {\n    var xhr = _a.target, _b = _a.parameters, method = _b[0], url = _b[1];\n    xhrContexts.set(xhr, {\n        state: 'open',\n        method: String(method).toUpperCase(),\n        url: normalizeUrl(String(url)),\n    });\n}\nfunction sendXhr(_a, configuration, observable) {\n    var xhr = _a.target, handlingStack = _a.handlingStack;\n    var context = xhrContexts.get(xhr);\n    if (!context) {\n        return;\n    }\n    var startContext = context;\n    startContext.state = 'start';\n    startContext.startClocks = clocksNow();\n    startContext.isAborted = false;\n    startContext.xhr = xhr;\n    startContext.handlingStack = handlingStack;\n    var hasBeenReported = false;\n    var stopInstrumentingOnReadyStateChange = instrumentMethod(xhr, 'onreadystatechange', function () {\n        if (xhr.readyState === XMLHttpRequest.DONE) {\n            // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n            // application during a future event. For example, Angular is calling .abort() on\n            // completed requests during an onreadystatechange event, so the status becomes '0'\n            // before the request is collected.\n            onEnd();\n        }\n    }).stop;\n    var onEnd = function () {\n        unsubscribeLoadEndListener();\n        stopInstrumentingOnReadyStateChange();\n        if (hasBeenReported) {\n            return;\n        }\n        hasBeenReported = true;\n        var completeContext = context;\n        completeContext.state = 'complete';\n        completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n        completeContext.status = xhr.status;\n        observable.notify(shallowClone(completeContext));\n    };\n    var unsubscribeLoadEndListener = addEventListener(configuration, xhr, 'loadend', onEnd).stop;\n    observable.notify(startContext);\n}\nfunction abortXhr(_a) {\n    var xhr = _a.target;\n    var context = xhrContexts.get(xhr);\n    if (context) {\n        context.isAborted = true;\n    }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { safeTruncate, isIE, find } from '@datadog/browser-core';\nimport { getParentElement } from '../../browser/polyfills';\nimport { NodePrivacyLevel, getPrivacySelector } from '../privacy';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport var ACTION_NAME_PLACEHOLDER = 'Masked Element';\nexport function getActionNameFromElement(element, _a, nodePrivacyLevel) {\n    var enablePrivacyForActionName = _a.enablePrivacyForActionName, userProgrammaticAttribute = _a.actionNameAttribute;\n    // Proceed to get the action name in two steps:\n    // * first, get the name programmatically, explicitly defined by the user.\n    // * then, if privacy is set to mask, return a placeholder for the undefined.\n    // * if privacy is not set to mask, use strategies that are known to return good results.\n    //   Those strategies will be used on the element and a few parents, but it's likely that they won't succeed at all.\n    // * if no name is found this way, use strategies returning less accurate names as a fallback.\n    //   Those are much likely to succeed.\n    var defaultActionName = getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n        (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute));\n    if (defaultActionName) {\n        return { name: defaultActionName, nameSource: \"custom_attribute\" /* ActionNameSource.CUSTOM_ATTRIBUTE */ };\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.MASK) {\n        return { name: ACTION_NAME_PLACEHOLDER, nameSource: \"mask_placeholder\" /* ActionNameSource.MASK_PLACEHOLDER */ };\n    }\n    return (getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies, enablePrivacyForActionName) ||\n        getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies, enablePrivacyForActionName) || { name: '', nameSource: \"blank\" /* ActionNameSource.BLANK */ });\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n    var elementWithAttribute;\n    // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n    // without limit. It is up to the user to declare a relevant naming strategy.\n    // If available, use element.closest() to match get the attribute from the element or any of its\n    // parent.  Else fallback to a more traditional implementation.\n    if (supportsElementClosest()) {\n        elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n    }\n    else {\n        var element = targetElement;\n        while (element) {\n            if (element.hasAttribute(programmaticAttribute)) {\n                elementWithAttribute = element;\n                break;\n            }\n            element = getParentElement(element);\n        }\n    }\n    if (!elementWithAttribute) {\n        return;\n    }\n    var name = elementWithAttribute.getAttribute(programmaticAttribute);\n    return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n    // associated LABEL text\n    function (element, userProgrammaticAttribute, privacy) {\n        // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n        // instead\n        if (supportsLabelProperty()) {\n            if ('labels' in element && element.labels && element.labels.length > 0) {\n                return getActionNameFromTextualContent(element.labels[0], userProgrammaticAttribute);\n            }\n        }\n        else if (element.id) {\n            var label = element.ownerDocument &&\n                find(element.ownerDocument.querySelectorAll('label'), function (label) { return label.htmlFor === element.id; });\n            return label && getActionNameFromTextualContent(label, userProgrammaticAttribute, privacy);\n        }\n    },\n    // INPUT button (and associated) value\n    function (element) {\n        if (element.nodeName === 'INPUT') {\n            var input = element;\n            var type = input.getAttribute('type');\n            if (type === 'button' || type === 'submit' || type === 'reset') {\n                return { name: input.value, nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */ };\n            }\n        }\n    },\n    // BUTTON, LABEL or button-like element text\n    function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n        if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n            return getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n        }\n    },\n    function (element) { return getActionNameFromStandardAttribute(element, 'aria-label'); },\n    // associated element text designated by the aria-labelledby attribute\n    function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n        var labelledByAttribute = element.getAttribute('aria-labelledby');\n        if (labelledByAttribute) {\n            return {\n                name: labelledByAttribute\n                    .split(/\\s+/)\n                    .map(function (id) { return getElementById(element, id); })\n                    .filter(function (label) { return Boolean(label); })\n                    .map(function (element) { return getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName); })\n                    .join(' '),\n                nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n            };\n        }\n    },\n    function (element) { return getActionNameFromStandardAttribute(element, 'alt'); },\n    function (element) { return getActionNameFromStandardAttribute(element, 'name'); },\n    function (element) { return getActionNameFromStandardAttribute(element, 'title'); },\n    function (element) { return getActionNameFromStandardAttribute(element, 'placeholder'); },\n    // SELECT first OPTION text\n    function (element, userProgrammaticAttribute) {\n        if ('options' in element && element.options.length > 0) {\n            return getActionNameFromTextualContent(element.options[0], userProgrammaticAttribute);\n        }\n    },\n];\nvar fallbackStrategies = [\n    function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n        return getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n    },\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies, privacyEnabledActionName) {\n    var element = targetElement;\n    var recursionCounter = 0;\n    while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n        element &&\n        element.nodeName !== 'BODY' &&\n        element.nodeName !== 'HTML' &&\n        element.nodeName !== 'HEAD') {\n        for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n            var strategy = strategies_1[_i];\n            var actionName = strategy(element, userProgrammaticAttribute, privacyEnabledActionName);\n            if (actionName) {\n                var name_1 = actionName.name, nameSource = actionName.nameSource;\n                var trimmedName = name_1 && name_1.trim();\n                if (trimmedName) {\n                    return { name: truncate(normalizeWhitespace(trimmedName)), nameSource: nameSource };\n                }\n            }\n        }\n        // Consider a FORM as a contextual limit to get the action name.  This is experimental and may\n        // be reconsidered in the future.\n        if (element.nodeName === 'FORM') {\n            break;\n        }\n        element = getParentElement(element);\n        recursionCounter += 1;\n    }\n}\nfunction normalizeWhitespace(s) {\n    return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n    return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n    // Use the element ownerDocument here, because tests are executed in an iframe, so\n    // document.getElementById won't work.\n    return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getActionNameFromStandardAttribute(element, attribute) {\n    return {\n        name: element.getAttribute(attribute) || '',\n        nameSource: \"standard_attribute\" /* ActionNameSource.STANDARD_ATTRIBUTE */,\n    };\n}\nfunction getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n    return {\n        name: getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) || '',\n        nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n    };\n}\nfunction getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n    if (element.isContentEditable) {\n        return;\n    }\n    if ('innerText' in element) {\n        var text_1 = element.innerText;\n        var removeTextFromElements = function (query) {\n            var list = element.querySelectorAll(query);\n            for (var index = 0; index < list.length; index += 1) {\n                var element_1 = list[index];\n                if ('innerText' in element_1) {\n                    var textToReplace = element_1.innerText;\n                    if (textToReplace && textToReplace.trim().length > 0) {\n                        text_1 = text_1.replace(textToReplace, '');\n                    }\n                }\n            }\n        };\n        if (!supportsInnerTextScriptAndStyleRemoval()) {\n            // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n            // be relatively fast and work in most cases.\n            removeTextFromElements('script, style');\n        }\n        // remove the text of elements with programmatic attribute value\n        removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n        if (userProgrammaticAttribute) {\n            removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n        }\n        if (privacyEnabledActionName) {\n            // remove the text of elements with privacy override\n            removeTextFromElements(\"\".concat(getPrivacySelector(NodePrivacyLevel.HIDDEN), \", \").concat(getPrivacySelector(NodePrivacyLevel.MASK)));\n        }\n        return text_1;\n    }\n    return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n    return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property.  This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n    if (supportsLabelPropertyResult === undefined) {\n        supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n    }\n    return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method.  This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n    if (supportsElementClosestResult === undefined) {\n        supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n    }\n    return supportsElementClosestResult;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { cssEscape, elementMatches, getClassList, getParentElement } from '../browser/polyfills';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [\n    DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n    // Common test attributes (list provided by google recorder)\n    'data-testid',\n    'data-test',\n    'data-qa',\n    'data-cy',\n    'data-test-id',\n    'data-qa-id',\n    'data-testing',\n    // FullStory decorator attributes:\n    'data-component',\n    'data-element',\n    'data-source-file',\n];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n    getStableAttributeSelector,\n    getClassSelector,\n    getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n    if (!isConnected(targetElement)) {\n        // We cannot compute a selector for a detached element, as we don't have access to all of its\n        // parents, and we cannot determine if it's unique in the document.\n        return;\n    }\n    var targetElementSelector;\n    var currentElement = targetElement;\n    while (currentElement && currentElement.nodeName !== 'HTML') {\n        var globallyUniqueSelector = findSelector(currentElement, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n        if (globallyUniqueSelector) {\n            return globallyUniqueSelector;\n        }\n        var uniqueSelectorAmongChildren = findSelector(currentElement, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n        targetElementSelector =\n            uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector);\n        currentElement = getParentElement(currentElement);\n    }\n    return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n    // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n    // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n    // present.\n    //\n    // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n    // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n    // CSS selectors so it should be fine most of the time.\n    return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n    if (element.id && !isGeneratedValue(element.id)) {\n        return \"#\".concat(cssEscape(element.id));\n    }\n}\nfunction getClassSelector(element) {\n    if (element.tagName === 'BODY') {\n        return;\n    }\n    var classList = getClassList(element);\n    for (var i = 0; i < classList.length; i += 1) {\n        var className = classList[i];\n        if (isGeneratedValue(className)) {\n            continue;\n        }\n        return \"\".concat(cssEscape(element.tagName), \".\").concat(cssEscape(className));\n    }\n}\nfunction getTagNameSelector(element) {\n    return cssEscape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n    if (actionNameAttribute) {\n        var selector = getAttributeSelector(actionNameAttribute);\n        if (selector) {\n            return selector;\n        }\n    }\n    for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n        var attributeName = STABLE_ATTRIBUTES_1[_i];\n        var selector = getAttributeSelector(attributeName);\n        if (selector) {\n            return selector;\n        }\n    }\n    function getAttributeSelector(attributeName) {\n        if (element.hasAttribute(attributeName)) {\n            return \"\".concat(cssEscape(element.tagName), \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n        }\n    }\n}\nfunction getPositionSelector(element) {\n    var sibling = getParentElement(element).firstElementChild;\n    var elementIndex = 1;\n    while (sibling && sibling !== element) {\n        if (sibling.tagName === element.tagName) {\n            elementIndex += 1;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return \"\".concat(cssEscape(element.tagName), \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n    for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n        var selectorGetter = selectorGetters_1[_i];\n        var elementSelector = selectorGetter(element, actionNameAttribute);\n        if (!elementSelector) {\n            continue;\n        }\n        if (predicate(element, elementSelector, childSelector)) {\n            return combineSelector(elementSelector, childSelector);\n        }\n    }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, elementSelector, childSelector) {\n    return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param {Element} currentElement - the element being considered while iterating over the target\n * element ancestors.\n *\n * @param {string} currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n *\n * @param {string|undefined} childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n *   <div>\n *     <span></span>\n *   </div>\n *   <marquee>\n *     <div>\n *       <span></span>\n *     </div>\n *   </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT CHILD_SELECTOR\" returns a single element), regardless of whether the selector is\n * a direct descendant of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(currentElement, currentElementSelector, childSelector) {\n    var isSiblingMatching;\n    if (childSelector === undefined) {\n        // If the child selector is undefined (meaning `currentElement` is the target element, not one\n        // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n        // as `querySelector` only returns a descendant of the element.\n        isSiblingMatching = function (sibling) { return elementMatches(sibling, currentElementSelector); };\n    }\n    else {\n        var scopedSelector_1 = supportScopeSelector()\n            ? combineSelector(\"\".concat(currentElementSelector, \":scope\"), childSelector)\n            : combineSelector(currentElementSelector, childSelector);\n        isSiblingMatching = function (sibling) { return sibling.querySelector(scopedSelector_1) !== null; };\n    }\n    var parent = getParentElement(currentElement);\n    var sibling = parent.firstElementChild;\n    while (sibling) {\n        if (sibling !== currentElement && isSiblingMatching(sibling)) {\n            return false;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return true;\n}\nfunction combineSelector(parent, child) {\n    return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n    if (supportScopeSelectorCache === undefined) {\n        try {\n            document.querySelector(':scope');\n            supportScopeSelectorCache = true;\n        }\n        catch (_a) {\n            supportScopeSelectorCache = false;\n        }\n    }\n    return supportScopeSelectorCache;\n}\n/**\n * Polyfill-utility for the `isConnected` property not supported in IE11\n */\nfunction isConnected(element) {\n    if ('isConnected' in\n        // cast is to make sure `element` is not inferred as `never` after the check\n        element) {\n        return element.isConnected;\n    }\n    return element.ownerDocument.documentElement.contains(element);\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nvar observer;\nvar interactionCountEstimate = 0;\nvar minKnownInteractionId = Infinity;\nvar maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n    if ('interactionCount' in performance || observer) {\n        return;\n    }\n    observer = new window.PerformanceObserver(monitor(function (entries) {\n        entries.getEntries().forEach(function (e) {\n            var entry = e;\n            if (entry.interactionId) {\n                minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n                maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n                interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n            }\n        });\n    }));\n    observer.observe({ type: 'event', buffered: true, durationThreshold: 0 });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport var getInteractionCount = function () {\n    return observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n};\n//# sourceMappingURL=interactionCountPolyfill.js.map","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable(configuration) {\n    if (!viewportObservable) {\n        viewportObservable = createViewportObservable(configuration);\n    }\n    return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n    return new Observable(function (observable) {\n        var updateDimension = throttle(function () {\n            observable.notify(getViewportDimension());\n        }, 200).throttled;\n        return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })\n            .stop;\n    });\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n    var visual = window.visualViewport;\n    if (visual) {\n        return {\n            width: Number(visual.width * visual.scale),\n            height: Number(visual.height * visual.scale),\n        };\n    }\n    return {\n        width: Number(window.innerWidth || 0),\n        height: Number(window.innerHeight || 0),\n    };\n}\n//# sourceMappingURL=viewportObservable.js.map","import { includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval, } from '@datadog/browser-core';\nexport var MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nvar currentPeriodMeasures;\nvar currentBatchMeasures;\nvar batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batchFlushObservable) {\n    var customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n    if (!customerDataTelemetryEnabled) {\n        return;\n    }\n    initCurrentPeriodMeasures();\n    initCurrentBatchMeasures();\n    // We measure the data of every view updates even if there could only be one per batch due to the upsert\n    // It means that contexts bytes count sums can be higher than it really is\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n        batchHasRumEvent = true;\n        updateMeasure(currentBatchMeasures.globalContextBytes, customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */).getBytesCount());\n        updateMeasure(currentBatchMeasures.userContextBytes, customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */).getBytesCount());\n        updateMeasure(currentBatchMeasures.featureFlagBytes, includes([\"view\" /* RumEventType.VIEW */, \"error\" /* RumEventType.ERROR */], event.type)\n            ? customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */).getBytesCount()\n            : 0);\n    });\n    batchFlushObservable.subscribe(function (_a) {\n        var bytesCount = _a.bytesCount, messagesCount = _a.messagesCount;\n        // Don't measure batch that only contains telemetry events to avoid batch sending loop\n        // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n        if (!batchHasRumEvent) {\n            return;\n        }\n        currentPeriodMeasures.batchCount += 1;\n        updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n        updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n        mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes);\n        mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes);\n        mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes);\n        initCurrentBatchMeasures();\n    });\n    setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n    if (currentPeriodMeasures.batchCount === 0) {\n        return;\n    }\n    addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n    initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n    return { min: Infinity, max: 0, sum: 0 };\n}\nfunction updateMeasure(measure, value) {\n    measure.sum += value;\n    measure.min = Math.min(measure.min, value);\n    measure.max = Math.max(measure.max, value);\n}\nfunction mergeMeasure(target, source) {\n    target.sum += source.sum;\n    target.min = Math.min(target.min, source.min);\n    target.max = Math.max(target.max, source.max);\n}\nfunction initCurrentPeriodMeasures() {\n    currentPeriodMeasures = {\n        batchCount: 0,\n        batchBytesCount: createMeasure(),\n        batchMessagesCount: createMeasure(),\n        globalContextBytes: createMeasure(),\n        userContextBytes: createMeasure(),\n        featureFlagBytes: createMeasure(),\n    };\n}\nfunction initCurrentBatchMeasures() {\n    batchHasRumEvent = false;\n    currentBatchMeasures = {\n        globalContextBytes: createMeasure(),\n        userContextBytes: createMeasure(),\n        featureFlagBytes: createMeasure(),\n    };\n}\n//# sourceMappingURL=startCustomerDataTelemetry.js.map","export var MAX_STATS_HISTORY = 10;\nvar statsPerView;\nexport function getSegmentsCount(viewId) {\n    return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n    getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n    getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n    getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n    return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n    statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n    if (!statsPerView) {\n        statsPerView = new Map();\n    }\n    var replayStats;\n    if (statsPerView.has(viewId)) {\n        replayStats = statsPerView.get(viewId);\n    }\n    else {\n        replayStats = {\n            records_count: 0,\n            segments_count: 0,\n            segments_total_raw_size: 0,\n        };\n        statsPerView.set(viewId, replayStats);\n        if (statsPerView.size > MAX_STATS_HISTORY) {\n            deleteOldestStats();\n        }\n    }\n    return replayStats;\n}\nfunction deleteOldestStats() {\n    if (!statsPerView) {\n        return;\n    }\n    if (statsPerView.keys) {\n        var toDelete = statsPerView.keys().next().value;\n        if (toDelete) {\n            statsPerView.delete(toDelete);\n        }\n    }\n    else {\n        // IE11 doesn't support map.keys\n        var isFirst_1 = true;\n        statsPerView.forEach(function (_value, key) {\n            if (isFirst_1) {\n                statsPerView.delete(key);\n                isFirst_1 = false;\n            }\n        });\n    }\n}\n//# sourceMappingURL=replayStats.js.map","var _a;\nimport { assign, addEventListeners } from '@datadog/browser-core';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { IncrementalSource, MouseInteractionType } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { tryToComputeCoordinates } from './trackMove';\nvar eventTypeToMouseInteraction = (_a = {},\n    // Listen for pointerup DOM events instead of mouseup for MouseInteraction/MouseUp records. This\n    // allows to reference such records from Frustration records.\n    //\n    // In the context of supporting Mobile Session Replay, we introduced `PointerInteraction` records\n    // used by the Mobile SDKs in place of `MouseInteraction`. In the future, we should replace\n    // `MouseInteraction` by `PointerInteraction` in the Browser SDK so we have an uniform way to\n    // convey such interaction. This would cleanly solve the issue since we would have\n    // `PointerInteraction/Up` records that we could reference from `Frustration` records.\n    _a[\"pointerup\" /* DOM_EVENT.POINTER_UP */] = MouseInteractionType.MouseUp,\n    _a[\"mousedown\" /* DOM_EVENT.MOUSE_DOWN */] = MouseInteractionType.MouseDown,\n    _a[\"click\" /* DOM_EVENT.CLICK */] = MouseInteractionType.Click,\n    _a[\"contextmenu\" /* DOM_EVENT.CONTEXT_MENU */] = MouseInteractionType.ContextMenu,\n    _a[\"dblclick\" /* DOM_EVENT.DBL_CLICK */] = MouseInteractionType.DblClick,\n    _a[\"focus\" /* DOM_EVENT.FOCUS */] = MouseInteractionType.Focus,\n    _a[\"blur\" /* DOM_EVENT.BLUR */] = MouseInteractionType.Blur,\n    _a[\"touchstart\" /* DOM_EVENT.TOUCH_START */] = MouseInteractionType.TouchStart,\n    _a[\"touchend\" /* DOM_EVENT.TOUCH_END */] = MouseInteractionType.TouchEnd,\n    _a);\nexport function trackMouseInteraction(configuration, mouseInteractionCb, recordIds) {\n    var handler = function (event) {\n        var target = getEventTarget(event);\n        if (getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        var id = getSerializedNodeId(target);\n        var type = eventTypeToMouseInteraction[event.type];\n        var interaction;\n        if (type !== MouseInteractionType.Blur && type !== MouseInteractionType.Focus) {\n            var coordinates = tryToComputeCoordinates(event);\n            if (!coordinates) {\n                return;\n            }\n            interaction = { id: id, type: type, x: coordinates.x, y: coordinates.y };\n        }\n        else {\n            interaction = { id: id, type: type };\n        }\n        var record = assign({ id: recordIds.getIdForEvent(event) }, assembleIncrementalSnapshot(IncrementalSource.MouseInteraction, interaction));\n        mouseInteractionCb(record);\n    };\n    return addEventListeners(configuration, document, Object.keys(eventTypeToMouseInteraction), handler, {\n        capture: true,\n        passive: true,\n    });\n}\n//# sourceMappingURL=trackMouseInteraction.js.map","/**\n * Function to get cookies as an object of name/value pairs\n *\n * TODO: should we be / are we using jquery.cookie instead?\n */\nexport default function getCookies() {\n  const cookies = {};\n  const all = document.cookie;\n  if (all === '') {\n    return cookies;\n  }\n  const list = all.split('; ');\n  for (let i = 0; i < list.length; i++) {\n    const cookie = list[i];\n    const p = cookie.indexOf('=');\n    const name = cookie.substring(0, p);\n    let value = cookie.substring(p + 1);\n    value = decodeURIComponent(value);\n    cookies[name] = value;\n  }\n  return cookies;\n}\n","// @flow\n\nimport { oneOf } from 'common/json/extract';\n\ntype CookieCategory =\n  | 'necessary'\n  | 'functional'\n  | 'performance'\n  | 'analytics'\n  | 'advertisement'\n  | 'other';\n\nconst cookieCategories: Array<CookieCategory> = [\n  'necessary',\n  'functional',\n  'performance',\n  'analytics',\n  'advertisement',\n  'other'\n];\n\nexport function getConsentedCookieCategories(\n  cookies: string\n): Array<CookieCategory> {\n  const re = new RegExp('cookieyes-consent=([^;]+)');\n  const rawValue = re.exec(cookies);\n  const cookieValue = rawValue !== null ? unescape(rawValue[1]) : null;\n\n  if (cookieValue) {\n    const cookiePairs = cookieValue.split(',').map(pair => pair.trim());\n    const cookieArr = [];\n    cookiePairs.forEach(pair => {\n      const [key, value] = pair.split(':');\n      if (cookieCategories.includes(key) && value === 'yes') {\n        const category = oneOf(cookieCategories)(key);\n        cookieArr.push(category);\n      }\n    });\n\n    return cookieArr;\n  }\n  return [];\n}\n\nexport function consentGivenForCategory(category: CookieCategory): boolean {\n  return getConsentedCookieCategories(document.cookie).includes(category);\n}\n","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n\nfunction parse(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nexport default parse;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n  switch (s) {\n    case 0:\n      return x & y ^ ~x & z;\n\n    case 1:\n      return x ^ y ^ z;\n\n    case 2:\n      return x & y ^ x & z ^ y & z;\n\n    case 3:\n      return x ^ y ^ z;\n  }\n}\n\nfunction ROTL(x, n) {\n  return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n  const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n  const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n  if (typeof bytes === 'string') {\n    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n    bytes = [];\n\n    for (let i = 0; i < msg.length; ++i) {\n      bytes.push(msg.charCodeAt(i));\n    }\n  } else if (!Array.isArray(bytes)) {\n    // Convert Array-like to Array\n    bytes = Array.prototype.slice.call(bytes);\n  }\n\n  bytes.push(0x80);\n  const l = bytes.length / 4 + 2;\n  const N = Math.ceil(l / 16);\n  const M = new Array(N);\n\n  for (let i = 0; i < N; ++i) {\n    const arr = new Uint32Array(16);\n\n    for (let j = 0; j < 16; ++j) {\n      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n    }\n\n    M[i] = arr;\n  }\n\n  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n  M[N - 1][14] = Math.floor(M[N - 1][14]);\n  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n  for (let i = 0; i < N; ++i) {\n    const W = new Uint32Array(80);\n\n    for (let t = 0; t < 16; ++t) {\n      W[t] = M[i][t];\n    }\n\n    for (let t = 16; t < 80; ++t) {\n      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n    }\n\n    let a = H[0];\n    let b = H[1];\n    let c = H[2];\n    let d = H[3];\n    let e = H[4];\n\n    for (let t = 0; t < 80; ++t) {\n      const s = Math.floor(t / 20);\n      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n      e = d;\n      d = c;\n      c = ROTL(b, 30) >>> 0;\n      b = a;\n      a = T;\n    }\n\n    H[0] = H[0] + a >>> 0;\n    H[1] = H[1] + b >>> 0;\n    H[2] = H[2] + c >>> 0;\n    H[3] = H[3] + d >>> 0;\n    H[4] = H[4] + e >>> 0;\n  }\n\n  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    var _namespace;\n\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = parse(namespace);\n    }\n\n    if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return unsafeStringify(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}","// @flow\n\nimport { v5 as uuidv5 } from 'uuid';\n\n// NOTE: Keep in sync with lib/tracking/user_id.rb\n\n// These are the bytes from string 'Venuu/tracking_d'.\nconst FIRST_16_BYTES = [\n  86, 101, 110, 117, 117, 47, 116, 114, 97, 99, 107, 105, 110, 103, 95, 100\n];\n// This is the remaining part of 'Venuu/tracking_distinct_id' after the first 16 bytes\nconst REMAINING_STRING = 'istinct_id';\n\nexport function generateUserId({ userEmail }: {| userEmail: string |}): string {\n  // We can only provide 16 bytes worth of data as the UUID v5 namespace value\n  // for the `uuid` npm package, so 'istinct_id' part needs to be prepended\n  // to the uuidv5 input value.\n  //\n  // This way we get the same output on JS side as we would get on Ruby side\n  // if we ran this:\n  //\n  // Digest::UUID.uuid_v5('Venuu/tracking_distinct_id', user_email.downcase.to_s)\n  return uuidv5(\n    `${REMAINING_STRING}${userEmail.toLowerCase()}`,\n    FIRST_16_BYTES\n  );\n}\n","// @flow\n\nimport { retrieve } from 'putki';\nimport { object, record, nullable, id, oneOf } from 'common/json/extract';\n\ntype PageType =\n  | 'conversionintent'\n  | 'offerdetail'\n  | 'home'\n  | 'searchresults'\n  | 'others';\n\ntype GoogleTagParams = {|\n  hrental_id: string,\n  hrental_pagetype: PageType,\n  hrental_totalvalue: number\n|};\n\nconst extractRemarketingDetails = nullable(\n  object(\n    record({\n      page: oneOf(['conversionintent', 'offerdetail', 'home', 'searchresults']),\n      id: nullable(id)\n    })\n  )\n);\n\nexport function retrieveRemarketingProperties(): GoogleTagParams {\n  const remarketingDetails = extractRemarketingDetails(\n    retrieve('remarketing_details')\n  ) || {\n    page: 'others'\n  };\n\n  return {\n    hrental_id: remarketingDetails.id || '',\n    hrental_pagetype: remarketingDetails.page,\n    hrental_totalvalue: 0\n  };\n}\n","// @flow\n\nimport $ from 'jquery';\nimport { retrieve } from 'putki';\nimport currentSite from 'site/currentSite';\nimport getCookies from 'utils/getCookies';\nimport { consentGivenForCategory } from 'utils/cookieConsent';\nimport { generateUserId } from 'utils/trackingUserId';\nimport { trackClicksOn } from 'utils/analytics';\nimport {\n  object,\n  record,\n  nullable,\n  string,\n  withDefault\n} from 'common/json/extract';\n\nimport { retrieveRemarketingProperties } from './analytics/remarketing';\n\nfunction loadAnalytics() {\n  // Now it's time to inject Jitsu on the page if we can\n  const jitsuDomain = retrieve('jitsu_domain');\n  const jitsuBrowserWriteKey = retrieve('jitsu_browser_write_key');\n  if (\n    typeof jitsuDomain !== 'string' ||\n    typeof jitsuBrowserWriteKey !== 'string'\n  ) {\n    return;\n  }\n\n  // Inject the Jitsu script tag to the page, triggering the loading of it once done.\n  // This is similar to what Segment's analytics.load() did when we used Segment.\n  const jitsuScriptTag = document.createElement('script');\n  jitsuScriptTag.async = true;\n  jitsuScriptTag.src = `https://${jitsuDomain}/p.js`;\n\n  // Configure Jitsu with data tags as that works the best when loading the JS\n  // code asynchronously. For example, we can't stop Jitsu from automatically\n  // sending a `page` tracking event otherwise.\n  // Full configuration reference: https://docs.jitsu.com/sending-data/js-reference\n  jitsuScriptTag.setAttribute('data-write-key', jitsuBrowserWriteKey);\n  jitsuScriptTag.setAttribute('data-init-only', 'true');\n  jitsuScriptTag.setAttribute(\n    'data-cookie-names',\n    JSON.stringify({\n      // Replicate the anonymous ID cookie names we used to have from Segment era.\n      // This way the cookie values set on JS side are kept the same as before.\n      anonymousId: 'ajs_anonymous_id',\n      userId: 'ajs_user_id'\n    })\n  );\n  // eslint-disable-next-line no-restricted-globals -- global location usage is expected\n  if (location.search.includes('debugJitsu=1')) {\n    jitsuScriptTag.setAttribute('data-debug', 'true');\n  }\n  // Once Jitsu has loaded, we'll set the anonymous ID as the very first thing so all\n  // the queued events will already have the correct anonymous ID set.\n  window.jitsuOnLoadCallback = jitsu => {\n    const serverSideAnonymousId = getCookies()['cheekify_a'];\n    if (serverSideAnonymousId) {\n      jitsu.setAnonymousId(getCookies()['cheekify_a']);\n    }\n  };\n  jitsuScriptTag.setAttribute('data-onload', 'jitsuOnLoadCallback');\n\n  // Now we inject the tag to the DOM the same way Segment analytics.js would do\n  const firstScriptTag = document.getElementsByTagName('script')[0];\n  firstScriptTag.parentNode?.insertBefore(jitsuScriptTag, firstScriptTag);\n}\n\nfunction loadAnalyticsOnConsent() {\n  document.addEventListener('cookieyes_consent_update', eventData => {\n    // $FlowIgnore[prop-missing] -- https://www.cookieyes.com/documentation/events-on-cookie-banner-interactions/\n    const data = eventData.detail;\n    if (data.accepted.includes('analytics')) {\n      loadAnalytics();\n    }\n  });\n}\n\n/**\n * Rebinds tracking of anchor elements with data-venuu-t attributes.\n */\nfunction rebindTrackedLinks() {\n  trackClicksOn($('a[data-venuu-t]:not([data-venuu-t-react])'));\n}\n\nconst extractUserTrackingData = withDefault(\n  object(\n    record({\n      email: nullable(string),\n      customer_type: nullable(string)\n    })\n  ),\n  { email: null, customer_type: null }\n);\n\n/**\n * Persists the gclid parameter from the url or the _gcl_aw-cookie to our own cookie.\n *\n * This is done to ensure that we are not fully dependent on the poorly documented\n * Google conversion linker and the corresponding _gcl_aw cookie.\n */\nfunction persistGclid() {\n  let gclidFromUrl: ?string;\n  try {\n    // URLs which purl can't parse might throw. Don't throw in that case.\n    gclidFromUrl = $.url().param('gclid');\n  } catch (e) {\n    // no-op\n  }\n\n  const gclidCookie: ?string = $.cookie('_gcl_aw');\n  const gclidFromCookie: ?string = gclidCookie && gclidCookie.split('.')[2];\n\n  const gclid = gclidFromUrl || gclidFromCookie;\n\n  if (gclid) {\n    $.cookie('venuu_gclid', gclid, { expires: 90, path: '/' });\n  }\n}\n\nfunction distinctIdFromUrl() {\n  try {\n    // URLs which purl can't parse might throw. Don't throw in that case.\n    // See https://github.com/venuu/venuu/issues/749\n    return $.url().param('distinct_id');\n  } catch (e) {\n    return null;\n  }\n}\n\nfunction emailIdFromUrl() {\n  let rawEmailDistinctId: string | null = null;\n  try {\n    // URLs which purl can't parse might throw. Don't throw in that case.\n    // See https://github.com/venuu/venuu/issues/749\n    rawEmailDistinctId = $.url().param('email_distinct_id');\n  } catch (e) {\n    // no-op\n  }\n  if (!rawEmailDistinctId) {\n    return null;\n  }\n  return generateUserId({ userEmail: rawEmailDistinctId });\n}\n\n/**\n * The following functions are a part of the improved user tracking scheme.\n * ------------------------------------------------\n * Documentation: https://github.com/venuu/venuu/pull/7368\n */\nfunction identifyUser() {\n  const userIdFromUrl = distinctIdFromUrl();\n  const emailUserIdFromUrl = emailIdFromUrl();\n  const userIdFromCookie = getCookies()['cheekify_uid'];\n  const { email, customer_type: customerType } = extractUserTrackingData(\n    retrieve('user_tracking_data')\n  );\n\n  const commonTraits = {\n    'Application Version': retrieve('application_version'),\n    'Site Key': currentSite().key\n  };\n\n  const identify = (...args: any) => {\n    (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n      jitsu.identify(...args);\n    });\n  };\n\n  if (userIdFromCookie && email) {\n    const traits = {\n      ...commonTraits,\n      Source: 'Venuu web app',\n      'Customer Type': customerType,\n      email: email\n    };\n    if (traits['Customer Type'] === null) {\n      // $FlowFixMe[incompatible-type] -- Suppressed during Flow upgrade to 0.201.0. Delete this comment to view the error.\n      delete traits['Customer Type'];\n    }\n    identify(userIdFromCookie, traits);\n  } else if (userIdFromUrl) {\n    // These are returning users\n    // so they should customer identification traits set.\n    identify(userIdFromUrl, commonTraits);\n  } else if (emailUserIdFromUrl) {\n    identify(emailUserIdFromUrl, commonTraits);\n  }\n}\n\nexport default function initializeAnalytics() {\n  if (consentGivenForCategory('analytics')) {\n    loadAnalytics();\n  } else {\n    loadAnalyticsOnConsent();\n  }\n\n  identifyUser();\n\n  const pageOpts = retrieveRemarketingProperties();\n\n  (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n    jitsu.page(pageOpts);\n  });\n\n  // Track special links\n  rebindTrackedLinks();\n\n  persistGclid();\n}\n","// Load all social media plugins only after page has been fully loaded. This\n// reduces the payload needed to get the page visible and running -- not any of\n// these plugins is the reason why the user comes to the site, so they should be\n// lazily loaded.\n//\n// Also, these plugins are loaded only on certain pages on the site, so we need\n// to specify those conditions first using a custom callback.\n\nimport { retrieve } from 'putki';\n\nconst socialMediaInitCondition = () => {\n  const controller = retrieve('controller');\n  const action = retrieve('action');\n\n  if (controller === 'price_requests' && action === 'thanks') {\n    return true;\n  } else {\n    // No-one else needs it.\n    return false;\n  }\n};\n\nconst lazyloadPlugins = () => {\n  if (retrieve('disable_external_js')) return;\n\n  $(window).load(() => {\n    // Facebook\n    window.fbAsyncInit = function () {\n      /* global FB */\n      FB.init({\n        xfbml: true\n      });\n    };\n\n    // Disable warnings about copypasta\n    /* eslint-disable prefer-const, one-var */\n    (function (d, s, id) {\n      let js,\n        fjs = d.getElementsByTagName(s)[0];\n      if (d.getElementById(id)) return;\n      js = d.createElement(s);\n      js.id = id;\n      js.async = true;\n      js.src = `https://connect.facebook.net/${__(\n        'locale_and_country_code'\n      )}/all.js`;\n      fjs.parentNode.insertBefore(js, fjs);\n    })(document, 'script', 'facebook-jssdk');\n    /* eslint-enable */\n  });\n};\n\n$(document).ready(() => {\n  if (socialMediaInitCondition()) {\n    lazyloadPlugins();\n  }\n});\n","import satisfiesMediaQuery from 'utils/satisfiesMediaQuery';\n\n$(() => {\n  if (!$('.m-box-sticky-container').length) {\n    return;\n  }\n\n  const $sidebar = $('.m-box-sticky-container');\n\n  const $footer = $('.js-sticky-sidebar-end, footer').first();\n  const $wrapper = () => $('.sticky-wrapper');\n  const wrapperWidth = () => $wrapper().outerWidth();\n\n  $sidebar.waypoint('sticky', {\n    stuckClass: 'm-box-sticky',\n    offset: 20,\n    handler: () => $sidebar.css({ width: wrapperWidth() })\n  });\n\n  $footer.waypoint(\n    direction => {\n      if (direction === 'down') {\n        const offset =\n          $footer.offset().top -\n          $wrapper().offset().top -\n          $sidebar.outerHeight();\n        $sidebar.css({\n          position: 'absolute',\n          top: offset,\n          width: wrapperWidth()\n        });\n      } else if (direction === 'up') {\n        $sidebar\n          .removeAttr('style')\n          .css({ width: wrapperWidth() })\n          .addClass('m-box-sticky');\n      }\n    },\n    {\n      offset: () => $sidebar.outerHeight() + 20\n    }\n  );\n\n  const resize = function () {\n    if (satisfiesMediaQuery('middle')) {\n      $.waypoints('enable');\n    } else {\n      $sidebar.attr('style', '').removeClass('m-box-sticky');\n      $wrapper().removeAttr('style');\n      $.waypoints('disable');\n    }\n  };\n  $(window).on('resize', resize);\n  resize();\n});\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n    originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n    debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n    log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n    info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n    warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n    error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport var DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport var DOCS_TROUBLESHOOTING = \"\".concat(DOCS_ORIGIN, \"/real_user_monitoring/browser/troubleshooting\");\nexport var MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            return fn.apply(void 0, args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","export function includes(candidate, search) {\n    return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n    if (Array.from) {\n        return Array.from(arrayLike);\n    }\n    var array = [];\n    if (arrayLike instanceof Set) {\n        arrayLike.forEach(function (item) { return array.push(item); });\n    }\n    else {\n        for (var i = 0; i < arrayLike.length; i++) {\n            array.push(arrayLike[i]);\n        }\n    }\n    return array;\n}\nexport function find(array, predicate) {\n    for (var i = 0; i < array.length; i += 1) {\n        var item = array[i];\n        if (predicate(item, i)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function findLast(array, predicate) {\n    for (var i = array.length - 1; i >= 0; i -= 1) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function forEach(list, callback) {\n    Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n    return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectEntries(object) {\n    return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function startsWith(candidate, search) {\n    return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n    return candidate.slice(-search.length) === search;\n}\nexport function assign(target) {\n    var toAssign = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        toAssign[_i - 1] = arguments[_i];\n    }\n    toAssign.forEach(function (source) {\n        for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n            }\n        }\n    });\n    return target;\n}\n//# sourceMappingURL=polyfills.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get: function () {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    var globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n    // Accurate bytes count computations can degrade performances when there is a lot of events to process\n    if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n        return candidate.length;\n    }\n    if (window.TextEncoder !== undefined) {\n        return new TextEncoder().encode(candidate).length;\n    }\n    return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n    var length = buffers.reduce(function (total, buffer) { return total + buffer.length; }, 0);\n    var result = new Uint8Array(length);\n    var offset = 0;\n    for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n        var buffer = buffers_1[_i];\n        result.set(buffer, offset);\n        offset += buffer.length;\n    }\n    return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n    var browserWindow = getGlobalObject();\n    var original;\n    if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n        original = target[browserWindow.Zone.__symbol__(name)];\n    }\n    if (!original) {\n        original = target[name];\n    }\n    return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n    var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    var inWaitPeriod = false;\n    var pendingExecutionWithParameters;\n    var pendingTimeoutId;\n    return {\n        throttled: function () {\n            var parameters = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                parameters[_i] = arguments[_i];\n            }\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn.apply(void 0, parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(function () {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn.apply(void 0, pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: function () {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    var restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nexport function detachToJsonMethod(value) {\n    var object = value;\n    var objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return function () {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { assign } from './polyfills';\nexport function shallowClone(object) {\n    return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    var newObject = {};\n    for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n        var key = _a[_i];\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport var CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus) {\n    if (compressionStatus === void 0) { compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */; }\n    var customerDataTrackers = new Map();\n    var alreadyWarned = false;\n    function checkCustomerDataLimit(initialBytesCount) {\n        if (initialBytesCount === void 0) { initialBytesCount = 0; }\n        if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n            return;\n        }\n        var bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */\n            ? CUSTOMER_DATA_BYTES_LIMIT\n            : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n        var bytesCount = initialBytesCount;\n        customerDataTrackers.forEach(function (tracker) {\n            bytesCount += tracker.getBytesCount();\n        });\n        if (bytesCount > bytesCountLimit) {\n            displayCustomerDataLimitReachedWarning(bytesCountLimit);\n            alreadyWarned = true;\n        }\n    }\n    return {\n        /**\n         * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n         * bytes count will be counted independently from other detached trackers.\n         *\n         * This is particularly useful when we don't know when the tracker will be unused, so we don't\n         * leak memory (ex: when used in Logger instances).\n         */\n        createDetachedTracker: function () {\n            var tracker = createCustomerDataTracker(function () { return checkCustomerDataLimit(tracker.getBytesCount()); });\n            return tracker;\n        },\n        /**\n         * Creates a tracker if it doesn't exist, and returns it.\n         */\n        getOrCreateTracker: function (type) {\n            if (!customerDataTrackers.has(type)) {\n                customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n            }\n            return customerDataTrackers.get(type);\n        },\n        setCompressionStatus: function (newCompressionStatus) {\n            if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n                compressionStatus = newCompressionStatus;\n                checkCustomerDataLimit();\n            }\n        },\n        getCompressionStatus: function () { return compressionStatus; },\n        stop: function () {\n            customerDataTrackers.forEach(function (tracker) { return tracker.stop(); });\n            customerDataTrackers.clear();\n        },\n    };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n    var bytesCountCache = 0;\n    // Throttle the bytes computation to minimize the impact on performance.\n    // Especially useful if the user call context APIs synchronously multiple times in a row\n    var _a = throttle(function (context) {\n        bytesCountCache = computeBytesCount(jsonStringify(context));\n        checkCustomerDataLimit();\n    }, BYTES_COMPUTATION_THROTTLING_DELAY), computeBytesCountThrottled = _a.throttled, cancelComputeBytesCount = _a.cancel;\n    var resetBytesCount = function () {\n        cancelComputeBytesCount();\n        bytesCountCache = 0;\n    };\n    return {\n        updateCustomerData: function (context) {\n            if (isEmptyObject(context)) {\n                resetBytesCount();\n            }\n            else {\n                computeBytesCountThrottled(context);\n            }\n        },\n        resetCustomerData: resetBytesCount,\n        getBytesCount: function () { return bytesCountCache; },\n        stop: function () {\n            cancelComputeBytesCount();\n        },\n    };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n    display.warn(\"Customer data exceeds the recommended \".concat(bytesCountLimit / ONE_KIBI_BYTE, \"KiB threshold. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#customer-data-exceeds-the-recommended-threshold-warning\"));\n}\n//# sourceMappingURL=customerDataTracker.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n    if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        var flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        var merged_1 = Array.isArray(destination) ? destination : [];\n        for (var i = 0; i < source.length; ++i) {\n            merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n        }\n        return merged_1;\n    }\n    var merged = getType(destination) === 'object' ? destination : {};\n    for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var destination;\n    for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n        var source = sources_1[_a];\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        var set_1 = new WeakSet();\n        return {\n            hasAlreadyBeenSeen: function (value) {\n                var has = set_1.has(value);\n                if (!has) {\n                    set_1.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    var array = [];\n    return {\n        hasAlreadyBeenSeen: function (value) {\n            var has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n    if (maxCharacterCount === void 0) { maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT; }\n    // Unbind any toJSON function we may have on [] or {} prototypes\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n    var containerQueue = [];\n    var visitedObjectsWithPath = new WeakMap();\n    var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n    var serializedSanitizedData = JSON.stringify(sanitizedData);\n    var accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n    if (accumulatedCharacterCount > maxCharacterCount) {\n        warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n        return undefined;\n    }\n    while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n        var containerToProcess = containerQueue.shift();\n        var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n        // Arrays and Objects have to be handled distinctly to ensure\n        // we do not pick up non-numerical properties from Arrays\n        if (Array.isArray(containerToProcess.source)) {\n            for (var key = 0; key < containerToProcess.source.length; key++) {\n                var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                if (targetData !== undefined) {\n                    accumulatedCharacterCount += JSON.stringify(targetData).length;\n                }\n                else {\n                    // When an element of an Array (targetData) is undefined, it is serialized as null:\n                    // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n                    accumulatedCharacterCount += 4;\n                }\n                accumulatedCharacterCount += separatorLength;\n                separatorLength = 1;\n                if (accumulatedCharacterCount > maxCharacterCount) {\n                    warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                    break;\n                }\n                ;\n                containerToProcess.target[key] = targetData;\n            }\n        }\n        else {\n            for (var key in containerToProcess.source) {\n                if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n                    var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                    // When a property of an object has an undefined value, it will be dropped during serialization:\n                    // JSON.stringify({a:undefined}) => '{}'\n                    if (targetData !== undefined) {\n                        accumulatedCharacterCount +=\n                            JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n                        separatorLength = 1;\n                    }\n                    if (accumulatedCharacterCount > maxCharacterCount) {\n                        warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                        break;\n                    }\n                    ;\n                    containerToProcess.target[key] = targetData;\n                }\n            }\n        }\n    }\n    // Rebind detached toJSON functions\n    restoreObjectPrototypeToJson();\n    restoreArrayPrototypeToJson();\n    return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n    // Start by handling toJSON, as we want to sanitize its output\n    var sourceToSanitize = tryToApplyToJSON(source);\n    if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n        return sanitizePrimitivesAndFunctions(sourceToSanitize);\n    }\n    var sanitizedSource = sanitizeObjects(sourceToSanitize);\n    if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n        return sanitizedSource;\n    }\n    // Handle potential cyclic references\n    // We need to use source as sourceToSanitize could be a reference to a new object\n    // At this stage, we know the source is an object type\n    var sourceAsObject = source;\n    if (visitedObjectsWithPath.has(sourceAsObject)) {\n        return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n    }\n    // Add processed source to queue\n    var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n    var target = Array.isArray(sourceToSanitize) ? [] : {};\n    visitedObjectsWithPath.set(sourceAsObject, currentPath);\n    queue.push({ source: sourceToSanitize, target: target, path: currentPath });\n    return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n    // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n    if (typeof value === 'bigint') {\n        return \"[BigInt] \".concat(value.toString());\n    }\n    // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n    // so it won't prevent stringify from serializing later\n    if (typeof value === 'function') {\n        return \"[Function] \".concat(value.name || 'unknown');\n    }\n    // JSON.stringify() does not serialize symbols.\n    if (typeof value === 'symbol') {\n        return \"[Symbol] \".concat(value.description || value.toString());\n    }\n    return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n    try {\n        // Handle events - Keep a simple implementation to avoid breaking changes\n        if (value instanceof Event) {\n            return {\n                isTrusted: value.isTrusted,\n            };\n        }\n        // Handle all remaining object types in a generic way\n        var result = Object.prototype.toString.call(value);\n        var match = result.match(/\\[object (.*)\\]/);\n        if (match && match[1]) {\n            return \"[\".concat(match[1], \"]\");\n        }\n    }\n    catch (_a) {\n        // If the previous serialization attempts failed, and we cannot convert using\n        // Object.prototype.toString, declare the value unserializable\n    }\n    return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n    var object = value;\n    if (object && typeof object.toJSON === 'function') {\n        try {\n            return object.toJSON();\n        }\n        catch (_a) {\n            // If toJSON fails, we continue by trying to serialize the value manually\n        }\n    }\n    return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n    display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n//# sourceMappingURL=sanitize.js.map","// eslint-disable-next-line no-restricted-syntax\nvar Observable = /** @class */ (function () {\n    function Observable(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    Observable.prototype.subscribe = function (f) {\n        var _this = this;\n        this.observers.push(f);\n        if (this.observers.length === 1 && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n        }\n        return {\n            unsubscribe: function () {\n                _this.observers = _this.observers.filter(function (other) { return f !== other; });\n                if (!_this.observers.length && _this.onLastUnsubscribe) {\n                    _this.onLastUnsubscribe();\n                }\n            },\n        };\n    };\n    Observable.prototype.notify = function (data) {\n        this.observers.forEach(function (observer) { return observer(data); });\n    };\n    return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    return new Observable(function (globalObservable) {\n        var subscriptions = observables.map(function (observable) {\n            return observable.subscribe(function (data) { return globalObservable.notify(data); });\n        });\n        return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n    });\n}\n//# sourceMappingURL=observable.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n    var context = {};\n    var changeObservable = new Observable();\n    var contextManager = {\n        getContext: function () { return deepClone(context); },\n        setContext: function (newContext) {\n            if (getType(newContext) === 'object') {\n                context = sanitize(newContext);\n                customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n            }\n            else {\n                contextManager.clearContext();\n            }\n            changeObservable.notify();\n        },\n        setContextProperty: function (key, property) {\n            context[key] = sanitize(property);\n            customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n            changeObservable.notify();\n        },\n        removeContextProperty: function (key) {\n            delete context[key];\n            customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n            changeObservable.notify();\n        },\n        clearContext: function () {\n            context = {};\n            customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.resetCustomerData();\n            changeObservable.notify();\n        },\n        changeObservable: changeObservable,\n    };\n    return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { Observable } from '../tools/observable';\nexport var TrackingConsent = {\n    GRANTED: 'granted',\n    NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n    var observable = new Observable();\n    return {\n        tryToInit: function (trackingConsent) {\n            if (!currentConsent) {\n                currentConsent = trackingConsent;\n            }\n        },\n        update: function (trackingConsent) {\n            currentConsent = trackingConsent;\n            observable.notify();\n        },\n        isGranted: function () {\n            return currentConsent === TrackingConsent.GRANTED;\n        },\n        observable: observable,\n    };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n    return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, _a) {\n    var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n    var listenerWithMonitor = monitor(function (event) {\n        if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n            return;\n        }\n        if (once) {\n            stop();\n        }\n        listener(event);\n    });\n    var options = passive ? { capture: capture, passive: passive } : capture;\n    // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n    var listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n    var add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n    eventNames.forEach(function (eventName) { return add.call(eventTarget, eventName, listenerWithMonitor, options); });\n    function stop() {\n        var remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n        eventNames.forEach(function (eventName) { return remove.call(eventTarget, eventName, listenerWithMonitor, options); });\n    }\n    return {\n        stop: stop,\n    };\n}\n//# sourceMappingURL=addEventListener.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n    var storageKey = buildStorageKey(productKey, customerDataType);\n    storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, function (_a) {\n        var key = _a.key;\n        if (storageKey === key) {\n            synchronizeWithStorage();\n        }\n    }));\n    contextManager.changeObservable.subscribe(dumpToStorage);\n    contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n    function synchronizeWithStorage() {\n        contextManager.setContext(getFromStorage());\n    }\n    function dumpToStorage() {\n        localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n    }\n    function getFromStorage() {\n        var rawContext = localStorage.getItem(storageKey);\n        return rawContext !== null ? JSON.parse(rawContext) : {};\n    }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n    return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n    storageListeners.map(function (listener) { return listener.stop(); });\n}\n//# sourceMappingURL=storeContextManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n    var output = '';\n    var outputBytesCount = 0;\n    return {\n        isAsync: false,\n        get isEmpty() {\n            return !output;\n        },\n        write: function (data, callback) {\n            var additionalEncodedBytesCount = computeBytesCount(data);\n            outputBytesCount += additionalEncodedBytesCount;\n            output += data;\n            if (callback) {\n                callback(additionalEncodedBytesCount);\n            }\n        },\n        finish: function (callback) {\n            callback(this.finishSync());\n        },\n        finishSync: function () {\n            var result = {\n                output: output,\n                outputBytesCount: outputBytesCount,\n                rawBytesCount: outputBytesCount,\n                pendingData: '',\n            };\n            output = '';\n            outputBytesCount = 0;\n            return result;\n        },\n        estimateEncodedBytesCount: function (data) {\n            return data.length;\n        },\n    };\n}\n//# sourceMappingURL=encoder.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nimport { startsWith } from '../utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n    var stack = [];\n    var stackProperty = tryToGetString(ex, 'stack');\n    var exString = String(ex);\n    if (stackProperty && startsWith(stackProperty, exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach(function (line) {\n            var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack: stack,\n    };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n    var parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    var submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && 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    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n    var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    var parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    var parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    var submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    var value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n    var stack = [{ url: url, column: column, line: line }];\n    var _a = tryToParseMessage(messageObj), name = _a.name, message = _a.message;\n    return {\n        name: name,\n        message: message,\n        stack: stack,\n    };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n    var _a;\n    var name;\n    var message;\n    if ({}.toString.call(messageObj) === '[object String]') {\n        ;\n        _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n    }\n    return { name: name, message: message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { noop } from '../utils/functionUtils';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    var internalFramesToSkip = 2;\n    var error = new Error();\n    var formattedStack;\n    // IE needs to throw the error to fill in the stack trace\n    if (!error.stack) {\n        try {\n            throw error;\n        }\n        catch (_a) {\n            noop();\n        }\n    }\n    callMonitored(function () {\n        var stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function toStackTraceString(stack) {\n    var result = formatErrorMessage(stack);\n    stack.stack.forEach(function (frame) {\n        var func = frame.func === '?' ? '<anonymous>' : frame.func;\n        var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n        var line = frame.line ? \":\".concat(frame.line) : '';\n        var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n        result += \"\\n  at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n    });\n    return result;\n}\nexport function formatErrorMessage(stack) {\n    return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n//# sourceMappingURL=handlingStack.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n    var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n    var isErrorInstance = isError(originalError);\n    var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n    var stack = hasUsableStack(isErrorInstance, stackTrace)\n        ? toStackTraceString(stackTrace)\n        : NO_ERROR_STACK_PRESENT_MESSAGE;\n    var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n    var type = stackTrace ? stackTrace.name : undefined;\n    var fingerprint = tryToGetFingerprint(originalError);\n    return {\n        startClocks: startClocks,\n        source: source,\n        handling: handling,\n        handlingStack: handlingStack,\n        originalError: originalError,\n        type: type,\n        message: message,\n        stack: stack,\n        causes: causes,\n        fingerprint: fingerprint,\n    };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n    // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n    // TODO rework tracekit integration to avoid scattering error building logic\n    return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n        ? stackTrace.message\n        : !isErrorInstance\n            ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError)))\n            : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n    if (stackTrace === undefined) {\n        return false;\n    }\n    if (isErrorInstance) {\n        return true;\n    }\n    // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n    // TODO rework tracekit integration to avoid generating those unusable stack\n    return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n    return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n    return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n    var currentError = error;\n    var causes = [];\n    while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n        var stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport var PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport var INTAKE_URL_PARAMETERS = ['ddsource', 'ddtags'];\n//# sourceMappingURL=intakeSites.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","export function sendToExtension(type, payload) {\n    var callback = window.__ddBrowserSdkExtensionCallback;\n    if (callback) {\n        callback({ type: type, payload: payload });\n    }\n}\n//# sourceMappingURL=sendToExtension.js.map","export function getConnectivity() {\n    var _a;\n    var navigator = window.navigator;\n    return {\n        status: navigator.onLine ? 'connected' : 'not_connected',\n        interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n        effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n    };\n}\n//# sourceMappingURL=connectivity.js.map","import { arrayFrom } from './polyfills';\nexport function removeDuplicates(array) {\n    var set = new Set();\n    array.forEach(function (item) { return set.add(item); });\n    return arrayFrom(set);\n}\nexport function removeItem(array, item) {\n    var index = array.indexOf(item);\n    if (index >= 0) {\n        array.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrayUtils.js.map","import { removeItem } from './utils/arrayUtils';\nvar BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n    var buffer = [];\n    var add = function (callback) {\n        var length = buffer.push(callback);\n        if (length > BUFFER_LIMIT) {\n            buffer.splice(0, 1);\n        }\n    };\n    var remove = function (callback) {\n        removeItem(buffer, callback);\n    };\n    var drain = function (arg) {\n        buffer.forEach(function (callback) { return callback(arg); });\n        buffer.length = 0;\n    };\n    return {\n        add: add,\n        remove: remove,\n        drain: drain,\n    };\n}\n//# sourceMappingURL=boundedBuffer.js.map","export var TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n    usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'https://d3uc069fcn7uxw.cloudfront.net',\n    'https://d20xtzwzcl0ceb.cloudfront.net',\n    'http://localhost',\n    '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nvar preStartTelemetryBuffer = createBoundedBuffer();\nvar onRawTelemetryEventCollected = function (event) {\n    preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n};\nexport function startTelemetry(telemetryService, configuration) {\n    var _a;\n    var contextProvider;\n    var observable = new Observable();\n    var alreadySentEvents = new Set();\n    var telemetryEnabled = !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n    var telemetryEnabledPerType = (_a = {},\n        _a[TelemetryType.log] = telemetryEnabled,\n        _a[TelemetryType.configuration] = telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n        _a[TelemetryType.usage] = telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n        _a);\n    var runtimeEnvInfo = getRuntimeEnvInfo();\n    onRawTelemetryEventCollected = function (rawEvent) {\n        var stringifiedEvent = jsonStringify(rawEvent);\n        if (telemetryEnabledPerType[rawEvent.type] &&\n            alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n            !alreadySentEvents.has(stringifiedEvent)) {\n            var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n            observable.notify(event_1);\n            sendToExtension('telemetry', event_1);\n            alreadySentEvents.add(stringifiedEvent);\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"5.35.1\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: combine(event, {\n                runtime_env: runtimeEnvInfo,\n                connectivity: getConnectivity(),\n                sdk_setup: \"npm\",\n            }),\n            experimental_features: arrayFrom(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: function (provider) {\n            contextProvider = provider;\n        },\n        observable: observable,\n        enabled: telemetryEnabled,\n    };\n}\nfunction getRuntimeEnvInfo() {\n    return {\n        is_local_file: window.location.protocol === 'file:',\n        is_worker: 'WorkerGlobalScope' in self,\n    };\n}\nexport function startFakeTelemetry() {\n    var events = [];\n    onRawTelemetryEventCollected = function (event) {\n        events.push(event);\n    };\n    return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n    preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n    preStartTelemetryBuffer = createBoundedBuffer();\n    onRawTelemetryEventCollected = function (event) {\n        preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n    };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    onRawTelemetryEventCollected(assign({\n        type: TelemetryType.log,\n        message: message,\n        status: \"debug\" /* StatusType.debug */,\n    }, context));\n}\nexport function addTelemetryError(e, context) {\n    onRawTelemetryEventCollected(assign({\n        type: TelemetryType.log,\n        status: \"error\" /* StatusType.error */,\n    }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.configuration,\n        configuration: configuration,\n    });\n}\nexport function addTelemetryUsage(usage) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.usage,\n        usage: usage,\n    });\n}\nexport function formatError(e) {\n    if (isError(e)) {\n        var stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n        },\n        message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e)),\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n    // We shallow clone only to prevent mutation of user data.\n    var user = assign({}, newUser);\n    var keys = ['id', 'name', 'email'];\n    keys.forEach(function (key) {\n        if (key in user) {\n            /* eslint-disable @typescript-eslint/no-base-to-string */\n            user[key] = String(user[key]);\n        }\n    });\n    return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n    var isValid = getType(newUser) === 'object';\n    if (!isValid) {\n        display.error('Unsupported user:', newUser);\n    }\n    return isValid;\n}\nexport function generateAnonymousId() {\n    return Math.floor(Math.random() * Math.pow(2, 53)).toString(36);\n}\n//# sourceMappingURL=user.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n    if (!initConfiguration.silentMultipleInit) {\n        display.error(\"\".concat(sdkName, \" is already initialized.\"));\n    }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nvar COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            if (match[1] === name) {\n                return match[2];\n            }\n        }\n        else {\n            break;\n        }\n    }\n}\nexport function findCommaSeparatedValues(rawString) {\n    var result = new Map();\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            result.set(match[1], match[2]);\n        }\n        else {\n            break;\n        }\n    }\n    return result;\n}\nexport function safeTruncate(candidate, length, suffix) {\n    if (suffix === void 0) { suffix = ''; }\n    var lastChar = candidate.charCodeAt(length - 1);\n    var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength) {\n        return candidate;\n    }\n    return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n//# sourceMappingURL=stringUtils.js.map","import { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core';\nexport function createCustomVitalsState() {\n    var vitalsByName = new Map();\n    var vitalsByReference = new WeakMap();\n    return { vitalsByName: vitalsByName, vitalsByReference: vitalsByReference };\n}\nexport function startVitalCollection(lifeCycle, pageStateHistory, customVitalsState) {\n    function isValid(vital) {\n        return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.duration);\n    }\n    function addDurationVital(vital) {\n        if (isValid(vital)) {\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital, true));\n        }\n    }\n    return {\n        addDurationVital: addDurationVital,\n        startDurationVital: function (name, options) {\n            if (options === void 0) { options = {}; }\n            return startDurationVital(customVitalsState, name, options);\n        },\n        stopDurationVital: function (nameOrRef, options) {\n            if (options === void 0) { options = {}; }\n            stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options);\n        },\n    };\n}\nexport function startDurationVital(_a, name, options) {\n    var vitalsByName = _a.vitalsByName, vitalsByReference = _a.vitalsByReference;\n    if (options === void 0) { options = {}; }\n    var vital = {\n        name: name,\n        startClocks: clocksNow(),\n        context: options.context,\n        description: options.description,\n    };\n    // To avoid leaking implementation details of the vital, we return a reference to it.\n    var reference = { __dd_vital_reference: true };\n    vitalsByName.set(name, vital);\n    // To avoid memory leaks caused by the creation of numerous references (e.g., from improper useEffect implementations), we use a WeakMap.\n    vitalsByReference.set(reference, vital);\n    return reference;\n}\nexport function stopDurationVital(stopCallback, _a, nameOrRef, options) {\n    var vitalsByName = _a.vitalsByName, vitalsByReference = _a.vitalsByReference;\n    if (options === void 0) { options = {}; }\n    var vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef);\n    if (!vitalStart) {\n        return;\n    }\n    stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()));\n    if (typeof nameOrRef === 'string') {\n        vitalsByName.delete(nameOrRef);\n    }\n    else {\n        vitalsByReference.delete(nameOrRef);\n    }\n}\nfunction buildDurationVital(vitalStart, startClocks, stopOptions, stopClocks) {\n    var _a;\n    return {\n        name: vitalStart.name,\n        type: \"duration\" /* VitalType.DURATION */,\n        startClocks: startClocks,\n        duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n        context: combine(vitalStart.context, stopOptions.context),\n        description: (_a = stopOptions.description) !== null && _a !== void 0 ? _a : vitalStart.description,\n    };\n}\nfunction processVital(vital, valueComputedBySdk) {\n    var rawRumEvent = {\n        date: vital.startClocks.timeStamp,\n        vital: {\n            id: generateUUID(),\n            type: vital.type,\n            name: vital.name,\n            duration: toServerDuration(vital.duration),\n            description: vital.description,\n        },\n        type: \"vital\" /* RumEventType.VITAL */,\n    };\n    if (valueComputedBySdk) {\n        rawRumEvent._dd = {\n            vital: {\n                computed_value: true,\n            },\n        };\n    }\n    return {\n        rawRumEvent: rawRumEvent,\n        startTime: vital.startClocks.relative,\n        customerContext: vital.context,\n        domainContext: {},\n    };\n}\n//# sourceMappingURL=vitalCollection.js.map","import { endsWith, includes } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n    var eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getCapabilities: function () {\n            var _a;\n            return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n        },\n        getPrivacyLevel: function () {\n            var _a;\n            return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n        },\n        getAllowedWebViewHosts: function () {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send: function (eventType, event, viewId) {\n            var view = viewId ? { id: viewId } : undefined;\n            eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event, view: view }));\n        },\n    };\n}\nexport function bridgeSupports(capability) {\n    var bridge = getEventBridge();\n    return !!bridge && includes(bridge.getCapabilities(), capability);\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    var bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { arrayFrom, startsWith } from './utils/polyfills';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do:    `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n *  instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n *    console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n *    onPostCall((result) => {\n *      console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n *    })\n *  })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, _a) {\n    var _b = _a === void 0 ? {} : _a, computeHandlingStack = _b.computeHandlingStack;\n    var original = targetPrototype[method];\n    if (typeof original !== 'function') {\n        if (method in targetPrototype && startsWith(method, 'on')) {\n            original = noop;\n        }\n        else {\n            return { stop: noop };\n        }\n    }\n    var stopped = false;\n    var instrumentation = function () {\n        if (stopped) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n            return original.apply(this, arguments);\n        }\n        var parameters = arrayFrom(arguments);\n        var postCallCallback;\n        callMonitored(onPreCall, null, [\n            {\n                target: this,\n                parameters: parameters,\n                onPostCall: function (callback) {\n                    postCallCallback = callback;\n                },\n                handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n            },\n        ]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n        var result = original.apply(this, parameters);\n        if (postCallCallback) {\n            callMonitored(postCallCallback, null, [result]);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return result;\n    };\n    targetPrototype[method] = instrumentation;\n    return {\n        stop: function () {\n            stopped = true;\n            // If the instrumentation has been removed by a third party, keep the last one\n            if (targetPrototype[method] === instrumentation) {\n                targetPrototype[method] = original;\n            }\n        },\n    };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n    var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    var stoppedInstrumentation = noop;\n    var instrumentation = function (target, value) {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(function () {\n            if (instrumentation !== stoppedInstrumentation) {\n                after(target, value);\n            }\n        }, 0);\n    };\n    var instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(targetPrototype, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: function () {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(targetPrototype, property, originalDescriptor);\n            }\n            instrumentation = stoppedInstrumentation;\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { getInitCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n    return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n    var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n    var value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","export var SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport var SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport var SessionPersistence = {\n    COOKIE: 'cookie',\n    LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export var SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport var SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n    return (!!sessionString &&\n        (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateAnonymousId } from '../user';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport var EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState) {\n    var expiredSessionState = {\n        isExpired: EXPIRED,\n    };\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING)) {\n        if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n            expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n        }\n        else {\n            expiredSessionState.anonymousId = generateAnonymousId();\n        }\n    }\n    return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n    return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n    return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n    return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n    // created and expire can be undefined for versions which was not storing them\n    // these checks could be removed when older versions will not be available/live anymore\n    return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n        (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n    session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n    return (objectEntries(session)\n        // we use `aid` as a key for anonymousId\n        .map(function (_a) {\n        var key = _a[0], value = _a[1];\n        return (key === 'anonymousId' ? \"aid=\".concat(value) : \"\".concat(key, \"=\").concat(value));\n    })\n        .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n    var session = {};\n    if (isValidSessionString(sessionString)) {\n        sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n            var matches = SESSION_ENTRY_REGEXP.exec(entry);\n            if (matches !== null) {\n                var key = matches[1], value = matches[2];\n                if (key === 'aid') {\n                    // we use `aid` as a key for anonymousId\n                    session.anonymousId = value;\n                }\n                else {\n                    session[key] = value;\n                }\n            }\n        });\n    }\n    return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../../tools/experimentalFeatures';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n    var cookieOptions = buildCookieOptions(initConfiguration);\n    return areCookiesAuthorized(cookieOptions) ? { type: SessionPersistence.COOKIE, cookieOptions: cookieOptions } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n    var cookieStore = {\n        /**\n         * Lock strategy allows mitigating issues due to concurrent access to cookie.\n         * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n         */\n        isLockEnabled: isChromium(),\n        persistSession: persistSessionCookie(cookieOptions),\n        retrieveSession: retrieveSessionCookie,\n        expireSession: function (sessionState) { return expireSessionCookie(cookieOptions, sessionState); },\n    };\n    tryOldCookiesMigration(cookieStore);\n    return cookieStore;\n}\nfunction persistSessionCookie(options) {\n    return function (session) {\n        setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n    };\n}\nfunction expireSessionCookie(options, sessionState) {\n    var expiredSessionState = getExpiredSessionState(sessionState);\n    setCookie(SESSION_STORE_KEY, toSessionString(expiredSessionState), isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING)\n        ? SESSION_COOKIE_EXPIRATION_DELAY\n        : SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n    var sessionString = getCookie(SESSION_STORE_KEY);\n    var sessionState = toSessionState(sessionString);\n    return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n    var cookieOptions = {};\n    cookieOptions.secure =\n        !!initConfiguration.useSecureSessionCookie ||\n            !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n            !!initConfiguration.useCrossSiteSessionCookie;\n    cookieOptions.crossSite =\n        !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n    cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n    try {\n        var id = generateUUID();\n        var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n        localStorage.setItem(testKey, id);\n        var retrievedId = localStorage.getItem(testKey);\n        localStorage.removeItem(testKey);\n        return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n    }\n    catch (_a) {\n        return undefined;\n    }\n}\nexport function initLocalStorageStrategy() {\n    return {\n        isLockEnabled: false,\n        persistSession: persistInLocalStorage,\n        retrieveSession: retrieveSessionFromLocalStorage,\n        expireSession: expireSessionFromLocalStorage,\n    };\n}\nfunction persistInLocalStorage(sessionState) {\n    localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n    var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n    return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState) {\n    persistInLocalStorage(getExpiredSessionState(previousSessionState));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n    var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n    return {\n        build: function (api, payload) {\n            var parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n            return buildUrlWithParameters(parameters);\n        },\n        urlPrefix: buildUrlWithParameters(''),\n        trackType: trackType,\n    };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n    var path = \"/api/v2/\".concat(trackType);\n    var proxy = initConfiguration.proxy;\n    if (typeof proxy === 'string') {\n        var normalizedProxyUrl_1 = normalizeUrl(proxy);\n        return function (parameters) { return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters))); };\n    }\n    if (typeof proxy === 'function') {\n        return function (parameters) { return proxy({ path: path, parameters: parameters }); };\n    }\n    var host = buildEndpointHost(trackType, initConfiguration);\n    return function (parameters) { return \"https://\".concat(host).concat(path, \"?\").concat(parameters); };\n}\nfunction buildEndpointHost(trackType, initConfiguration) {\n    var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n    if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n        return PCI_INTAKE_HOST_US1;\n    }\n    if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n        return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n    }\n    if (site === INTAKE_SITE_FED_STAGING) {\n        return \"http-intake.logs.\".concat(site);\n    }\n    var domainParts = site.split('.');\n    var extension = domainParts.pop();\n    return \"browser-intake-\".concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, trackType, configurationTags, api, _b) {\n    var clientToken = _a.clientToken, internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n    var retry = _b.retry, encoding = _b.encoding;\n    var tags = [\"sdk_version:\".concat(\"5.35.1\"), \"api:\".concat(api)].concat(configurationTags);\n    if (retry) {\n        tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n    }\n    var parameters = [\n        'ddsource=browser',\n        \"ddtags=\".concat(encodeURIComponent(tags.join(','))),\n        \"dd-api-key=\".concat(clientToken),\n        \"dd-evp-origin-version=\".concat(encodeURIComponent(\"5.35.1\")),\n        'dd-evp-origin=browser',\n        \"dd-request-id=\".concat(generateUUID()),\n    ];\n    if (encoding) {\n        parameters.push(\"dd-evp-encoding=\".concat(encoding));\n    }\n    if (trackType === 'rum') {\n        parameters.push(\"batch_time=\".concat(timeStampNow()));\n    }\n    if (internalAnalyticsSubdomain) {\n        parameters.reverse();\n    }\n    return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n    var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n    var tags = [];\n    if (env) {\n        tags.push(buildTag('env', env));\n    }\n    if (service) {\n        tags.push(buildTag('service', service));\n    }\n    if (version) {\n        tags.push(buildTag('version', version));\n    }\n    if (datacenter) {\n        tags.push(buildTag('datacenter', datacenter));\n    }\n    return tags;\n}\nexport function buildTag(key, rawValue) {\n    // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n    // that the backend may not follow the exact same rules, so we only want to display an informal\n    // warning.\n    var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n    if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n        display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized. \").concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/tagging/#defining-tags\"));\n    }\n    // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n    // by forging a value containing commas.\n    var sanitizedValue = rawValue.replace(/,/g, '_');\n    return \"\".concat(key, \":\").concat(sanitizedValue);\n}\nfunction hasForbiddenCharacters(rawValue) {\n    // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n    // Todo: Remove the try/catch when dropping IE11.\n    if (!supportUnicodePropertyEscapes()) {\n        return false;\n    }\n    // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n    // p{Ll} matches a lowercase letter.\n    // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n    // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n    return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n    try {\n        new RegExp('[\\\\p{Ll}]', 'u');\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\n//# sourceMappingURL=tags.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport var TraceContextInjection = {\n    ALL: 'all',\n    SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n    if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n        display.error(\"\".concat(tagName, \" must be defined as a string\"));\n        return false;\n    }\n    return true;\n}\nfunction isDatadogSite(site) {\n    if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n        display.error(\"Site should be a valid Datadog site. \".concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/site/.\"));\n        return false;\n    }\n    return true;\n}\nexport function isSampleRate(sampleRate, name) {\n    if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n        display.error(\"\".concat(name, \" Sample Rate should be a number between 0 and 100\"));\n        return false;\n    }\n    return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c, _d, _e;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (!isDatadogSite(initConfiguration.site) ||\n        !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n        !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n        !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n        !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n        !isString(initConfiguration.version, 'Version') ||\n        !isString(initConfiguration.env, 'Env') ||\n        !isString(initConfiguration.service, 'Service')) {\n        return;\n    }\n    if (initConfiguration.trackingConsent !== undefined &&\n        !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n        display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n        return;\n    }\n    return assign({\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n        sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n        service: initConfiguration.service || undefined,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n        trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n        storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: (30 * ONE_SECOND),\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n    }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n    return {\n        session_sample_rate: initConfiguration.sessionSampleRate,\n        telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n        telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n        use_before_send: !!initConfiguration.beforeSend,\n        use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n        use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n        use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n        use_proxy: !!initConfiguration.proxy,\n        silent_multiple_init: initConfiguration.silentMultipleInit,\n        track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n        session_persistence: initConfiguration.sessionPersistence,\n        allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n        store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n        allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n        tracking_consent: initConfiguration.trackingConsent,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { startsWith } from './utils/polyfills';\nimport { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n    var itemType = getType(item);\n    return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith) {\n    if (useStartsWith === void 0) { useStartsWith = false; }\n    return list.some(function (item) {\n        try {\n            if (typeof item === 'function') {\n                return item(value);\n            }\n            else if (item instanceof RegExp) {\n                return item.test(value);\n            }\n            else if (typeof item === 'string') {\n                return useStartsWith ? startsWith(value, item) : item === value;\n            }\n        }\n        catch (e) {\n            display.error(e);\n        }\n        return false;\n    });\n}\n//# sourceMappingURL=matchOption.js.map","export function getCrypto() {\n    // TODO: remove msCrypto when IE11 support is dropped\n    return window.crypto || window.msCrypto;\n}\n//# sourceMappingURL=crypto.js.map","import { objectEntries, shallowClone, assign, find, getType, isMatchOption, matchList, TraceContextInjection, } from '@datadog/browser-core';\nimport { getCrypto } from '../../browser/crypto';\nimport { createSpanIdentifier, createTraceIdentifier, toPaddedHexadecimalString } from './identifier';\nimport { isTraceSampled } from './sampler';\nexport function isTracingOption(item) {\n    var expectedItem = item;\n    return (getType(expectedItem) === 'object' &&\n        isMatchOption(expectedItem.match) &&\n        Array.isArray(expectedItem.propagatorTypes));\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n    if (context.status === 0 && !context.isAborted) {\n        context.traceId = undefined;\n        context.spanId = undefined;\n        context.traceSampled = undefined;\n    }\n}\nexport function startTracer(configuration, sessionManager) {\n    return {\n        clearTracingIfNeeded: clearTracingIfNeeded,\n        traceFetch: function (context) {\n            return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n                var _a;\n                if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n                    context.input = new Request(context.input);\n                    Object.keys(tracingHeaders).forEach(function (key) {\n                        ;\n                        context.input.headers.append(key, tracingHeaders[key]);\n                    });\n                }\n                else {\n                    context.init = shallowClone(context.init);\n                    var headers_1 = [];\n                    if (context.init.headers instanceof Headers) {\n                        context.init.headers.forEach(function (value, key) {\n                            headers_1.push([key, value]);\n                        });\n                    }\n                    else if (Array.isArray(context.init.headers)) {\n                        context.init.headers.forEach(function (header) {\n                            headers_1.push(header);\n                        });\n                    }\n                    else if (context.init.headers) {\n                        Object.keys(context.init.headers).forEach(function (key) {\n                            headers_1.push([key, context.init.headers[key]]);\n                        });\n                    }\n                    context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n                }\n            });\n        },\n        traceXhr: function (context, xhr) {\n            return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n                Object.keys(tracingHeaders).forEach(function (name) {\n                    xhr.setRequestHeader(name, tracingHeaders[name]);\n                });\n            });\n        },\n    };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n    if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n        return;\n    }\n    var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {\n        return matchList([tracingOption.match], context.url, true);\n    });\n    if (!tracingOption) {\n        return;\n    }\n    var traceId = createTraceIdentifier();\n    context.traceSampled = isTraceSampled(traceId, configuration.traceSampleRate);\n    var shouldInjectHeaders = context.traceSampled || configuration.traceContextInjection === TraceContextInjection.ALL;\n    if (!shouldInjectHeaders) {\n        return;\n    }\n    context.traceId = traceId;\n    context.spanId = createSpanIdentifier();\n    inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n    return getCrypto() !== undefined;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n    var tracingHeaders = {};\n    propagatorTypes.forEach(function (propagatorType) {\n        switch (propagatorType) {\n            case 'datadog': {\n                assign(tracingHeaders, {\n                    'x-datadog-origin': 'rum',\n                    'x-datadog-parent-id': spanId.toString(),\n                    'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n                    'x-datadog-trace-id': traceId.toString(),\n                });\n                break;\n            }\n            // https://www.w3.org/TR/trace-context/\n            case 'tracecontext': {\n                assign(tracingHeaders, {\n                    traceparent: \"00-0000000000000000\".concat(toPaddedHexadecimalString(traceId), \"-\").concat(toPaddedHexadecimalString(spanId), \"-0\").concat(traceSampled ? '1' : '0'),\n                });\n                break;\n            }\n            // https://github.com/openzipkin/b3-propagation\n            case 'b3': {\n                assign(tracingHeaders, {\n                    b3: \"\".concat(toPaddedHexadecimalString(traceId), \"-\").concat(toPaddedHexadecimalString(spanId), \"-\").concat(traceSampled ? '1' : '0'),\n                });\n                break;\n            }\n            case 'b3multi': {\n                assign(tracingHeaders, {\n                    'X-B3-TraceId': toPaddedHexadecimalString(traceId),\n                    'X-B3-SpanId': toPaddedHexadecimalString(spanId),\n                    'X-B3-Sampled': traceSampled ? '1' : '0',\n                });\n                break;\n            }\n        }\n    });\n    return tracingHeaders;\n}\n//# sourceMappingURL=tracer.js.map","import { performDraw } from '@datadog/browser-core';\nexport function isTraceSampled(identifier, sampleRate) {\n    // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n    // customers willing to ingest all traces.\n    if (sampleRate === 100) {\n        return true;\n    }\n    if (sampleRate === 0) {\n        return false;\n    }\n    // For simplicity, we don't use consistent sampling for browser that don't support BigInt\n    // TODO: remove this when all browser we support have BigInt support\n    if (typeof identifier !== 'bigint') {\n        return performDraw(sampleRate);\n    }\n    // Offer consistent sampling for the same trace id across different environments. The rule is:\n    //\n    //   (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n    //\n    // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n    // modulo would be incorrect. Thus, we are using BigInts here.\n    //\n    // Implementation in other languages:\n    // * Go     https://github.com/DataDog/dd-trace-go/blob/ec6fbb1f2d517b7b8e69961052adf7136f3af773/ddtrace/tracer/sampler.go#L86-L91\n    // * Python https://github.com/DataDog/dd-trace-py/blob/0cee2f066fb6e79aa15947c1514c0f406dea47c5/ddtrace/sampling_rule.py#L197\n    // * Ruby   https://github.com/DataDog/dd-trace-rb/blob/1a6e255cdcb7e7e22235ea5955f90f6dfa91045d/lib/datadog/tracing/sampling/rate_sampler.rb#L42\n    // * C++    https://github.com/DataDog/dd-trace-cpp/blob/159629edc438ae45f2bb318eb7bd51abd05e94b5/src/datadog/trace_sampler.cpp#L58\n    // * Java   https://github.com/DataDog/dd-trace-java/blob/896dd6b380533216e0bdee59614606c8272d313e/dd-trace-core/src/main/java/datadog/trace/common/sampling/DeterministicSampler.java#L48\n    //\n    // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n    // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n    // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n    // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n    // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n    var knuthFactor = BigInt('1111111111111111111');\n    var twoPow64 = BigInt('0x10000000000000000'); // 2n ** 64n\n    var hash = (identifier * knuthFactor) % twoPow64;\n    return Number(hash) <= (sampleRate / 100) * Number(twoPow64);\n}\n//# sourceMappingURL=sampler.js.map","import { getType, arrayFrom, isMatchOption, serializeConfiguration, assign, DefaultPrivacyLevel, TraceContextInjection, display, objectHasValue, validateAndBuildConfiguration, isSampleRate, isNumber, } from '@datadog/browser-core';\nimport { isTracingOption } from '../tracing/tracer';\nexport var DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n    var _a, _b, _c;\n    if (!initConfiguration.applicationId) {\n        display.error('Application ID is not configured, no RUM data will be collected.');\n        return;\n    }\n    if (!isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n        !isSampleRate(initConfiguration.traceSampleRate, 'Trace')) {\n        return;\n    }\n    if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n        display.error('Excluded Activity Urls should be an array');\n        return;\n    }\n    var allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n    if (!allowedTracingUrls) {\n        return;\n    }\n    var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n    if (!baseConfiguration) {\n        return;\n    }\n    var sessionReplaySampleRate = (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0;\n    return assign({\n        applicationId: initConfiguration.applicationId,\n        version: initConfiguration.version || undefined,\n        actionNameAttribute: initConfiguration.actionNameAttribute,\n        sessionReplaySampleRate: sessionReplaySampleRate,\n        startSessionReplayRecordingManually: initConfiguration.startSessionReplayRecordingManually !== undefined\n            ? !!initConfiguration.startSessionReplayRecordingManually\n            : sessionReplaySampleRate === 0,\n        traceSampleRate: (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : 100,\n        rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,\n        allowedTracingUrls: allowedTracingUrls,\n        excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],\n        workerUrl: initConfiguration.workerUrl,\n        compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n        trackUserInteractions: !!initConfiguration.trackUserInteractions,\n        trackViewsManually: !!initConfiguration.trackViewsManually,\n        trackResources: !!initConfiguration.trackResources,\n        trackLongTasks: !!initConfiguration.trackLongTasks,\n        subdomain: initConfiguration.subdomain,\n        defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n            ? initConfiguration.defaultPrivacyLevel\n            : DefaultPrivacyLevel.MASK,\n        enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n        customerDataTelemetrySampleRate: 1,\n        traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n            ? initConfiguration.traceContextInjection\n            : TraceContextInjection.ALL,\n        plugins: initConfiguration.plugins || [],\n    }, baseConfiguration);\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n    if (initConfiguration.allowedTracingUrls === undefined) {\n        return [];\n    }\n    if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n        display.error('Allowed Tracing URLs should be an array');\n        return;\n    }\n    if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n        display.error('Service needs to be configured when tracing is enabled');\n        return;\n    }\n    // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n    var tracingOptions = [];\n    initConfiguration.allowedTracingUrls.forEach(function (option) {\n        if (isMatchOption(option)) {\n            tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES });\n        }\n        else if (isTracingOption(option)) {\n            tracingOptions.push(option);\n        }\n        else {\n            display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n        }\n    });\n    return tracingOptions;\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n    var usedTracingPropagators = new Set();\n    if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n        configuration.allowedTracingUrls.forEach(function (option) {\n            if (isMatchOption(option)) {\n                DEFAULT_PROPAGATOR_TYPES.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n            }\n            else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n                // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n                option.propagatorTypes.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n            }\n        });\n    }\n    return arrayFrom(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n    var _a;\n    var baseSerializedConfiguration = serializeConfiguration(configuration);\n    return assign({\n        session_replay_sample_rate: configuration.sessionReplaySampleRate,\n        start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n        trace_sample_rate: configuration.traceSampleRate,\n        trace_context_injection: configuration.traceContextInjection,\n        action_name_attribute: configuration.actionNameAttribute,\n        use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n        selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n        default_privacy_level: configuration.defaultPrivacyLevel,\n        enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n        use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n        use_worker_url: !!configuration.workerUrl,\n        compress_intake_requests: configuration.compressIntakeRequests,\n        track_views_manually: configuration.trackViewsManually,\n        track_user_interactions: configuration.trackUserInteractions,\n        track_resources: configuration.trackResources,\n        track_long_task: configuration.trackLongTasks,\n        plugins: (_a = configuration.plugins) === null || _a === void 0 ? void 0 : _a.map(function (plugin) { var _a; return assign({ name: plugin.name }, (_a = plugin.getConfigurationTelemetry) === null || _a === void 0 ? void 0 : _a.call(plugin)); }),\n    }, baseSerializedConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { display, addEventListener, assign } from '@datadog/browser-core';\nexport var REMOTE_CONFIGURATION_URL = 'https://d3uc069fcn7uxw.cloudfront.net/configuration';\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n    fetchRemoteConfiguration(initConfiguration, function (remoteInitConfiguration) {\n        callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration));\n    });\n}\nexport function applyRemoteConfiguration(initConfiguration, remoteInitConfiguration) {\n    return assign({}, initConfiguration, remoteInitConfiguration);\n}\nexport function fetchRemoteConfiguration(configuration, callback) {\n    var xhr = new XMLHttpRequest();\n    addEventListener(configuration, xhr, 'load', function () {\n        if (xhr.status === 200) {\n            callback(JSON.parse(xhr.responseText));\n        }\n        else {\n            displayRemoteConfigurationFetchingError();\n        }\n    });\n    addEventListener(configuration, xhr, 'error', function () {\n        displayRemoteConfigurationFetchingError();\n    });\n    xhr.open('GET', \"\".concat(REMOTE_CONFIGURATION_URL, \"/\").concat(encodeURIComponent(configuration.remoteConfigurationId), \".json\"));\n    xhr.send();\n}\nfunction displayRemoteConfigurationFetchingError() {\n    display.error('Error fetching the remote configuration.');\n}\n//# sourceMappingURL=remoteConfiguration.js.map","import { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n    HIDDEN: 'visibility_hidden',\n    UNLOADING: 'before_unload',\n    PAGEHIDE: 'page_hide',\n    FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n    return new Observable(function (observable) {\n        var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], function (event) {\n            if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n                /**\n                 * Only event that guarantee to fire on mobile devices when the page transitions to background state\n                 * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n                 */\n                observable.notify({ reason: PageExitReason.HIDDEN });\n            }\n            else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n                /**\n                 * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n                 * Allow to collect events happening between hidden and frozen state.\n                 */\n                observable.notify({ reason: PageExitReason.FROZEN });\n            }\n        }, { capture: true }).stop;\n        var stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n            observable.notify({ reason: PageExitReason.UNLOADING });\n        }).stop;\n        return function () {\n            stopListeners();\n            stopBeforeUnloadListener();\n        };\n    });\n}\nexport function isPageExitReason(reason) {\n    return includes(objectValues(PageExitReason), reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n    var MutationObserver = getMutationObserverConstructor();\n    return new Observable(function (observable) {\n        if (!MutationObserver) {\n            return;\n        }\n        var observer = new MutationObserver(monitor(function () { return observable.notify(); }));\n        observer.observe(document, {\n            attributes: true,\n            characterData: true,\n            childList: true,\n            subtree: true,\n        });\n        return function () { return observer.disconnect(); };\n    });\n}\nexport function getMutationObserverConstructor() {\n    var constructor;\n    var browserWindow = window;\n    // Angular uses Zone.js to provide a context persisting across async tasks.  Zone.js replaces the\n    // global MutationObserver constructor with a patched version to support the context propagation.\n    // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n    // component: on some occasions, the callback is being called in an infinite loop, causing the\n    // page to freeze (even if the callback is completely empty).\n    //\n    // To work around this issue, we try to get the original MutationObserver constructor stored by\n    // Zone.js.\n    //\n    // [1] https://github.com/angular/angular/issues/26948\n    // [2] https://github.com/angular/angular/issues/31712\n    if (browserWindow.Zone) {\n        // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n        //\n        // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n        constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n        if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n            // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n            // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n            // instance in its properties[4]. Let's get the original MutationObserver constructor from\n            // there.\n            //\n            // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n            var patchedInstance = new browserWindow.MutationObserver(noop);\n            var originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n            constructor = originalInstance && originalInstance.constructor;\n        }\n    }\n    if (!constructor) {\n        constructor = browserWindow.MutationObserver;\n    }\n    return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","export var ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n    var eventCount = 0;\n    var allowNextEvent = false;\n    return {\n        isLimitReached: function () {\n            if (eventCount === 0) {\n                setTimeout(function () {\n                    eventCount = 0;\n                }, ONE_MINUTE);\n            }\n            eventCount += 1;\n            if (eventCount <= limit || allowNextEvent) {\n                allowNextEvent = false;\n                return false;\n            }\n            if (eventCount === limit + 1) {\n                allowNextEvent = true;\n                try {\n                    onLimitReached({\n                        message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n                        source: ErrorSource.AGENT,\n                        startClocks: clocksNow(),\n                    });\n                }\n                finally {\n                    allowNextEvent = false;\n                }\n            }\n            return true;\n        },\n    };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n    var clone = deepClone(object);\n    var result = modifier(clone);\n    objectEntries(modifiableFieldPaths).forEach(function (_a) {\n        var fieldPath = _a[0], fieldType = _a[1];\n        var newValue = get(clone, fieldPath);\n        var newType = getType(newValue);\n        if (newType === fieldType) {\n            set(object, fieldPath, sanitize(newValue));\n        }\n        else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n            set(object, fieldPath, {});\n        }\n    });\n    return result;\n}\nfunction get(object, path) {\n    var current = object;\n    for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n        var field = _a[_i];\n        if (!isValidObjectContaining(current, field)) {\n            return;\n        }\n        current = current[field];\n    }\n    return current;\n}\nfunction set(object, path, value) {\n    var current = object;\n    var fields = path.split('.');\n    for (var i = 0; i < fields.length; i += 1) {\n        var field = fields[i];\n        if (!isValidObject(current)) {\n            return;\n        }\n        if (i !== fields.length - 1) {\n            current = current[field];\n        }\n        else {\n            current[field] = value;\n        }\n    }\n}\nfunction isValidObject(object) {\n    return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n    return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}\n//# sourceMappingURL=limitModification.js.map","// eslint-disable-next-line no-restricted-syntax\nvar AbstractLifeCycle = /** @class */ (function () {\n    function AbstractLifeCycle() {\n        this.callbacks = {};\n    }\n    AbstractLifeCycle.prototype.notify = function (eventType, data) {\n        var eventCallbacks = this.callbacks[eventType];\n        if (eventCallbacks) {\n            eventCallbacks.forEach(function (callback) { return callback(data); });\n        }\n    };\n    AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n        var _this = this;\n        if (!this.callbacks[eventType]) {\n            this.callbacks[eventType] = [];\n        }\n        this.callbacks[eventType].push(callback);\n        return {\n            unsubscribe: function () {\n                _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n            },\n        };\n    };\n    return AbstractLifeCycle;\n}());\nexport { AbstractLifeCycle };\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nexport function createValueHistory(_a) {\n    var expireDelay = _a.expireDelay, maxEntries = _a.maxEntries;\n    var entries = [];\n    var clearOldValuesInterval = setInterval(function () { return clearOldValues(); }, CLEAR_OLD_VALUES_INTERVAL);\n    function clearOldValues() {\n        var oldTimeThreshold = relativeNow() - expireDelay;\n        while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n            entries.pop();\n        }\n    }\n    /**\n     * Add a value to the history associated with a start time. Returns a reference to this newly\n     * added entry that can be removed or closed.\n     */\n    function add(value, startTime) {\n        var entry = {\n            value: value,\n            startTime: startTime,\n            endTime: END_OF_TIMES,\n            remove: function () {\n                removeItem(entries, entry);\n            },\n            close: function (endTime) {\n                entry.endTime = endTime;\n            },\n        };\n        if (maxEntries && entries.length >= maxEntries) {\n            entries.pop();\n        }\n        entries.unshift(entry);\n        return entry;\n    }\n    /**\n     * Return the latest value that was active during `startTime`, or the currently active value\n     * if no `startTime` is provided. This method assumes that entries are not overlapping.\n     *\n     * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n     */\n    function find(startTime, options) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        if (options === void 0) { options = { returnInactive: false }; }\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.startTime <= startTime) {\n                if (options.returnInactive || startTime <= entry.endTime) {\n                    return entry.value;\n                }\n                break;\n            }\n        }\n    }\n    /**\n     * Helper function to close the currently active value, if any. This method assumes that entries\n     * are not overlapping.\n     */\n    function closeActive(endTime) {\n        var latestEntry = entries[0];\n        if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n            latestEntry.close(endTime);\n        }\n    }\n    /**\n     * Return all values with an active period overlapping with the duration,\n     * or all values that were active during `startTime` if no duration is provided,\n     * or all currently active values if no `startTime` is provided.\n     */\n    function findAll(startTime, duration) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        if (duration === void 0) { duration = 0; }\n        var endTime = addDuration(startTime, duration);\n        return entries\n            .filter(function (entry) { return entry.startTime <= endTime && startTime <= entry.endTime; })\n            .map(function (entry) { return entry.value; });\n    }\n    /**\n     * Remove all entries from this collection.\n     */\n    function reset() {\n        entries = [];\n    }\n    /**\n     * Stop internal garbage collection of past entries.\n     */\n    function stop() {\n        clearInterval(clearOldValuesInterval);\n    }\n    return { add: add, find: find, closeActive: closeActive, findAll: findAll, reset: reset, stop: stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { addTelemetryDebug, elapsed, getPathName, includes, isValidUrl, toServerDuration, isIntakeUrl, } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [\n    [\"document\" /* ResourceType.DOCUMENT */, function (initiatorType) { return FAKE_INITIAL_DOCUMENT === initiatorType; }],\n    [\"xhr\" /* ResourceType.XHR */, function (initiatorType) { return 'xmlhttprequest' === initiatorType; }],\n    [\"fetch\" /* ResourceType.FETCH */, function (initiatorType) { return 'fetch' === initiatorType; }],\n    [\"beacon\" /* ResourceType.BEACON */, function (initiatorType) { return 'beacon' === initiatorType; }],\n    [\"css\" /* ResourceType.CSS */, function (_, path) { return /\\.css$/i.test(path); }],\n    [\"js\" /* ResourceType.JS */, function (_, path) { return /\\.js$/i.test(path); }],\n    [\n        \"image\" /* ResourceType.IMAGE */,\n        function (initiatorType, path) {\n            return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n        },\n    ],\n    [\"font\" /* ResourceType.FONT */, function (_, path) { return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null; }],\n    [\n        \"media\" /* ResourceType.MEDIA */,\n        function (initiatorType, path) {\n            return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n        },\n    ],\n];\nexport function computeResourceEntryType(entry) {\n    var url = entry.name;\n    if (!isValidUrl(url)) {\n        addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(entry.name, \"\\\"\"));\n        return \"other\" /* ResourceType.OTHER */;\n    }\n    var path = getPathName(url);\n    for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n        var _a = RESOURCE_TYPES_1[_i], type = _a[0], isType = _a[1];\n        if (isType(entry.initiatorType, path)) {\n            return type;\n        }\n    }\n    return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder() {\n    var numbers = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        numbers[_i] = arguments[_i];\n    }\n    for (var i = 1; i < numbers.length; i += 1) {\n        if (numbers[i - 1] > numbers[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function isResourceEntryRequestType(entry) {\n    return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';\n}\nexport function computeResourceEntryDuration(entry) {\n    var duration = entry.duration, startTime = entry.startTime, responseEnd = entry.responseEnd;\n    // Safari duration is always 0 on timings blocked by cross origin policies.\n    if (duration === 0 && startTime < responseEnd) {\n        return toServerDuration(elapsed(startTime, responseEnd));\n    }\n    return toServerDuration(duration);\n}\nexport function computeResourceEntryDetails(entry) {\n    if (!hasValidResourceEntryTimings(entry)) {\n        return undefined;\n    }\n    var startTime = entry.startTime, fetchStart = entry.fetchStart, workerStart = entry.workerStart, redirectStart = entry.redirectStart, redirectEnd = entry.redirectEnd, domainLookupStart = entry.domainLookupStart, domainLookupEnd = entry.domainLookupEnd, connectStart = entry.connectStart, secureConnectionStart = entry.secureConnectionStart, connectEnd = entry.connectEnd, requestStart = entry.requestStart, responseStart = entry.responseStart, responseEnd = entry.responseEnd;\n    var details = {\n        download: formatTiming(startTime, responseStart, responseEnd),\n        first_byte: formatTiming(startTime, requestStart, responseStart),\n    };\n    // Make sure a worker processing time is recorded\n    if (0 < workerStart && workerStart < fetchStart) {\n        details.worker = formatTiming(startTime, workerStart, fetchStart);\n    }\n    // Make sure a connection occurred\n    if (fetchStart < connectEnd) {\n        details.connect = formatTiming(startTime, connectStart, connectEnd);\n        // Make sure a secure connection occurred\n        if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n            details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n        }\n    }\n    // Make sure a domain lookup occurred\n    if (fetchStart < domainLookupEnd) {\n        details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n    }\n    // Make sure a redirection occurred\n    if (startTime < redirectEnd) {\n        details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n    }\n    return details;\n}\n/**\n * Entries with negative duration are unexpected and should be dismissed. The intake will ignore RUM\n * Resource events with negative durations anyway.\n * Since Chromium 128, more entries have unexpected negative durations, see\n * https://issues.chromium.org/issues/363031537\n */\nexport function hasValidResourceEntryDuration(entry) {\n    return entry.duration >= 0;\n}\nexport function hasValidResourceEntryTimings(entry) {\n    // Ensure timings are in the right order. On top of filtering out potential invalid\n    // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n    // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n    // it.\n    var areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n    var areRedirectionTimingsInOrder = hasRedirection(entry)\n        ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n        : true;\n    return areCommonTimingsInOrder && areRedirectionTimingsInOrder;\n}\nfunction hasRedirection(entry) {\n    return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n    if (origin <= start && start <= end) {\n        return {\n            duration: toServerDuration(elapsed(start, end)),\n            start: toServerDuration(elapsed(origin, start)),\n        };\n    }\n}\n/**\n * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,\n * meaning the protocol is unknown, and we shouldn't report it.\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources\n */\nexport function computeResourceEntryProtocol(entry) {\n    return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol;\n}\n/**\n * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),\n * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).\n * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n */\nexport function computeResourceEntryDeliveryType(entry) {\n    return entry.deliveryType === '' ? 'other' : entry.deliveryType;\n}\nexport function computeResourceEntrySize(entry) {\n    // Make sure a request actually occurred\n    if (entry.startTime < entry.responseStart) {\n        var encodedBodySize = entry.encodedBodySize, decodedBodySize = entry.decodedBodySize, transferSize = entry.transferSize;\n        return {\n            size: decodedBodySize,\n            encoded_body_size: encodedBodySize,\n            decoded_body_size: decodedBodySize,\n            transfer_size: transferSize,\n        };\n    }\n    return {\n        size: undefined,\n        encoded_body_size: undefined,\n        decoded_body_size: undefined,\n        transfer_size: undefined,\n    };\n}\nexport function isAllowedRequestUrl(url) {\n    return url && !isIntakeUrl(url);\n}\nvar DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;\nexport function isLongDataUrl(url) {\n    if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n        return false;\n    }\n    else if (url.substring(0, 5) === 'data:') {\n        // Avoid String.match RangeError: Maximum call stack size exceeded\n        url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);\n        return true;\n    }\n    return false;\n}\nexport function sanitizeDataUrl(url) {\n    return \"\".concat(url.match(DATA_URL_REGEX)[0], \"[...]\");\n}\n//# sourceMappingURL=resourceUtils.js.map","import { assign, includes } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n    var site = initConfiguration.site || INTAKE_SITE_US1;\n    var tags = buildTags(initConfiguration);\n    var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n    var replicaConfiguration = computeReplicaConfiguration(initConfiguration, tags);\n    return assign({\n        replica: replicaConfiguration,\n        site: site,\n    }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n    return {\n        logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n        sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n    };\n}\nfunction computeReplicaConfiguration(initConfiguration, tags) {\n    if (!initConfiguration.replica) {\n        return;\n    }\n    var replicaConfiguration = assign({}, initConfiguration, {\n        site: INTAKE_SITE_US1,\n        clientToken: initConfiguration.replica.clientToken,\n    });\n    var replicaEndpointBuilders = {\n        logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n    };\n    return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\nexport function isIntakeUrl(url) {\n    // check if tags is present in the query string\n    return INTAKE_URL_PARAMETERS.every(function (param) { return includes(url, param); });\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n    var tracer = startTracer(configuration, sessionManager);\n    trackXhr(lifeCycle, configuration, tracer);\n    trackFetch(lifeCycle, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n    var subscription = initXhrObservable(configuration).subscribe(function (rawContext) {\n        var context = rawContext;\n        if (!isAllowedRequestUrl(context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceXhr(context, context.xhr);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'complete':\n                tracer.clearTracingIfNeeded(context);\n                lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n                    duration: context.duration,\n                    method: context.method,\n                    requestIndex: context.requestIndex,\n                    spanId: context.spanId,\n                    startClocks: context.startClocks,\n                    status: context.status,\n                    traceId: context.traceId,\n                    traceSampled: context.traceSampled,\n                    type: \"xhr\" /* RequestType.XHR */,\n                    url: context.url,\n                    xhr: context.xhr,\n                    isAborted: context.isAborted,\n                    handlingStack: context.handlingStack,\n                });\n                break;\n        }\n    });\n    return { stop: function () { return subscription.unsubscribe(); } };\n}\nexport function trackFetch(lifeCycle, tracer) {\n    var subscription = initFetchObservable().subscribe(function (rawContext) {\n        var context = rawContext;\n        if (!isAllowedRequestUrl(context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceFetch(context);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'resolve':\n                waitForResponseToComplete(context, function (duration) {\n                    tracer.clearTracingIfNeeded(context);\n                    lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n                        duration: duration,\n                        method: context.method,\n                        requestIndex: context.requestIndex,\n                        responseType: context.responseType,\n                        spanId: context.spanId,\n                        startClocks: context.startClocks,\n                        status: context.status,\n                        traceId: context.traceId,\n                        traceSampled: context.traceSampled,\n                        type: \"fetch\" /* RequestType.FETCH */,\n                        url: context.url,\n                        response: context.response,\n                        init: context.init,\n                        input: context.input,\n                        isAborted: context.isAborted,\n                        handlingStack: context.handlingStack,\n                    });\n                });\n                break;\n        }\n    });\n    return { stop: function () { return subscription.unsubscribe(); } };\n}\nfunction getNextRequestIndex() {\n    var result = nextRequestIndex;\n    nextRequestIndex += 1;\n    return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n    var clonedResponse = context.response && tryToClone(context.response);\n    if (!clonedResponse || !clonedResponse.body) {\n        // do not try to wait for the response if the clone failed, fetch error or null body\n        callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n    }\n    else {\n        readBytesFromStream(clonedResponse.body, function () {\n            callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n        }, {\n            bytesLimit: Number.POSITIVE_INFINITY,\n            collectStreamBody: false,\n        });\n    }\n}\n//# sourceMappingURL=requestCollection.js.map","import { isNumber } from '@datadog/browser-core';\nexport function discardNegativeDuration(duration) {\n    return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=discardNegativeDuration.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(_a) {\n    var lifeCycle = _a.lifeCycle, isChildEvent = _a.isChildEvent, _b = _a.onChange, callback = _b === void 0 ? noop : _b;\n    var eventCounts = {\n        errorCount: 0,\n        longTaskCount: 0,\n        resourceCount: 0,\n        actionCount: 0,\n        frustrationCount: 0,\n    };\n    var subscription = lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n        var _a;\n        if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n            return;\n        }\n        switch (event.type) {\n            case \"error\" /* RumEventType.ERROR */:\n                eventCounts.errorCount += 1;\n                callback();\n                break;\n            case \"action\" /* RumEventType.ACTION */:\n                eventCounts.actionCount += 1;\n                if (event.action.frustration) {\n                    eventCounts.frustrationCount += event.action.frustration.type.length;\n                }\n                callback();\n                break;\n            case \"long_task\" /* RumEventType.LONG_TASK */:\n                eventCounts.longTaskCount += 1;\n                callback();\n                break;\n            case \"resource\" /* RumEventType.RESOURCE */:\n                if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n                    eventCounts.resourceCount += 1;\n                    callback();\n                }\n                break;\n        }\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n        eventCounts: eventCounts,\n    };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { addEventListeners, dateNow, relativeNow } from '@datadog/browser-core';\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n    var startTimeStamp = dateNow();\n    var timingSent = false;\n    var removeEventListeners = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], function (evt) {\n        // Only count cancelable events, which should trigger behavior important to the user.\n        if (!evt.cancelable) {\n            return;\n        }\n        // This timing will be used to compute the \"first Input delay\", which is the delta between\n        // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n        // (e.g. performance.now()).\n        var timing = {\n            entryType: 'first-input',\n            processingStart: relativeNow(),\n            processingEnd: relativeNow(),\n            startTime: evt.timeStamp,\n            duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n            name: '',\n            cancelable: false,\n            target: null,\n            toJSON: function () { return ({}); },\n        };\n        if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n            sendTimingIfPointerIsNotCancelled(configuration, timing);\n        }\n        else {\n            sendTiming(timing);\n        }\n    }, { passive: true, capture: true }).stop;\n    return { stop: removeEventListeners };\n    /**\n     * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n     * We differentiate these cases based on whether or not we see a pointercancel event, which are\n     * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n     * scrolling and pinch/zooming.\n     */\n    function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n        addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], function (event) {\n            if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n                sendTiming(timing);\n            }\n        }, { once: true });\n    }\n    function sendTiming(timing) {\n        if (!timingSent) {\n            timingSent = true;\n            removeEventListeners();\n            // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n            // the time between now and when the page was loaded.\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n            var delay = timing.processingStart - timing.startTime;\n            if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n                callback(timing);\n            }\n        }\n    }\n}\n//# sourceMappingURL=firstInputPolyfill.js.map","import { matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n *                        Wait page activity end\n *              .-------------------'--------------------.\n *              v                                        v\n *     [Wait for a page activity ]          [Wait for a maximum duration]\n *     [timeout: VALIDATION_DELAY]          [  timeout: maxDuration     ]\n *          /                  \\                           |\n *         v                    v                          |\n *  [No page activity]   [Page activity]                   |\n *         |                   |,----------------------.   |\n *         v                   v                       |   |\n *     (Discard)     [Wait for a page activity]        |   |\n *                   [   timeout: END_DELAY   ]        |   |\n *                       /                \\            |   |\n *                      v                  v           |   |\n *             [No page activity]    [Page activity]   |   |\n *                      |                 |            |   |\n *                      |                 '------------'   |\n *                      '-----------. ,--------------------'\n *                                   v\n *                                 (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageActivityEndCallback, maxDuration) {\n    var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration);\n    return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n    var pageActivityEndTimeoutId;\n    var hasCompleted = false;\n    var validationTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: false }); }), PAGE_ACTIVITY_VALIDATION_DELAY);\n    var maxDurationTimeoutId = maxDuration !== undefined\n        ? setTimeout(monitor(function () { return complete({ hadActivity: true, end: timeStampNow() }); }), maxDuration)\n        : undefined;\n    var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n        var isBusy = _a.isBusy;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        var lastChangeTime = timeStampNow();\n        if (!isBusy) {\n            pageActivityEndTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: true, end: lastChangeTime }); }), PAGE_ACTIVITY_END_DELAY);\n        }\n    });\n    var stop = function () {\n        hasCompleted = true;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        clearTimeout(maxDurationTimeoutId);\n        pageActivitySubscription.unsubscribe();\n    };\n    function complete(event) {\n        if (hasCompleted) {\n            return;\n        }\n        stop();\n        pageActivityEndCallback(event);\n    }\n    return { stop: stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n    return new Observable(function (observable) {\n        var subscriptions = [];\n        var firstRequestIndex;\n        var pendingRequestsCount = 0;\n        subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), windowOpenObservable.subscribe(notifyPageActivity), createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe(function (entries) {\n            if (entries.some(function (entry) { return !isExcludedUrl(configuration, entry.name); })) {\n                notifyPageActivity();\n            }\n        }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_STARTED */, function (startEvent) {\n            if (isExcludedUrl(configuration, startEvent.url)) {\n                return;\n            }\n            if (firstRequestIndex === undefined) {\n                firstRequestIndex = startEvent.requestIndex;\n            }\n            pendingRequestsCount += 1;\n            notifyPageActivity();\n        }), lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n            if (isExcludedUrl(configuration, request.url) ||\n                firstRequestIndex === undefined ||\n                // If the request started before the tracking start, ignore it\n                request.requestIndex < firstRequestIndex) {\n                return;\n            }\n            pendingRequestsCount -= 1;\n            notifyPageActivity();\n        }));\n        return function () {\n            subscriptions.forEach(function (s) { return s.unsubscribe(); });\n        };\n        function notifyPageActivity() {\n            observable.notify({ isBusy: pendingRequestsCount > 0 });\n        }\n    });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n    return matchList(configuration.excludedActivityUrls, requestUrl);\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n    if (window.CSS && window.CSS.escape) {\n        return window.CSS.escape(str);\n    }\n    // eslint-disable-next-line no-control-regex\n    return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n        if (asCodePoint) {\n            // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n            if (ch === '\\0') {\n                return '\\uFFFD';\n            }\n            // Control characters and (dependent upon position) numbers get escaped as code points\n            return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n        }\n        // Other potentially-special ASCII characters get backslash-escaped\n        return \"\\\\\".concat(ch);\n    });\n}\nexport function elementMatches(element, selector) {\n    if (element.matches) {\n        return element.matches(selector);\n    }\n    // IE11 support\n    if (element.msMatchesSelector) {\n        return element.msMatchesSelector(selector);\n    }\n    return false;\n}\n/**\n * Return the parentElement of an node\n *\n * In cases where parentElement is not supported, such as in IE11 for SVG nodes, we fallback to parentNode\n */\nexport function getParentElement(node) {\n    if (node.parentElement) {\n        return node.parentElement;\n    }\n    while (node.parentNode) {\n        if (node.parentNode.nodeType === Node.ELEMENT_NODE) {\n            return node.parentNode;\n        }\n        node = node.parentNode;\n    }\n    return null;\n}\n/**\n * Return the classList of an element or an array of classes if classList is not supported\n *\n * In cases where classList is not supported, such as in IE11 for SVG and MathML elements,\n * we fallback to using element.getAttribute('class').\n * We opt for element.getAttribute('class') over element.className because className returns an SVGAnimatedString for SVG elements.\n */\nexport function getClassList(element) {\n    if (element.classList) {\n        return element.classList;\n    }\n    var classes = (element.getAttribute('class') || '').trim();\n    return classes ? classes.split(/\\s+/) : [];\n}\n// ie11 supports WeakMap but not WeakSet\nvar PLACEHOLDER = 1;\n// eslint-disable-next-line no-restricted-syntax\nvar WeakSet = /** @class */ (function () {\n    function WeakSet(initialValues) {\n        var _this = this;\n        this.map = new WeakMap();\n        if (initialValues) {\n            initialValues.forEach(function (value) { return _this.map.set(value, PLACEHOLDER); });\n        }\n    }\n    WeakSet.prototype.add = function (value) {\n        this.map.set(value, PLACEHOLDER);\n        return this;\n    };\n    WeakSet.prototype.delete = function (value) {\n        return this.map.delete(value);\n    };\n    WeakSet.prototype.has = function (value) {\n        return this.map.has(value);\n    };\n    return WeakSet;\n}());\nexport { WeakSet };\n//# sourceMappingURL=polyfills.js.map","export function isTextNode(node) {\n    return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n    return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n    return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n    return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n    var shadowRoot = node;\n    return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n    return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n    var child = node.firstChild;\n    while (child) {\n        callback(child);\n        child = child.nextSibling;\n    }\n    if (isNodeShadowHost(node)) {\n        callback(node.shadowRoot);\n    }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n    return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';\nimport { elementMatches } from '../browser/polyfills';\nexport var NodePrivacyLevel = {\n    IGNORE: 'ignore',\n    HIDDEN: 'hidden',\n    ALLOW: DefaultPrivacyLevel.ALLOW,\n    MASK: DefaultPrivacyLevel.MASK,\n    MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_PREFIX = 'dd-privacy-';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n    INPUT: true,\n    OUTPUT: true,\n    TEXTAREA: true,\n    SELECT: true,\n    OPTION: true,\n    DATALIST: true,\n    OPTGROUP: true,\n};\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {\n    if (cache && cache.has(node)) {\n        return cache.get(node);\n    }\n    var parentNode = getParentNode(node);\n    var parentNodePrivacyLevel = parentNode\n        ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n        : defaultPrivacyLevel;\n    var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n    var nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n    if (cache) {\n        cache.set(node, nodePrivacyLevel);\n    }\n    return nodePrivacyLevel;\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n    switch (parentNodePrivacyLevel) {\n        // These values cannot be overridden\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return parentNodePrivacyLevel;\n    }\n    switch (childPrivacyLevel) {\n        case NodePrivacyLevel.ALLOW:\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.MASK_USER_INPUT:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return childPrivacyLevel;\n        default:\n            return parentNodePrivacyLevel;\n    }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n    // Only Element types can have a privacy level set\n    if (!isElementNode(node)) {\n        return;\n    }\n    // Overrules for replay purpose\n    if (node.tagName === 'BASE') {\n        return NodePrivacyLevel.ALLOW;\n    }\n    // Overrules to enforce end-user protection\n    if (node.tagName === 'INPUT') {\n        var inputElement = node;\n        if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n            return NodePrivacyLevel.MASK;\n        }\n        if (inputElement.type === 'hidden') {\n            return NodePrivacyLevel.MASK;\n        }\n        var autocomplete = inputElement.getAttribute('autocomplete');\n        // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]\n        if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {\n            return NodePrivacyLevel.MASK;\n        }\n    }\n    // Check HTML privacy attributes and classes\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n        return NodePrivacyLevel.HIDDEN;\n    }\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK))) {\n        return NodePrivacyLevel.MASK;\n    }\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n        return NodePrivacyLevel.MASK_USER_INPUT;\n    }\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n        return NodePrivacyLevel.ALLOW;\n    }\n    if (shouldIgnoreElement(node)) {\n        return NodePrivacyLevel.IGNORE;\n    }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n    switch (privacyLevel) {\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return true;\n        case NodePrivacyLevel.MASK_USER_INPUT:\n            return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n        default:\n            return false;\n    }\n}\nfunction isFormElement(node) {\n    if (!node || node.nodeType !== node.ELEMENT_NODE) {\n        return false;\n    }\n    var element = node;\n    if (element.tagName === 'INPUT') {\n        switch (element.type) {\n            case 'button':\n            case 'color':\n            case 'reset':\n            case 'submit':\n                return false;\n        }\n    }\n    return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) { return text.replace(/\\S/g, TEXT_MASKING_CHAR); };\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n    var _a;\n    // The parent node may not be a html element which has a tagName attribute.\n    // So just let it be undefined which is ok in this use case.\n    var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n    var textContent = textNode.textContent || '';\n    if (ignoreWhiteSpace && !textContent.trim()) {\n        return;\n    }\n    var nodePrivacyLevel = parentNodePrivacyLevel;\n    var isScript = parentTagName === 'SCRIPT';\n    if (isScript) {\n        // For perf reasons, we don't record script (heuristic)\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // Should never occur, but just in case, we set to CENSORED_MARK.\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n        if (\n        // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n        parentTagName === 'DATALIST' ||\n            parentTagName === 'SELECT' ||\n            parentTagName === 'OPTGROUP') {\n            if (!textContent.trim()) {\n                return;\n            }\n        }\n        else if (parentTagName === 'OPTION') {\n            // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n            textContent = CENSORED_STRING_MARK;\n        }\n        else {\n            textContent = censorText(textContent);\n        }\n    }\n    return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n    if (element.nodeName === 'SCRIPT') {\n        return true;\n    }\n    if (element.nodeName === 'LINK') {\n        var relAttribute = getLowerCaseAttribute('rel');\n        return (\n        // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n        (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n            // Favicons\n            relAttribute === 'shortcut icon' ||\n            relAttribute === 'icon');\n    }\n    if (element.nodeName === 'META') {\n        var nameAttribute = getLowerCaseAttribute('name');\n        var relAttribute = getLowerCaseAttribute('rel');\n        var propertyAttribute = getLowerCaseAttribute('property');\n        return (\n        // Favicons\n        /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n            nameAttribute === 'application-name' ||\n            relAttribute === 'icon' ||\n            relAttribute === 'apple-touch-icon' ||\n            relAttribute === 'shortcut icon' ||\n            // Description\n            nameAttribute === 'keywords' ||\n            nameAttribute === 'description' ||\n            // Social\n            /^(og|twitter|fb):/.test(propertyAttribute) ||\n            /^(og|twitter):/.test(nameAttribute) ||\n            nameAttribute === 'pinterest' ||\n            // Robots\n            nameAttribute === 'robots' ||\n            nameAttribute === 'googlebot' ||\n            nameAttribute === 'bingbot' ||\n            // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n            // X-Translated-By\n            element.hasAttribute('http-equiv') ||\n            // Authorship\n            nameAttribute === 'author' ||\n            nameAttribute === 'generator' ||\n            nameAttribute === 'framework' ||\n            nameAttribute === 'publisher' ||\n            nameAttribute === 'progid' ||\n            /^article:/.test(propertyAttribute) ||\n            /^product:/.test(propertyAttribute) ||\n            // Verification\n            nameAttribute === 'google-site-verification' ||\n            nameAttribute === 'yandex-verification' ||\n            nameAttribute === 'csrf-token' ||\n            nameAttribute === 'p:domain_verify' ||\n            nameAttribute === 'verify-v1' ||\n            nameAttribute === 'verification' ||\n            nameAttribute === 'shopify-checkout-api-token');\n    }\n    function getLowerCaseAttribute(name) {\n        return (element.getAttribute(name) || '').toLowerCase();\n    }\n    return false;\n}\nexport function getPrivacySelector(privacyLevel) {\n    return \"[\".concat(PRIVACY_ATTR_NAME, \"=\\\"\").concat(privacyLevel, \"\\\"], .\").concat(PRIVACY_CLASS_PREFIX).concat(privacyLevel);\n}\n//# sourceMappingURL=privacy.js.map","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, _a) {\n    var onPointerDown = _a.onPointerDown, onPointerUp = _a.onPointerUp;\n    var selectionEmptyAtPointerDown;\n    var userActivity = {\n        selection: false,\n        input: false,\n        scroll: false,\n    };\n    var clickContext;\n    var listeners = [\n        addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, function (event) {\n            if (isValidPointerEvent(event)) {\n                selectionEmptyAtPointerDown = isSelectionEmpty();\n                userActivity = {\n                    selection: false,\n                    input: false,\n                    scroll: false,\n                };\n                clickContext = onPointerDown(event);\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, function () {\n            if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n                userActivity.selection = true;\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, function () {\n            userActivity.scroll = true;\n        }, { capture: true, passive: true }),\n        addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, function (event) {\n            if (isValidPointerEvent(event) && clickContext) {\n                // Use a scoped variable to make sure the value is not changed by other clicks\n                var localUserActivity_1 = userActivity;\n                onPointerUp(clickContext, event, function () { return localUserActivity_1; });\n                clickContext = undefined;\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, function () {\n            userActivity.input = true;\n        }, { capture: true }),\n    ];\n    return {\n        stop: function () {\n            listeners.forEach(function (listener) { return listener.stop(); });\n        },\n    };\n}\nfunction isSelectionEmpty() {\n    var selection = window.getSelection();\n    return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n    return (event.target instanceof Element &&\n        // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n        // the future.\n        event.isPrimary !== false);\n}\n//# sourceMappingURL=listenActionEvents.js.map","import { ONE_SECOND } from '@datadog/browser-core';\nimport { elementMatches } from '../../browser/polyfills';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n    if (isRage(clicks)) {\n        rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n        if (clicks.some(isDead)) {\n            rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n        }\n        if (rageClick.hasError) {\n            rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n        }\n        return { isRage: true };\n    }\n    var hasSelectionChanged = clicks.some(function (click) { return click.getUserActivity().selection; });\n    clicks.forEach(function (click) {\n        if (click.hasError) {\n            click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n        }\n        if (isDead(click) &&\n            // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n            !hasSelectionChanged) {\n            click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n        }\n    });\n    return { isRage: false };\n}\nexport function isRage(clicks) {\n    if (clicks.some(function (click) { return click.getUserActivity().selection || click.getUserActivity().scroll; })) {\n        return false;\n    }\n    for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n        if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n            ONE_SECOND) {\n            return true;\n        }\n    }\n    return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR = \n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n    'textarea,' +\n    'select,' +\n    // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n    '[contenteditable],' +\n    '[contenteditable] *,' +\n    // canvas, as there is no good way to detect activity occurring on them\n    'canvas,' +\n    // links that are interactive (have an href attribute) or any of their descendants, as they can\n    // open a new tab or navigate to a hash without triggering a meaningful event\n    'a[href],' +\n    'a[href] *';\nexport function isDead(click) {\n    if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n        return false;\n    }\n    return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { elapsed, ONE_SECOND, relativeNow } from '@datadog/browser-core';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var interactionSelectorCache = new Map();\nexport function getInteractionSelector(relativeTimestamp) {\n    var selector = interactionSelectorCache.get(relativeTimestamp);\n    interactionSelectorCache.delete(relativeTimestamp);\n    return selector;\n}\nexport function updateInteractionSelector(relativeTimestamp, selector) {\n    interactionSelectorCache.set(relativeTimestamp, selector);\n    interactionSelectorCache.forEach(function (_, relativeTimestamp) {\n        if (elapsed(relativeTimestamp, relativeNow()) > CLICK_ACTION_MAX_DURATION) {\n            interactionSelectorCache.delete(relativeTimestamp);\n        }\n    });\n}\n//# sourceMappingURL=interactionSelectorCache.js.map","import { includes, timeStampNow, Observable, assign, getRelativeTime, ONE_MINUTE, generateUUID, clocksNow, elapsed, createValueHistory, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '../privacy';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\nimport { CLICK_ACTION_MAX_DURATION, updateInteractionSelector } from './interactionSelectorCache';\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n    var history = createValueHistory({ expireDelay: ACTION_CONTEXT_TIME_OUT_DELAY });\n    var stopObservable = new Observable();\n    var currentClickChain;\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n        history.reset();\n    });\n    lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n    var stopActionEventsListener = listenActionEvents(configuration, {\n        onPointerDown: function (pointerDownEvent) {\n            return processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable);\n        },\n        onPointerUp: function (_a, startEvent, getUserActivity) {\n            var clickActionBase = _a.clickActionBase, hadActivityOnPointerDown = _a.hadActivityOnPointerDown;\n            startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n        },\n    }).stop;\n    var actionContexts = {\n        findActionId: function (startTime) { return history.findAll(startTime); },\n    };\n    return {\n        stop: function () {\n            stopClickChain();\n            stopObservable.notify();\n            stopActionEventsListener();\n        },\n        actionContexts: actionContexts,\n    };\n    function appendClickToClickChain(click) {\n        if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n            var rageClick_1 = click.clone();\n            currentClickChain = createClickChain(click, function (clicks) {\n                finalizeClicks(clicks, rageClick_1);\n            });\n        }\n    }\n    function stopClickChain() {\n        if (currentClickChain) {\n            currentClickChain.stop();\n        }\n    }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable) {\n    var nodePrivacyLevel = configuration.enablePrivacyForActionName\n        ? getNodePrivacyLevel(pointerDownEvent.target, configuration.defaultPrivacyLevel)\n        : NodePrivacyLevel.ALLOW;\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        return undefined;\n    }\n    var clickActionBase = computeClickActionBase(pointerDownEvent, nodePrivacyLevel, configuration);\n    var hadActivityOnPointerDown = false;\n    waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, function (pageActivityEndEvent) {\n        hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n    }, \n    // We don't care about the activity duration, we just want to know whether an activity did happen\n    // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n    PAGE_ACTIVITY_VALIDATION_DELAY);\n    return { clickActionBase: clickActionBase, hadActivityOnPointerDown: function () { return hadActivityOnPointerDown; } };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n    var _a;\n    var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n    appendClickToClickChain(click);\n    var selector = (_a = clickActionBase === null || clickActionBase === void 0 ? void 0 : clickActionBase.target) === null || _a === void 0 ? void 0 : _a.selector;\n    if (selector) {\n        updateInteractionSelector(startEvent.timeStamp, selector);\n    }\n    var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, function (pageActivityEndEvent) {\n        if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n            // If the clock is looking weird, just discard the click\n            click.discard();\n        }\n        else {\n            if (pageActivityEndEvent.hadActivity) {\n                click.stop(pageActivityEndEvent.end);\n            }\n            else if (hadActivityOnPointerDown()) {\n                click.stop(\n                // using the click start as activity end, so the click will have some activity but its\n                // duration will be 0 (as the activity started before the click start)\n                click.startClocks.timeStamp);\n            }\n            else {\n                click.stop();\n            }\n        }\n    }, CLICK_ACTION_MAX_DURATION).stop;\n    var viewEndedSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        click.stop(endClocks.timeStamp);\n    });\n    var stopSubscription = stopObservable.subscribe(function () {\n        click.stop();\n    });\n    click.stopObservable.subscribe(function () {\n        viewEndedSubscription.unsubscribe();\n        stopWaitPageActivityEnd();\n        stopSubscription.unsubscribe();\n    });\n}\nfunction computeClickActionBase(event, nodePrivacyLevel, configuration) {\n    var rect = event.target.getBoundingClientRect();\n    var selector = getSelectorFromElement(event.target, configuration.actionNameAttribute);\n    if (selector) {\n        updateInteractionSelector(event.timeStamp, selector);\n    }\n    var actionName = getActionNameFromElement(event.target, configuration, nodePrivacyLevel);\n    return {\n        type: \"click\" /* ActionType.CLICK */,\n        target: {\n            width: Math.round(rect.width),\n            height: Math.round(rect.height),\n            selector: selector,\n        },\n        position: {\n            // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n            x: Math.round(event.clientX - rect.left),\n            y: Math.round(event.clientY - rect.top),\n        },\n        name: actionName.name,\n        nameSource: actionName.nameSource,\n    };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n    var id = generateUUID();\n    var startClocks = clocksNow();\n    var historyEntry = history.add(id, startClocks.relative);\n    var eventCountsSubscription = trackEventCounts({\n        lifeCycle: lifeCycle,\n        isChildEvent: function (event) {\n            return event.action !== undefined &&\n                (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id);\n        },\n    });\n    var status = 0 /* ClickStatus.ONGOING */;\n    var activityEndTime;\n    var frustrationTypes = [];\n    var stopObservable = new Observable();\n    function stop(newActivityEndTime) {\n        if (status !== 0 /* ClickStatus.ONGOING */) {\n            return;\n        }\n        activityEndTime = newActivityEndTime;\n        status = 1 /* ClickStatus.STOPPED */;\n        if (activityEndTime) {\n            historyEntry.close(getRelativeTime(activityEndTime));\n        }\n        else {\n            historyEntry.remove();\n        }\n        eventCountsSubscription.stop();\n        stopObservable.notify();\n    }\n    return {\n        event: startEvent,\n        stop: stop,\n        stopObservable: stopObservable,\n        get hasError() {\n            return eventCountsSubscription.eventCounts.errorCount > 0;\n        },\n        get hasPageActivity() {\n            return activityEndTime !== undefined;\n        },\n        getUserActivity: getUserActivity,\n        addFrustration: function (frustrationType) {\n            frustrationTypes.push(frustrationType);\n        },\n        startClocks: startClocks,\n        isStopped: function () { return status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */; },\n        clone: function () { return newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent); },\n        validate: function (domEvents) {\n            stop();\n            if (status !== 1 /* ClickStatus.STOPPED */) {\n                return;\n            }\n            var _a = eventCountsSubscription.eventCounts, resourceCount = _a.resourceCount, errorCount = _a.errorCount, longTaskCount = _a.longTaskCount;\n            var clickAction = assign({\n                type: \"click\" /* ActionType.CLICK */,\n                duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n                startClocks: startClocks,\n                id: id,\n                frustrationTypes: frustrationTypes,\n                counts: {\n                    resourceCount: resourceCount,\n                    errorCount: errorCount,\n                    longTaskCount: longTaskCount,\n                },\n                events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n                event: startEvent,\n            }, clickActionBase);\n            lifeCycle.notify(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n            status = 2 /* ClickStatus.FINALIZED */;\n        },\n        discard: function () {\n            stop();\n            status = 2 /* ClickStatus.FINALIZED */;\n        },\n    };\n}\nexport function finalizeClicks(clicks, rageClick) {\n    var isRage = computeFrustration(clicks, rageClick).isRage;\n    if (isRage) {\n        clicks.forEach(function (click) { return click.discard(); });\n        rageClick.stop(timeStampNow());\n        rageClick.validate(clicks.map(function (click) { return click.event; }));\n    }\n    else {\n        rageClick.discard();\n        clicks.forEach(function (click) { return click.validate(); });\n    }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, assign, combine, toServerDuration, generateUUID, ExperimentalFeature, isExperimentalFeatureEnabled, } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageStateHistory) {\n    var _a;\n    lifeCycle.subscribe(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, function (action) {\n        return lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action, pageStateHistory));\n    });\n    var actionContexts = { findActionId: noop };\n    var stop = noop;\n    if (configuration.trackUserInteractions) {\n        ;\n        (_a = trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration), actionContexts = _a.actionContexts, stop = _a.stop);\n    }\n    return {\n        addAction: function (action, savedCommonContext) {\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n                savedCommonContext: savedCommonContext,\n            }, processAction(action, pageStateHistory)));\n        },\n        actionContexts: actionContexts,\n        stop: stop,\n    };\n}\nfunction processAction(action, pageStateHistory) {\n    var autoActionProperties = isAutoAction(action)\n        ? {\n            action: {\n                id: action.id,\n                loading_time: discardNegativeDuration(toServerDuration(action.duration)),\n                frustration: {\n                    type: action.frustrationTypes,\n                },\n                error: {\n                    count: action.counts.errorCount,\n                },\n                long_task: {\n                    count: action.counts.longTaskCount,\n                },\n                resource: {\n                    count: action.counts.resourceCount,\n                },\n            },\n            _dd: {\n                action: {\n                    target: action.target,\n                    position: action.position,\n                    name_source: isExperimentalFeatureEnabled(ExperimentalFeature.ACTION_NAME_MASKING)\n                        ? action.nameSource\n                        : undefined,\n                },\n            },\n        }\n        : undefined;\n    var customerContext = !isAutoAction(action) ? action.context : undefined;\n    var actionEvent = combine({\n        action: {\n            id: generateUUID(),\n            target: {\n                name: action.name,\n            },\n            type: action.type,\n        },\n        date: action.startClocks.timeStamp,\n        type: \"action\" /* RumEventType.ACTION */,\n        view: { in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, action.startClocks.relative) },\n    }, autoActionProperties);\n    var domainContext = isAutoAction(action) ? { events: action.events } : {};\n    if (!isAutoAction(action) && action.handlingStack) {\n        domainContext.handlingStack = action.handlingStack;\n    }\n    return {\n        customerContext: customerContext,\n        rawRumEvent: actionEvent,\n        startTime: action.startClocks.relative,\n        domainContext: domainContext,\n    };\n}\nfunction isAutoAction(action) {\n    return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { flattenErrorCauses, isError, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n    var consoleObservables = apis.map(function (api) {\n        if (!consoleObservablesByApi[api]) {\n            consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n        }\n        return consoleObservablesByApi[api];\n    });\n    return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n    consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n    return new Observable(function (observable) {\n        var originalConsoleApi = globalConsole[api];\n        globalConsole[api] = function () {\n            var params = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                params[_i] = arguments[_i];\n            }\n            originalConsoleApi.apply(console, params);\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                observable.notify(buildConsoleLog(params, api, handlingStack));\n            });\n        };\n        return function () {\n            globalConsole[api] = originalConsoleApi;\n        };\n    });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n    var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n    var error;\n    if (api === ConsoleApiName.error) {\n        var firstErrorParam = find(params, isError);\n        error = {\n            stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,\n            fingerprint: tryToGetFingerprint(firstErrorParam),\n            causes: firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined,\n            startClocks: clocksNow(),\n            message: message,\n            source: ErrorSource.CONSOLE,\n            handling: \"handled\" /* ErrorHandling.HANDLED */,\n            handlingStack: handlingStack,\n        };\n    }\n    return {\n        api: api,\n        message: message,\n        error: error,\n        handlingStack: handlingStack,\n    };\n}\nfunction formatConsoleParameters(param) {\n    if (typeof param === 'string') {\n        return sanitize(param);\n    }\n    if (isError(param)) {\n        return formatErrorMessage(computeStackTrace(param));\n    }\n    return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { assign, includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport var RawReportType = {\n    intervention: 'intervention',\n    deprecation: 'deprecation',\n    cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n    var observables = [];\n    if (includes(apis, RawReportType.cspViolation)) {\n        observables.push(createCspViolationReportObservable(configuration));\n    }\n    var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n    if (reportTypes.length) {\n        observables.push(createReportObservable(reportTypes));\n    }\n    return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n    return new Observable(function (observable) {\n        if (!window.ReportingObserver) {\n            return;\n        }\n        var handleReports = monitor(function (reports, _) {\n            return reports.forEach(function (report) { return observable.notify(buildRawReportErrorFromReport(report)); });\n        });\n        var observer = new window.ReportingObserver(handleReports, {\n            types: reportTypes,\n            buffered: true,\n        });\n        observer.observe();\n        return function () {\n            observer.disconnect();\n        };\n    });\n}\nfunction createCspViolationReportObservable(configuration) {\n    return new Observable(function (observable) {\n        var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n            observable.notify(buildRawReportErrorFromCspViolation(event));\n        }).stop;\n        return stop;\n    });\n}\nfunction buildRawReportErrorFromReport(report) {\n    var type = report.type, body = report.body;\n    return buildRawReportError({\n        type: body.id,\n        message: \"\".concat(type, \": \").concat(body.message),\n        originalError: report,\n        stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n    });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n    var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n    return buildRawReportError({\n        type: event.effectiveDirective,\n        message: \"\".concat(RawReportType.cspViolation, \": \").concat(message),\n        originalError: event,\n        csp: {\n            disposition: event.disposition,\n        },\n        stack: buildStack(event.effectiveDirective, event.originalPolicy\n            ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n            : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n    });\n}\nfunction buildRawReportError(partial) {\n    return assign({\n        startClocks: clocksNow(),\n        source: ErrorSource.REPORT,\n        handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n    }, partial);\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n    return sourceFile\n        ? toStackTraceString({\n            name: name,\n            message: message,\n            stack: [\n                {\n                    func: '?',\n                    url: sourceFile,\n                    line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n                    column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n                },\n            ],\n        })\n        : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { setTimeout, clearTimeout } from './timer';\nimport { monitor } from './monitor';\nimport { dateNow } from './utils/timeUtils';\n/**\n * 'requestIdleCallback' with a shim.\n */\nexport function requestIdleCallback(callback, opts) {\n    // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n    if (window.requestIdleCallback && window.cancelIdleCallback) {\n        var id_1 = window.requestIdleCallback(monitor(callback), opts);\n        return function () { return window.cancelIdleCallback(id_1); };\n    }\n    return requestIdleCallbackShim(callback);\n}\nexport var MAX_TASK_TIME = 50;\n/*\n * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback\n * Note: there is no simple way to support the \"timeout\" option, so we ignore it.\n */\nexport function requestIdleCallbackShim(callback) {\n    var start = dateNow();\n    var timeoutId = setTimeout(function () {\n        callback({\n            didTimeout: false,\n            timeRemaining: function () { return Math.max(0, MAX_TASK_TIME - (dateNow() - start)); },\n        });\n    }, 0);\n    return function () { return clearTimeout(timeoutId); };\n}\n//# sourceMappingURL=requestIdleCallback.js.map","import { addDuration } from '@datadog/browser-core';\nimport { WeakSet } from '../../browser/polyfills';\nimport { hasValidResourceEntryDuration, hasValidResourceEntryTimings } from './resourceUtils';\nvar alreadyMatchedEntries = new WeakSet();\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - filter out timing that were already matched to a request\n * - then, if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestResourceEntry(request) {\n    if (!performance || !('getEntriesByName' in performance)) {\n        return;\n    }\n    var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n    if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n        return;\n    }\n    var candidates = sameNameEntries\n        .filter(function (entry) { return !alreadyMatchedEntries.has(entry); })\n        .filter(function (entry) { return hasValidResourceEntryDuration(entry) && hasValidResourceEntryTimings(entry); })\n        .filter(function (entry) {\n        return isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration }));\n    });\n    if (candidates.length === 1) {\n        alreadyMatchedEntries.add(candidates[0]);\n        return candidates[0].toJSON();\n    }\n    return;\n}\nfunction endTime(timing) {\n    return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n    var errorMargin = 1;\n    return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestResourceEntry.js.map","import { noop } from '../tools/utils/functionUtils';\nimport { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n    if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n        callback();\n        return { stop: noop };\n    }\n    var eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n    return addEventListener(configuration, window, eventName, callback, { once: true });\n}\n//# sourceMappingURL=runOnReadyState.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n    var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n    if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n        return undefined;\n    }\n    return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n    var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n    var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n    return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n    var comment = findTraceComment(document);\n    if (!comment) {\n        return undefined;\n    }\n    return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n    var traceTime = rawTraceTime && Number(rawTraceTime);\n    if (!traceId || !traceTime) {\n        return undefined;\n    }\n    return {\n        traceId: traceId,\n        traceTime: traceTime,\n    };\n}\nexport function findTraceComment(document) {\n    // 1. Try to find the comment as a direct child of the document\n    // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n    // value is not an array or string (here, a NodeList).\n    for (var i = 0; i < document.childNodes.length; i += 1) {\n        var comment = getTraceCommentFromNode(document.childNodes[i]);\n        if (comment) {\n            return comment;\n        }\n    }\n    // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n    // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n    // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n    // reverse order, stopping if we come across a non-text node.\n    if (document.body) {\n        for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n            var node = document.body.childNodes[i];\n            var comment = getTraceCommentFromNode(node);\n            if (comment) {\n                return comment;\n            }\n            if (!isTextNode(node)) {\n                break;\n            }\n        }\n    }\n}\nfunction getTraceCommentFromNode(node) {\n    if (node && isCommentNode(node)) {\n        var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n        if (match) {\n            return match[1];\n        }\n    }\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { assign, getRelativeTime, isNumber } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent, } from './performanceObservable';\nexport function getNavigationEntry() {\n    if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n        var navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n        if (navigationEntry) {\n            return navigationEntry;\n        }\n    }\n    var timings = computeTimingsFromDeprecatedPerformanceTiming();\n    var entry = assign({\n        entryType: RumPerformanceEntryType.NAVIGATION,\n        initiatorType: 'navigation',\n        name: window.location.href,\n        startTime: 0,\n        duration: timings.responseEnd,\n        decodedBodySize: 0,\n        encodedBodySize: 0,\n        transferSize: 0,\n        workerStart: 0,\n        toJSON: function () { return assign({}, entry, { toJSON: undefined }); },\n    }, timings);\n    return entry;\n}\nexport function computeTimingsFromDeprecatedPerformanceTiming() {\n    var result = {};\n    var timing = performance.timing;\n    for (var key in timing) {\n        if (isNumber(timing[key])) {\n            var numberKey = key;\n            var timingElement = timing[numberKey];\n            result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=performanceUtils.js.map","import { assign, runOnReadyState } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceObservable';\nimport { getDocumentTraceId } from '../tracing/getDocumentTraceId';\nimport { getNavigationEntry } from '../../browser/performanceUtils';\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils';\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n    runOnReadyState(configuration, 'interactive', function () {\n        var entry = assign(getNavigationEntry().toJSON(), {\n            entryType: RumPerformanceEntryType.RESOURCE,\n            initiatorType: FAKE_INITIAL_DOCUMENT,\n            traceId: getDocumentTraceId(document),\n            toJSON: function () { return assign({}, entry, { toJSON: undefined }); },\n        });\n        callback(entry);\n    });\n}\n//# sourceMappingURL=retrieveInitialDocumentResourceTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, createTaskQueue, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, createPerformanceObservable, } from '../../browser/performanceObservable';\nimport { createSpanIdentifier } from '../tracing/identifier';\nimport { matchRequestResourceEntry } from './matchRequestResourceEntry';\nimport { computeResourceEntryDetails, computeResourceEntryDuration, computeResourceEntryType, computeResourceEntrySize, computeResourceEntryProtocol, computeResourceEntryDeliveryType, isResourceEntryRequestType, isLongDataUrl, sanitizeDataUrl, } from './resourceUtils';\nimport { retrieveInitialDocumentResourceTiming } from './retrieveInitialDocumentResourceTiming';\nexport function startResourceCollection(lifeCycle, configuration, pageStateHistory, taskQueue, retrieveInitialDocumentResourceTimingImpl) {\n    if (taskQueue === void 0) { taskQueue = createTaskQueue(); }\n    if (retrieveInitialDocumentResourceTimingImpl === void 0) { retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming; }\n    lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n        handleResource(function () { return processRequest(request, configuration, pageStateHistory); });\n    });\n    var performanceResourceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.RESOURCE,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var _loop_1 = function (entry) {\n            if (!isResourceEntryRequestType(entry)) {\n                handleResource(function () { return processResourceEntry(entry, configuration); });\n            }\n        };\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            _loop_1(entry);\n        }\n    });\n    retrieveInitialDocumentResourceTimingImpl(configuration, function (timing) {\n        handleResource(function () { return processResourceEntry(timing, configuration); });\n    });\n    function handleResource(computeRawEvent) {\n        taskQueue.push(function () {\n            var rawEvent = computeRawEvent();\n            if (rawEvent) {\n                lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n            }\n        });\n    }\n    return {\n        stop: function () {\n            performanceResourceSubscription.unsubscribe();\n        },\n    };\n}\nfunction processRequest(request, configuration, pageStateHistory) {\n    var matchingTiming = matchRequestResourceEntry(request);\n    var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n    var tracingInfo = computeRequestTracingInfo(request, configuration);\n    if (!configuration.trackResources && !tracingInfo) {\n        return;\n    }\n    var type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n    var correspondingTimingOverrides = matchingTiming ? computeResourceEntryMetrics(matchingTiming) : undefined;\n    var duration = computeRequestDuration(pageStateHistory, startClocks, request.duration);\n    var resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type: type,\n            duration: duration,\n            method: request.method,\n            status_code: request.status,\n            protocol: matchingTiming && computeResourceEntryProtocol(matchingTiming),\n            url: isLongDataUrl(request.url) ? sanitizeDataUrl(request.url) : request.url,\n            delivery_type: matchingTiming && computeResourceEntryDeliveryType(matchingTiming),\n        },\n        type: \"resource\" /* RumEventType.RESOURCE */,\n        _dd: {\n            discarded: !configuration.trackResources,\n        },\n    }, tracingInfo, correspondingTimingOverrides);\n    return {\n        startTime: startClocks.relative,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: matchingTiming,\n            xhr: request.xhr,\n            response: request.response,\n            requestInput: request.input,\n            requestInit: request.init,\n            error: request.error,\n            isAborted: request.isAborted,\n            handlingStack: request.handlingStack,\n        },\n    };\n}\nfunction processResourceEntry(entry, configuration) {\n    var startClocks = relativeToClocks(entry.startTime);\n    var tracingInfo = computeResourceEntryTracingInfo(entry, configuration);\n    if (!configuration.trackResources && !tracingInfo) {\n        return;\n    }\n    var type = computeResourceEntryType(entry);\n    var entryMetrics = computeResourceEntryMetrics(entry);\n    var resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type: type,\n            url: entry.name,\n            status_code: discardZeroStatus(entry.responseStatus),\n            protocol: computeResourceEntryProtocol(entry),\n            delivery_type: computeResourceEntryDeliveryType(entry),\n        },\n        type: \"resource\" /* RumEventType.RESOURCE */,\n        _dd: {\n            discarded: !configuration.trackResources,\n        },\n    }, tracingInfo, entryMetrics);\n    return {\n        startTime: startClocks.relative,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: entry,\n        },\n    };\n}\nfunction computeResourceEntryMetrics(entry) {\n    var renderBlockingStatus = entry.renderBlockingStatus;\n    return {\n        resource: assign({\n            duration: computeResourceEntryDuration(entry),\n            render_blocking_status: renderBlockingStatus,\n        }, computeResourceEntrySize(entry), computeResourceEntryDetails(entry)),\n    };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n    var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            span_id: request.spanId.toString(),\n            trace_id: request.traceId.toString(),\n            rule_psr: configuration.rulePsr,\n        },\n    };\n}\nfunction computeResourceEntryTracingInfo(entry, configuration) {\n    var hasBeenTraced = entry.traceId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            trace_id: entry.traceId,\n            span_id: createSpanIdentifier().toString(),\n            rule_psr: configuration.rulePsr,\n        },\n    };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n    return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, startClocks.relative, duration)\n        ? toServerDuration(duration)\n        : undefined;\n}\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode) {\n    return statusCode === 0 ? undefined : statusCode;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { ONE_MINUTE, find } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(configuration, firstHidden, callback) {\n    var performanceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.PAINT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var fcpEntry = find(entries, function (entry) {\n            return entry.name === 'first-contentful-paint' &&\n                entry.startTime < firstHidden.timeStamp &&\n                entry.startTime < FCP_MAXIMUM_DELAY;\n        });\n        if (fcpEntry) {\n            callback(fcpEntry.startTime);\n        }\n    });\n    return {\n        stop: performanceSubscription.unsubscribe,\n    };\n}\n//# sourceMappingURL=trackFirstContentfulPaint.js.map","import { ONE_MINUTE, addEventListeners, findLast } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View.  This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {\n    // Ignore entries that come after the first user interaction. According to the documentation, the\n    // browser should not send largest-contentful-paint entries after a user interact with the page,\n    // but the web-vitals reference implementation uses this as a safeguard.\n    var firstInteractionTimestamp = Infinity;\n    var stopEventListener = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], function (event) {\n        firstInteractionTimestamp = event.timeStamp;\n    }, { capture: true, once: true }).stop;\n    var biggestLcpSize = 0;\n    var performanceLcpSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var lcpEntry = findLast(entries, function (entry) {\n            return entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n                entry.startTime < firstInteractionTimestamp &&\n                entry.startTime < firstHidden.timeStamp &&\n                entry.startTime < LCP_MAXIMUM_DELAY &&\n                // Ensure to get the LCP entry with the biggest size, see\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n                entry.size > biggestLcpSize;\n        });\n        if (lcpEntry) {\n            var lcpTargetSelector = void 0;\n            if (lcpEntry.element) {\n                lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n            }\n            callback({\n                value: lcpEntry.startTime,\n                targetSelector: lcpTargetSelector,\n            });\n            biggestLcpSize = lcpEntry.size;\n        }\n    });\n    return {\n        stop: function () {\n            stopEventListener();\n            performanceLcpSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackLargestContentfulPaint.js.map","import { addEventListeners } from '@datadog/browser-core';\nexport function trackFirstHidden(configuration, eventTarget) {\n    if (eventTarget === void 0) { eventTarget = window; }\n    var timeStamp;\n    var stopListeners;\n    if (document.visibilityState === 'hidden') {\n        timeStamp = 0;\n    }\n    else {\n        timeStamp = Infinity;\n        (stopListeners = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], function (event) {\n            if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ || document.visibilityState === 'hidden') {\n                timeStamp = event.timeStamp;\n                stopListeners();\n            }\n        }, { capture: true }).stop);\n    }\n    return {\n        get timeStamp() {\n            return timeStamp;\n        },\n        stop: function () {\n            stopListeners === null || stopListeners === void 0 ? void 0 : stopListeners();\n        },\n    };\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { round, find, ONE_SECOND, noop, elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType, createPerformanceObservable, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, viewStart, callback) {\n    if (!isLayoutShiftSupported()) {\n        return {\n            stop: noop,\n        };\n    }\n    var maxClsValue = 0;\n    var maxClsTarget;\n    var maxClsStartTime;\n    // if no layout shift happen the value should be reported as 0\n    callback({\n        value: 0,\n    });\n    var window = slidingSessionWindow();\n    var performanceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LAYOUT_SHIFT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.hadRecentInput || entry.startTime < viewStart) {\n                continue;\n            }\n            var _a = window.update(entry), cumulatedValue = _a.cumulatedValue, isMaxValue = _a.isMaxValue;\n            if (isMaxValue) {\n                var target = getTargetFromSource(entry.sources);\n                maxClsTarget = target ? new WeakRef(target) : undefined;\n                maxClsStartTime = elapsed(viewStart, entry.startTime);\n            }\n            if (cumulatedValue > maxClsValue) {\n                maxClsValue = cumulatedValue;\n                var target = maxClsTarget === null || maxClsTarget === void 0 ? void 0 : maxClsTarget.deref();\n                callback({\n                    value: round(maxClsValue, 4),\n                    targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),\n                    time: maxClsStartTime,\n                });\n            }\n        }\n    });\n    return {\n        stop: function () {\n            performanceSubscription.unsubscribe();\n        },\n    };\n}\nfunction getTargetFromSource(sources) {\n    var _a;\n    if (!sources) {\n        return;\n    }\n    return (_a = find(sources, function (source) { return !!source.node && isElementNode(source.node); })) === null || _a === void 0 ? void 0 : _a.node;\n}\nexport var MAX_WINDOW_DURATION = 5 * ONE_SECOND;\nvar MAX_UPDATE_GAP = ONE_SECOND;\nfunction slidingSessionWindow() {\n    var cumulatedValue = 0;\n    var startTime;\n    var endTime;\n    var maxValue = 0;\n    return {\n        update: function (entry) {\n            var shouldCreateNewWindow = startTime === undefined ||\n                entry.startTime - endTime >= MAX_UPDATE_GAP ||\n                entry.startTime - startTime >= MAX_WINDOW_DURATION;\n            var isMaxValue;\n            if (shouldCreateNewWindow) {\n                startTime = endTime = entry.startTime;\n                maxValue = cumulatedValue = entry.value;\n                isMaxValue = true;\n            }\n            else {\n                cumulatedValue += entry.value;\n                endTime = entry.startTime;\n                isMaxValue = entry.value > maxValue;\n                if (isMaxValue) {\n                    maxValue = entry.value;\n                }\n            }\n            return {\n                cumulatedValue: cumulatedValue,\n                isMaxValue: isMaxValue,\n            };\n        },\n    };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n    return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) && 'WeakRef' in window;\n}\n//# sourceMappingURL=trackCumulativeLayoutShift.js.map","import { elapsed, noop, ONE_MINUTE } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionSelector } from '../../action/interactionSelectorCache';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nvar MAX_INTERACTION_ENTRIES = 10;\n// Arbitrary value to cap INP outliers\nexport var MAX_INP_VALUE = (1 * ONE_MINUTE);\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType) {\n    if (!isInteractionToNextPaintSupported()) {\n        return {\n            getInteractionToNextPaint: function () { return undefined; },\n            setViewEnd: noop,\n            stop: noop,\n        };\n    }\n    var _a = trackViewInteractionCount(viewLoadingType), getViewInteractionCount = _a.getViewInteractionCount, stopViewInteractionCount = _a.stopViewInteractionCount;\n    var viewEnd = Infinity;\n    var longestInteractions = trackLongestInteractions(getViewInteractionCount);\n    var interactionToNextPaint = -1;\n    var interactionToNextPaintTargetSelector;\n    var interactionToNextPaintStartTime;\n    function handleEntries(entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.interactionId &&\n                // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n                entry.startTime >= viewStart &&\n                entry.startTime <= viewEnd) {\n                longestInteractions.process(entry);\n            }\n        }\n        var newInteraction = longestInteractions.estimateP98Interaction();\n        if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n            interactionToNextPaint = newInteraction.duration;\n            interactionToNextPaintStartTime = elapsed(viewStart, newInteraction.startTime);\n            interactionToNextPaintTargetSelector = getInteractionSelector(newInteraction.startTime);\n            if (!interactionToNextPaintTargetSelector && newInteraction.target && isElementNode(newInteraction.target)) {\n                interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n            }\n        }\n    }\n    var firstInputSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.FIRST_INPUT,\n        buffered: true,\n    }).subscribe(handleEntries);\n    var eventSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.EVENT,\n        // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n        // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n        durationThreshold: 40,\n        buffered: true,\n    }).subscribe(handleEntries);\n    return {\n        getInteractionToNextPaint: function () {\n            // If no INP duration where captured because of the performanceObserver 40ms threshold\n            // but the view interaction count > 0 then report 0\n            if (interactionToNextPaint >= 0) {\n                return {\n                    value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n                    targetSelector: interactionToNextPaintTargetSelector,\n                    time: interactionToNextPaintStartTime,\n                };\n            }\n            else if (getViewInteractionCount()) {\n                return {\n                    value: 0,\n                };\n            }\n        },\n        setViewEnd: function (viewEndTime) {\n            viewEnd = viewEndTime;\n            stopViewInteractionCount();\n        },\n        stop: function () {\n            eventSubscription.unsubscribe();\n            firstInputSubscription.unsubscribe();\n        },\n    };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n    var longestInteractions = [];\n    function sortAndTrimLongestInteractions() {\n        longestInteractions.sort(function (a, b) { return b.duration - a.duration; }).splice(MAX_INTERACTION_ENTRIES);\n    }\n    return {\n        /**\n         * Process the performance entry:\n         * - if its duration is long enough, add the performance entry to the list of worst interactions\n         * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n         */\n        process: function (entry) {\n            var interactionIndex = longestInteractions.findIndex(function (interaction) { return entry.interactionId === interaction.interactionId; });\n            var minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n            if (interactionIndex !== -1) {\n                if (entry.duration > longestInteractions[interactionIndex].duration) {\n                    longestInteractions[interactionIndex] = entry;\n                    sortAndTrimLongestInteractions();\n                }\n            }\n            else if (longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n                entry.duration > minLongestInteraction.duration) {\n                longestInteractions.push(entry);\n                sortAndTrimLongestInteractions();\n            }\n        },\n        /**\n         * Compute the p98 longest interaction.\n         * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n         */\n        estimateP98Interaction: function () {\n            var interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n            return longestInteractions[interactionIndex];\n        },\n    };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n    initInteractionCountPolyfill();\n    var previousInteractionCount = viewLoadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? 0 : getInteractionCount();\n    var state = { stopped: false };\n    function computeViewInteractionCount() {\n        return getInteractionCount() - previousInteractionCount;\n    }\n    return {\n        getViewInteractionCount: function () {\n            if (state.stopped) {\n                return state.interactionCount;\n            }\n            return computeViewInteractionCount();\n        },\n        stopViewInteractionCount: function () {\n            state = { stopped: true, interactionCount: computeViewInteractionCount() };\n        },\n    };\n}\nexport function isInteractionToNextPaintSupported() {\n    return (supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n        window.PerformanceEventTiming &&\n        'interactionId' in PerformanceEventTiming.prototype);\n}\n//# sourceMappingURL=trackInteractionToNextPaint.js.map","export function getScrollX() {\n    var scrollX;\n    var visual = window.visualViewport;\n    if (visual) {\n        scrollX = visual.pageLeft - visual.offsetLeft;\n    }\n    else if (window.scrollX !== undefined) {\n        scrollX = window.scrollX;\n    }\n    else {\n        scrollX = window.pageXOffset || 0;\n    }\n    return Math.round(scrollX);\n}\nexport function getScrollY() {\n    var scrollY;\n    var visual = window.visualViewport;\n    if (visual) {\n        scrollY = visual.pageTop - visual.offsetTop;\n    }\n    else if (window.scrollY !== undefined) {\n        scrollY = window.scrollY;\n    }\n    else {\n        scrollY = window.pageYOffset || 0;\n    }\n    return Math.round(scrollY);\n}\n//# sourceMappingURL=scroll.js.map","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable, createContextManager, } from '@datadog/browser-core';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, windowOpenObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n    var activeViews = new Set();\n    var currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n    startViewLifeCycle();\n    var locationChangeSubscription;\n    if (areViewsTrackedAutomatically) {\n        locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n    }\n    function startNewView(loadingType, startClocks, viewOptions) {\n        var newlyCreatedView = newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, location, loadingType, startClocks, viewOptions);\n        activeViews.add(newlyCreatedView);\n        newlyCreatedView.stopObservable.subscribe(function () {\n            activeViews.delete(newlyCreatedView);\n        });\n        return newlyCreatedView;\n    }\n    function startViewLifeCycle() {\n        lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n            // Renew view on session renewal\n            currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n                name: currentView.name,\n                service: currentView.service,\n                version: currentView.version,\n                context: currentView.contextManager.getContext(),\n            });\n        });\n        lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n            currentView.end({ sessionIsActive: false });\n        });\n        // End the current view on page unload\n        lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n            if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n                currentView.end();\n            }\n        });\n    }\n    function renewViewOnLocationChange(locationChangeObservable) {\n        return locationChangeObservable.subscribe(function (_a) {\n            var oldLocation = _a.oldLocation, newLocation = _a.newLocation;\n            if (areDifferentLocation(oldLocation, newLocation)) {\n                currentView.end();\n                currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n            }\n        });\n    }\n    return {\n        addTiming: function (name, time) {\n            if (time === void 0) { time = timeStampNow(); }\n            currentView.addTiming(name, time);\n        },\n        startView: function (options, startClocks) {\n            currentView.end({ endClocks: startClocks });\n            currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n        },\n        setViewContext: function (context) {\n            currentView.contextManager.setContext(context);\n        },\n        setViewContextProperty: function (key, value) {\n            currentView.contextManager.setContextProperty(key, value);\n        },\n        setViewName: function (name) {\n            currentView.setViewName(name);\n        },\n        stop: function () {\n            if (locationChangeSubscription) {\n                locationChangeSubscription.unsubscribe();\n            }\n            currentView.end();\n            activeViews.forEach(function (view) { return view.stop(); });\n        },\n    };\n}\nfunction newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {\n    if (startClocks === void 0) { startClocks = clocksNow(); }\n    // Setup initial values\n    var id = generateUUID();\n    var stopObservable = new Observable();\n    var customTimings = {};\n    var documentVersion = 0;\n    var endClocks;\n    var location = shallowClone(initialLocation);\n    var contextManager = createContextManager();\n    var sessionIsActive = true;\n    var name;\n    var service;\n    var version;\n    var context;\n    if (viewOptions) {\n        name = viewOptions.name;\n        service = viewOptions.service || undefined;\n        version = viewOptions.version || undefined;\n        if (viewOptions.context) {\n            context = viewOptions.context;\n            // use ContextManager to update the context so we always sanitize it\n            contextManager.setContext(context);\n        }\n    }\n    var viewCreatedEvent = {\n        id: id,\n        name: name,\n        startClocks: startClocks,\n        service: service,\n        version: version,\n        context: context,\n    };\n    lifeCycle.notify(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, viewCreatedEvent);\n    lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, viewCreatedEvent);\n    // Update the view every time the measures are changing\n    var _a = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n        leading: false,\n    }), scheduleViewUpdate = _a.throttled, cancelScheduleViewUpdate = _a.cancel;\n    var _b = trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, startClocks), setLoadEvent = _b.setLoadEvent, setViewEnd = _b.setViewEnd, stopCommonViewMetricsTracking = _b.stop, stopINPTracking = _b.stopINPTracking, getCommonViewMetrics = _b.getCommonViewMetrics;\n    var _c = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */\n        ? trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate)\n        : { stop: noop, initialViewMetrics: {} }, stopInitialViewMetricsTracking = _c.stop, initialViewMetrics = _c.initialViewMetrics;\n    var _d = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate), stopEventCountsTracking = _d.stop, eventCounts = _d.eventCounts;\n    // Session keep alive\n    var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n    // Initial view update\n    triggerViewUpdate();\n    // View context update should always be throttled\n    contextManager.changeObservable.subscribe(function () {\n        lifeCycle.notify(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, {\n            id: id,\n            name: name,\n            context: contextManager.getContext(),\n            startClocks: startClocks,\n        });\n        scheduleViewUpdate();\n    });\n    function triggerViewUpdate() {\n        cancelScheduleViewUpdate();\n        documentVersion += 1;\n        var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n        lifeCycle.notify(4 /* LifeCycleEventType.VIEW_UPDATED */, {\n            customTimings: customTimings,\n            documentVersion: documentVersion,\n            id: id,\n            name: name,\n            service: service,\n            version: version,\n            context: contextManager.getContext(),\n            loadingType: loadingType,\n            location: location,\n            startClocks: startClocks,\n            commonViewMetrics: getCommonViewMetrics(),\n            initialViewMetrics: initialViewMetrics,\n            duration: elapsed(startClocks.timeStamp, currentEnd),\n            isActive: endClocks === undefined,\n            sessionIsActive: sessionIsActive,\n            eventCounts: eventCounts,\n        });\n    }\n    return {\n        get name() {\n            return name;\n        },\n        service: service,\n        version: version,\n        contextManager: contextManager,\n        stopObservable: stopObservable,\n        end: function (options) {\n            var _this = this;\n            var _a, _b;\n            if (options === void 0) { options = {}; }\n            if (endClocks) {\n                // view already ended\n                return;\n            }\n            endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n            sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n            lifeCycle.notify(5 /* LifeCycleEventType.VIEW_ENDED */, { endClocks: endClocks });\n            lifeCycle.notify(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, { endClocks: endClocks });\n            clearInterval(keepAliveIntervalId);\n            setViewEnd(endClocks.relative);\n            stopCommonViewMetricsTracking();\n            triggerViewUpdate();\n            setTimeout(function () {\n                _this.stop();\n            }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n        },\n        stop: function () {\n            stopInitialViewMetricsTracking();\n            stopEventCountsTracking();\n            stopINPTracking();\n            stopObservable.notify();\n        },\n        addTiming: function (name, time) {\n            if (endClocks) {\n                return;\n            }\n            var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n            customTimings[sanitizeTiming(name)] = relativeTime;\n            scheduleViewUpdate();\n        },\n        setViewName: function (updatedName) {\n            name = updatedName;\n            triggerViewUpdate();\n        },\n    };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n    var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n    if (sanitized !== name) {\n        display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n    }\n    return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n    return (currentLocation.pathname !== otherLocation.pathname ||\n        (!isHashAnAnchor(otherLocation.hash) &&\n            getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n    var correspondingId = hash.substring(1);\n    // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n    return correspondingId !== '' && !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n    var index = hash.indexOf('?');\n    return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    // TODO - Improve configuration type and remove assertion\n    var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n    stopCallbacks.push(function () { return sessionStore.stop(); });\n    var sessionContextHistory = createValueHistory({\n        expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n    });\n    stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n    sessionStore.renewObservable.subscribe(function () {\n        sessionContextHistory.add(buildSessionContext(), relativeNow());\n        renewObservable.notify();\n    });\n    sessionStore.expireObservable.subscribe(function () {\n        expireObservable.notify();\n        sessionContextHistory.closeActive(relativeNow());\n    });\n    // We expand/renew session unconditionally as tracking consent is always granted when the session\n    // manager is started.\n    sessionStore.expandOrRenewSession();\n    sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n    trackingConsentState.observable.subscribe(function () {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n        else {\n            sessionStore.expire();\n        }\n    });\n    trackActivity(configuration, function () {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n    });\n    trackVisibility(configuration, function () { return sessionStore.expandSession(); });\n    trackResume(configuration, function () { return sessionStore.restartSession(); });\n    function buildSessionContext() {\n        return {\n            id: sessionStore.getSession().id,\n            trackingType: sessionStore.getSession()[productKey],\n            isReplayForced: !!sessionStore.getSession().forcedReplay,\n            anonymousId: sessionStore.getSession().anonymousId,\n        };\n    }\n    return {\n        findSession: function (startTime, options) { return sessionContextHistory.find(startTime, options); },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n        expire: sessionStore.expire,\n        updateSessionState: sessionStore.updateSessionState,\n    };\n}\nexport function stopSessionManager() {\n    stopCallbacks.forEach(function (e) { return e(); });\n    stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n    var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n    stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n    var expandSessionWhenVisible = function () {\n        if (document.visibilityState === 'visible') {\n            expandSession();\n        }\n    };\n    var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n    stopCallbacks.push(stop);\n    var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n    stopCallbacks.push(function () {\n        clearInterval(visibilityCheckInterval);\n    });\n}\nfunction trackResume(configuration, cb) {\n    var stop = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true }).stop;\n    stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","import { Observable, bridgeSupports, noop, performDraw, startSessionManager, } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle, trackingConsentState) {\n    var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) { return computeSessionState(configuration, rawTrackingType); }, trackingConsentState);\n    sessionManager.expireObservable.subscribe(function () {\n        lifeCycle.notify(9 /* LifeCycleEventType.SESSION_EXPIRED */);\n    });\n    sessionManager.renewObservable.subscribe(function () {\n        lifeCycle.notify(10 /* LifeCycleEventType.SESSION_RENEWED */);\n    });\n    sessionManager.sessionStateUpdateObservable.subscribe(function (_a) {\n        var previousState = _a.previousState, newState = _a.newState;\n        if (!previousState.forcedReplay && newState.forcedReplay) {\n            var sessionEntity = sessionManager.findSession();\n            if (sessionEntity) {\n                sessionEntity.isReplayForced = true;\n            }\n        }\n    });\n    return {\n        findTrackedSession: function (startTime) {\n            var session = sessionManager.findSession(startTime);\n            if (!session || !isTypeTracked(session.trackingType)) {\n                return;\n            }\n            return {\n                id: session.id,\n                sessionReplay: session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n                    ? 1 /* SessionReplayState.SAMPLED */\n                    : session.isReplayForced\n                        ? 2 /* SessionReplayState.FORCED */\n                        : 0 /* SessionReplayState.OFF */,\n                anonymousId: session.anonymousId,\n            };\n        },\n        expire: sessionManager.expire,\n        expireObservable: sessionManager.expireObservable,\n        setForcedReplay: function () { return sessionManager.updateSessionState({ forcedReplay: '1' }); },\n    };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n    var session = {\n        id: '00000000-aaaa-0000-aaaa-000000000000',\n        sessionReplay: bridgeSupports(\"records\" /* BridgeCapability.RECORDS */) ? 1 /* SessionReplayState.SAMPLED */ : 0 /* SessionReplayState.OFF */,\n    };\n    return {\n        findTrackedSession: function () { return session; },\n        expire: noop,\n        expireObservable: new Observable(),\n        setForcedReplay: noop,\n    };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n    var trackingType;\n    if (hasValidRumSession(rawTrackingType)) {\n        trackingType = rawTrackingType;\n    }\n    else if (!performDraw(configuration.sessionSampleRate)) {\n        trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n    }\n    else if (!performDraw(configuration.sessionReplaySampleRate)) {\n        trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n    }\n    else {\n        trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n    }\n    return {\n        trackingType: trackingType,\n        isTracked: isTypeTracked(trackingType),\n    };\n}\nfunction hasValidRumSession(trackingType) {\n    return (trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ ||\n        trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ||\n        trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */);\n}\nfunction isTypeTracked(rumSessionType) {\n    return (rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ ||\n        rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */);\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch(_a) {\n    var encoder = _a.encoder, request = _a.request, flushController = _a.flushController, messageBytesLimit = _a.messageBytesLimit;\n    var upsertBuffer = {};\n    var flushSubscription = flushController.flushObservable.subscribe(function (event) { return flush(event); });\n    function push(serializedMessage, estimatedMessageBytesCount, key) {\n        flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n        if (key !== undefined) {\n            upsertBuffer[key] = serializedMessage;\n            flushController.notifyAfterAddMessage();\n        }\n        else {\n            encoder.write(encoder.isEmpty ? serializedMessage : \"\\n\".concat(serializedMessage), function (realMessageBytesCount) {\n                flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n            });\n        }\n    }\n    function hasMessageFor(key) {\n        return key !== undefined && upsertBuffer[key] !== undefined;\n    }\n    function remove(key) {\n        var removedMessage = upsertBuffer[key];\n        delete upsertBuffer[key];\n        var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n        flushController.notifyAfterRemoveMessage(messageBytesCount);\n    }\n    function addOrUpdate(message, key) {\n        var serializedMessage = jsonStringify(message);\n        var estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n        if (estimatedMessageBytesCount >= messageBytesLimit) {\n            display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(messageBytesLimit, \"KB. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#technical-limitations\"));\n            return;\n        }\n        if (hasMessageFor(key)) {\n            remove(key);\n        }\n        push(serializedMessage, estimatedMessageBytesCount, key);\n    }\n    function flush(event) {\n        var upsertMessages = objectValues(upsertBuffer).join('\\n');\n        upsertBuffer = {};\n        var isPageExit = isPageExitReason(event.reason);\n        var send = isPageExit ? request.sendOnExit : request.send;\n        if (isPageExit &&\n            // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n            // if the encoder is async we need to send two requests in some cases (one for encoded data\n            // and the other for non-encoded data). But if it's not async, we don't have to worry about\n            // it and always send a single request.\n            encoder.isAsync) {\n            var encoderResult = encoder.finishSync();\n            // Send encoded messages\n            if (encoderResult.outputBytesCount) {\n                send(formatPayloadFromEncoder(encoderResult));\n            }\n            // Send messages that are not yet encoded at this point\n            var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n            if (pendingMessages) {\n                send({\n                    data: pendingMessages,\n                    bytesCount: computeBytesCount(pendingMessages),\n                });\n            }\n        }\n        else {\n            if (upsertMessages) {\n                encoder.write(encoder.isEmpty ? upsertMessages : \"\\n\".concat(upsertMessages));\n            }\n            encoder.finish(function (encoderResult) {\n                send(formatPayloadFromEncoder(encoderResult));\n            });\n        }\n    }\n    return {\n        flushController: flushController,\n        add: addOrUpdate,\n        upsert: addOrUpdate,\n        stop: flushSubscription.unsubscribe,\n    };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n    var data;\n    if (typeof encoderResult.output === 'string') {\n        data = encoderResult.output;\n    }\n    else {\n        data = new Blob([encoderResult.output], {\n            // This will set the 'Content-Type: text/plain' header. Reasoning:\n            // * The intake rejects the request if there is no content type.\n            // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n            // could induce higher intake load (and maybe has other impacts).\n            // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n            // new lines.\n            type: 'text/plain',\n        });\n    }\n    return {\n        data: data,\n        bytesCount: encoderResult.outputBytesCount,\n        encoding: encoderResult.encoding,\n    };\n}\n//# sourceMappingURL=batch.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: function () { return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError); },\n            onFailure: function () {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n        return;\n    }\n    setTimeout(function () {\n        var payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: function () {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n            },\n            onFailure: function () {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n    var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, function (response) {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* TransportStatus.UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n    if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: \"Reached max \".concat(trackType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    var previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return (response.type !== 'opaque' &&\n        ((response.status === 0 && !navigator.onLine) ||\n            response.status === 408 ||\n            response.status === 429 ||\n            isServerError(response.status)));\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* TransportStatus.UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    var queue = [];\n    return {\n        bytesCount: 0,\n        enqueue: function (payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first: function () {\n            return queue[0];\n        },\n        dequeue: function () {\n            var payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size: function () {\n            return queue.length;\n        },\n        isFull: function () {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle: function (payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add: function (payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove: function (payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","export function isServerError(status) {\n    return status >= 500;\n}\nexport function tryToClone(response) {\n    try {\n        return response.clone();\n    }\n    catch (_a) {\n        // clone can throw if the response has already been used by another instrumentation or is disturbed\n        return;\n    }\n}\n//# sourceMappingURL=responseUtils.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n    var retryState = newRetryState();\n    var sendStrategyForRetry = function (payload, onResponse) {\n        return fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n    };\n    return {\n        send: function (payload) {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: function (payload) {\n            sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n    var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            var beaconUrl = endpointBuilder.build('beacon', payload);\n            var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    var xhrUrl = endpointBuilder.build('xhr', payload);\n    sendXHR(xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        addTelemetryError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n    var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        var fetchUrl = endpointBuilder.build('fetch', payload);\n        fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type }); }), monitor(function () {\n            var xhrUrl = endpointBuilder.build('xhr', payload);\n            // failed to queue the request\n            sendXHR(xhrUrl, payload.data, onResponse);\n        }));\n    }\n    else {\n        var xhrUrl = endpointBuilder.build('xhr', payload);\n        sendXHR(xhrUrl, payload.data, onResponse);\n    }\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function sendXHR(url, data, onResponse) {\n    var request = new XMLHttpRequest();\n    request.open('POST', url, true);\n    if (data instanceof Blob) {\n        // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n        // automatically, so the intake request ends up being rejected with an HTTP status 415\n        // Defining the header manually fixes this issue.\n        request.setRequestHeader('Content-Type', data.type);\n    }\n    addEventListener(\n    // allow untrusted event to acount for synthetic event dispatched by third party xhr wrapper\n    { allowUntrustedEvents: true }, request, 'loadend', function () {\n        onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n    }, {\n        // prevent multiple onResponse callbacks\n        // if the xhr instance is reused by a third party\n        once: true,\n    });\n    request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { addEventListener, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n    var currentLocation = shallowClone(location);\n    return new Observable(function (observable) {\n        var stopHistoryTracking = trackHistory(configuration, onLocationChange).stop;\n        var stopHashTracking = trackHash(configuration, onLocationChange).stop;\n        function onLocationChange() {\n            if (currentLocation.href === location.href) {\n                return;\n            }\n            var newLocation = shallowClone(location);\n            observable.notify({\n                newLocation: newLocation,\n                oldLocation: currentLocation,\n            });\n            currentLocation = newLocation;\n        }\n        return function () {\n            stopHistoryTracking();\n            stopHashTracking();\n        };\n    });\n}\nfunction trackHistory(configuration, onHistoryChange) {\n    var stopInstrumentingPushState = instrumentMethod(getHistoryInstrumentationTarget('pushState'), 'pushState', function (_a) {\n        var onPostCall = _a.onPostCall;\n        onPostCall(onHistoryChange);\n    }).stop;\n    var stopInstrumentingReplaceState = instrumentMethod(getHistoryInstrumentationTarget('replaceState'), 'replaceState', function (_a) {\n        var onPostCall = _a.onPostCall;\n        onPostCall(onHistoryChange);\n    }).stop;\n    var removeListener = addEventListener(configuration, window, \"popstate\" /* DOM_EVENT.POP_STATE */, onHistoryChange).stop;\n    return {\n        stop: function () {\n            stopInstrumentingPushState();\n            stopInstrumentingReplaceState();\n            removeListener();\n        },\n    };\n}\nfunction trackHash(configuration, onHashChange) {\n    return addEventListener(configuration, window, \"hashchange\" /* DOM_EVENT.HASH_CHANGE */, onHashChange);\n}\nfunction getHistoryInstrumentationTarget(methodName) {\n    // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))\n    // are wrapping the instance method. In that case we should also wrap the instance method.\n    return Object.prototype.hasOwnProperty.call(history, methodName) ? history : History.prototype;\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { elapsed, createValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, } from '@datadog/browser-core';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(configuration, maxPageStateEntriesSelectable) {\n    if (maxPageStateEntriesSelectable === void 0) { maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE; }\n    var pageStateEntryHistory = createValueHistory({\n        expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n        maxEntries: MAX_PAGE_STATE_ENTRIES,\n    });\n    var currentPageState;\n    addPageState(getPageState(), relativeNow());\n    var stopEventListeners = addEventListeners(configuration, window, [\n        \"pageshow\" /* DOM_EVENT.PAGE_SHOW */,\n        \"focus\" /* DOM_EVENT.FOCUS */,\n        \"blur\" /* DOM_EVENT.BLUR */,\n        \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */,\n        \"resume\" /* DOM_EVENT.RESUME */,\n        \"freeze\" /* DOM_EVENT.FREEZE */,\n        \"pagehide\" /* DOM_EVENT.PAGE_HIDE */,\n    ], function (event) {\n        addPageState(computePageState(event), event.timeStamp);\n    }, { capture: true }).stop;\n    function addPageState(nextPageState, startTime) {\n        if (startTime === void 0) { startTime = relativeNow(); }\n        if (nextPageState === currentPageState) {\n            return;\n        }\n        currentPageState = nextPageState;\n        pageStateEntryHistory.closeActive(startTime);\n        pageStateEntryHistory.add({ state: currentPageState, startTime: startTime }, startTime);\n    }\n    var pageStateHistory = {\n        findAll: function (eventStartTime, duration) {\n            var pageStateEntries = pageStateEntryHistory.findAll(eventStartTime, duration);\n            if (pageStateEntries.length === 0) {\n                return;\n            }\n            var pageStateServerEntries = [];\n            // limit the number of entries to return\n            var limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable);\n            // loop page state entries backward to return the selected ones in desc order\n            for (var index = pageStateEntries.length - 1; index >= limit; index--) {\n                var pageState = pageStateEntries[index];\n                // compute the start time relative to the event start time (ex: to be relative to the view start time)\n                var relativeStartTime = elapsed(eventStartTime, pageState.startTime);\n                pageStateServerEntries.push({\n                    state: pageState.state,\n                    start: toServerDuration(relativeStartTime),\n                });\n            }\n            return pageStateServerEntries;\n        },\n        wasInPageStateAt: function (state, startTime) {\n            return pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0);\n        },\n        wasInPageStateDuringPeriod: function (state, startTime, duration) {\n            return pageStateEntryHistory.findAll(startTime, duration).some(function (pageState) { return pageState.state === state; });\n        },\n        addPageState: addPageState,\n        stop: function () {\n            stopEventListeners();\n            pageStateEntryHistory.stop();\n        },\n    };\n    return pageStateHistory;\n}\nfunction computePageState(event) {\n    if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n        return \"frozen\" /* PageState.FROZEN */;\n    }\n    else if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */) {\n        return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n    }\n    return getPageState();\n}\nfunction getPageState() {\n    if (document.visibilityState === 'hidden') {\n        return \"hidden\" /* PageState.HIDDEN */;\n    }\n    if (document.hasFocus()) {\n        return \"active\" /* PageState.ACTIVE */;\n    }\n    return \"passive\" /* PageState.PASSIVE */;\n}\n//# sourceMappingURL=pageStateHistory.js.map","import { setInterval, clearInterval, Observable, addEventListener, ONE_SECOND, findCommaSeparatedValue, find, } from '@datadog/browser-core';\nexport function createCookieObservable(configuration, cookieName) {\n    var detectCookieChangeStrategy = window.cookieStore\n        ? listenToCookieStoreChange(configuration)\n        : watchCookieFallback;\n    return new Observable(function (observable) {\n        return detectCookieChangeStrategy(cookieName, function (event) { return observable.notify(event); });\n    });\n}\nfunction listenToCookieStoreChange(configuration) {\n    return function (cookieName, callback) {\n        var listener = addEventListener(configuration, window.cookieStore, \"change\" /* DOM_EVENT.CHANGE */, function (event) {\n            // Based on our experimentation, we're assuming that entries for the same cookie cannot be in both the 'changed' and 'deleted' arrays.\n            // However, due to ambiguity in the specification, we asked for clarification: https://github.com/WICG/cookie-store/issues/226\n            var changeEvent = find(event.changed, function (event) { return event.name === cookieName; }) ||\n                find(event.deleted, function (event) { return event.name === cookieName; });\n            if (changeEvent) {\n                callback(changeEvent.value);\n            }\n        });\n        return listener.stop;\n    };\n}\nexport var WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND;\nfunction watchCookieFallback(cookieName, callback) {\n    var previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n    var watchCookieIntervalId = setInterval(function () {\n        var cookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n        if (cookieValue !== previousCookieValue) {\n            callback(cookieValue);\n        }\n    }, WATCH_COOKIE_INTERVAL_DELAY);\n    return function () {\n        clearInterval(watchCookieIntervalId);\n    };\n}\n//# sourceMappingURL=cookieObservable.js.map","import { getInitCookie } from '@datadog/browser-core';\nimport { createCookieObservable } from '../../browser/cookieObservable';\nexport var CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id';\nexport function startCiVisibilityContext(configuration, cookieObservable) {\n    var _a;\n    if (cookieObservable === void 0) { cookieObservable = createCookieObservable(configuration, CI_VISIBILITY_TEST_ID_COOKIE_NAME); }\n    var testExecutionId = getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || ((_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId'));\n    var cookieObservableSubscription = cookieObservable.subscribe(function (value) {\n        testExecutionId = value;\n    });\n    return {\n        get: function () {\n            if (typeof testExecutionId === 'string') {\n                return {\n                    test_execution_id: testExecutionId,\n                };\n            }\n        },\n        stop: function () { return cookieObservableSubscription.unsubscribe(); },\n    };\n}\n//# sourceMappingURL=ciVisibilityContext.js.map","import { buildUrl } from '@datadog/browser-core';\nimport { getParentNode, isNodeShadowRoot, CENSORED_STRING_MARK, shouldMaskNode } from '@datadog/browser-rum-core';\nvar serializedNodeIds = new WeakMap();\nexport function hasSerializedNode(node) {\n    return serializedNodeIds.has(node);\n}\nexport function nodeAndAncestorsHaveSerializedNode(node) {\n    var current = node;\n    while (current) {\n        if (!hasSerializedNode(current) && !isNodeShadowRoot(current)) {\n            return false;\n        }\n        current = getParentNode(current);\n    }\n    return true;\n}\nexport function getSerializedNodeId(node) {\n    return serializedNodeIds.get(node);\n}\nexport function setSerializedNodeId(node, serializeNodeId) {\n    serializedNodeIds.set(node, serializeNodeId);\n}\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element, nodePrivacyLevel) {\n    /*\n     BROWSER SPEC NOTE: <input>, <select>\n     For some <input> elements, the `value` is an exceptional property/attribute that has the\n     value synced between el.value and el.getAttribute()\n     input[type=button,checkbox,hidden,image,radio,reset,submit]\n     */\n    var tagName = element.tagName;\n    var value = element.value;\n    if (shouldMaskNode(element, nodePrivacyLevel)) {\n        var type = element.type;\n        if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n            // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n            // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n            return value;\n        }\n        else if (!value || tagName === 'OPTION') {\n            // <Option> value provides no benefit\n            return;\n        }\n        return CENSORED_STRING_MARK;\n    }\n    if (tagName === 'OPTION' || tagName === 'SELECT') {\n        return element.value;\n    }\n    if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n        return;\n    }\n    return value;\n}\nexport var URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm;\nexport var ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//;\nexport var DATA_URI = /^data:.*,/i;\nexport function switchToAbsoluteUrl(cssText, cssHref) {\n    return cssText.replace(URL_IN_CSS_REF, function (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) {\n        var url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;\n        if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n            return matchingSubstring;\n        }\n        var quote = singleQuote || doubleQuote || '';\n        return \"url(\".concat(quote).concat(makeUrlAbsolute(url, cssHref)).concat(quote, \")\");\n    });\n}\nexport function makeUrlAbsolute(url, baseUrl) {\n    try {\n        return buildUrl(url, baseUrl).href;\n    }\n    catch (_a) {\n        return url;\n    }\n}\nvar TAG_NAME_REGEX = /[^a-z1-6-_]/;\nexport function getValidTagName(tagName) {\n    var processedTagName = tagName.toLowerCase().trim();\n    if (TAG_NAME_REGEX.test(processedTagName)) {\n        // if the tag name is odd and we cannot extract\n        // anything from the string, then we return a\n        // generic div\n        return 'div';\n    }\n    return processedTagName;\n}\nexport function censoredImageForSize(width, height) {\n    return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\".concat(width, \"' height='\").concat(height, \"' style='background-color:silver'%3E%3C/svg%3E\");\n}\n//# sourceMappingURL=serializationUtils.js.map","export function serializeStyleSheets(cssStyleSheets) {\n    if (cssStyleSheets === undefined || cssStyleSheets.length === 0) {\n        return undefined;\n    }\n    return cssStyleSheets.map(function (cssStyleSheet) {\n        var rules = cssStyleSheet.cssRules || cssStyleSheet.rules;\n        var cssRules = Array.from(rules, function (cssRule) { return cssRule.cssText; });\n        var styleSheet = {\n            cssRules: cssRules,\n            disabled: cssStyleSheet.disabled || undefined,\n            media: cssStyleSheet.media.length > 0 ? Array.from(cssStyleSheet.media) : undefined,\n        };\n        return styleSheet;\n    });\n}\n//# sourceMappingURL=serializeStyleSheets.js.map","import { startsWith } from '@datadog/browser-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, CENSORED_STRING_MARK, CENSORED_IMG_MARK, STABLE_ATTRIBUTES, isLongDataUrl, sanitizeDataUrl, } from '@datadog/browser-rum-core';\nimport { censoredImageForSize } from './serializationUtils';\nexport function serializeAttribute(element, nodePrivacyLevel, attributeName, configuration) {\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // dup condition for direct access case\n        return null;\n    }\n    var attributeValue = element.getAttribute(attributeName);\n    if (nodePrivacyLevel === NodePrivacyLevel.MASK &&\n        attributeName !== PRIVACY_ATTR_NAME &&\n        !STABLE_ATTRIBUTES.includes(attributeName) &&\n        attributeName !== configuration.actionNameAttribute) {\n        var tagName = element.tagName;\n        switch (attributeName) {\n            // Mask Attribute text content\n            case 'title':\n            case 'alt':\n            case 'placeholder':\n                return CENSORED_STRING_MARK;\n        }\n        // mask image URLs\n        if (tagName === 'IMG' && (attributeName === 'src' || attributeName === 'srcset')) {\n            // generate image with similar dimension than the original to have the same rendering behaviour\n            var image = element;\n            if (image.naturalWidth > 0) {\n                return censoredImageForSize(image.naturalWidth, image.naturalHeight);\n            }\n            var _a = element.getBoundingClientRect(), width = _a.width, height = _a.height;\n            if (width > 0 || height > 0) {\n                return censoredImageForSize(width, height);\n            }\n            // if we can't get the image size, fallback to the censored image\n            return CENSORED_IMG_MARK;\n        }\n        // mask source URLs\n        if (tagName === 'SOURCE' && (attributeName === 'src' || attributeName === 'srcset')) {\n            return CENSORED_IMG_MARK;\n        }\n        // mask <a> URLs\n        if (tagName === 'A' && attributeName === 'href') {\n            return CENSORED_STRING_MARK;\n        }\n        // mask data-* attributes\n        if (attributeValue && startsWith(attributeName, 'data-')) {\n            // Exception: it's safe to reveal the `${PRIVACY_ATTR_NAME}` attr\n            return CENSORED_STRING_MARK;\n        }\n        // mask iframe srcdoc\n        if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n            return CENSORED_STRING_MARK;\n        }\n    }\n    if (!attributeValue || typeof attributeValue !== 'string') {\n        return attributeValue;\n    }\n    // Minimum Fix for customer.\n    if (isLongDataUrl(attributeValue)) {\n        return sanitizeDataUrl(attributeValue);\n    }\n    return attributeValue;\n}\n//# sourceMappingURL=serializeAttribute.js.map","import { NodePrivacyLevel, shouldMaskNode } from '@datadog/browser-rum-core';\nimport { isSafari } from '@datadog/browser-core';\nimport { getElementInputValue, switchToAbsoluteUrl, getValidTagName } from './serializationUtils';\nimport { serializeAttribute } from './serializeAttribute';\nexport function serializeAttributes(element, nodePrivacyLevel, options) {\n    var _a;\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        return {};\n    }\n    var safeAttrs = {};\n    var tagName = getValidTagName(element.tagName);\n    var doc = element.ownerDocument;\n    for (var i = 0; i < element.attributes.length; i += 1) {\n        var attribute = element.attributes.item(i);\n        var attributeName = attribute.name;\n        var attributeValue = serializeAttribute(element, nodePrivacyLevel, attributeName, options.configuration);\n        if (attributeValue !== null) {\n            safeAttrs[attributeName] = attributeValue;\n        }\n    }\n    if (element.value &&\n        (tagName === 'textarea' || tagName === 'select' || tagName === 'option' || tagName === 'input')) {\n        var formValue = getElementInputValue(element, nodePrivacyLevel);\n        if (formValue !== undefined) {\n            safeAttrs.value = formValue;\n        }\n    }\n    /**\n     * <Option> can be selected, which occurs if its `value` matches ancestor `<Select>.value`\n     */\n    if (tagName === 'option' && nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n        // For privacy=`MASK`, all the values would be the same, so skip.\n        var optionElement = element;\n        if (optionElement.selected) {\n            safeAttrs.selected = optionElement.selected;\n        }\n    }\n    // remote css\n    if (tagName === 'link') {\n        var stylesheet = Array.from(doc.styleSheets).find(function (s) { return s.href === element.href; });\n        var cssText = getCssRulesString(stylesheet);\n        if (cssText && stylesheet) {\n            safeAttrs._cssText = cssText;\n        }\n    }\n    // dynamic stylesheet\n    if (tagName === 'style' && element.sheet) {\n        var cssText = getCssRulesString(element.sheet);\n        if (cssText) {\n            safeAttrs._cssText = cssText;\n        }\n    }\n    /**\n     * Forms: input[type=checkbox,radio]\n     * The `checked` property for <input> is a little bit special:\n     * 1. el.checked is a setter that returns if truthy.\n     * 2. getAttribute returns the string value\n     * getAttribute('checked') does not sync with `Element.checked`, so use JS property\n     * NOTE: `checked` property exists on `HTMLInputElement`. For serializer assumptions, we check for type=radio|check.\n     */\n    var inputElement = element;\n    if (tagName === 'input' && (inputElement.type === 'radio' || inputElement.type === 'checkbox')) {\n        if (nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n            safeAttrs.checked = !!inputElement.checked;\n        }\n        else if (shouldMaskNode(inputElement, nodePrivacyLevel)) {\n            delete safeAttrs.checked;\n        }\n    }\n    /**\n     * Serialize the media playback state\n     */\n    if (tagName === 'audio' || tagName === 'video') {\n        var mediaElement = element;\n        safeAttrs.rr_mediaState = mediaElement.paused ? 'paused' : 'played';\n    }\n    /**\n     * Serialize the scroll state for each element only for full snapshot\n     */\n    var scrollTop;\n    var scrollLeft;\n    var serializationContext = options.serializationContext;\n    switch (serializationContext.status) {\n        case 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */:\n            scrollTop = Math.round(element.scrollTop);\n            scrollLeft = Math.round(element.scrollLeft);\n            if (scrollTop || scrollLeft) {\n                serializationContext.elementsScrollPositions.set(element, { scrollTop: scrollTop, scrollLeft: scrollLeft });\n            }\n            break;\n        case 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */:\n            if (serializationContext.elementsScrollPositions.has(element)) {\n                ;\n                (_a = serializationContext.elementsScrollPositions.get(element), scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft);\n            }\n            break;\n    }\n    if (scrollLeft) {\n        safeAttrs.rr_scrollLeft = scrollLeft;\n    }\n    if (scrollTop) {\n        safeAttrs.rr_scrollTop = scrollTop;\n    }\n    return safeAttrs;\n}\nexport function getCssRulesString(cssStyleSheet) {\n    if (!cssStyleSheet) {\n        return null;\n    }\n    var rules;\n    try {\n        rules = cssStyleSheet.rules || cssStyleSheet.cssRules;\n    }\n    catch (_a) {\n        // if css is protected by CORS we cannot access cssRules see: https://www.w3.org/TR/cssom-1/#the-cssstylesheet-interface\n    }\n    if (!rules) {\n        return null;\n    }\n    var styleSheetCssText = Array.from(rules, isSafari() ? getCssRuleStringForSafari : getCssRuleString).join('');\n    return switchToAbsoluteUrl(styleSheetCssText, cssStyleSheet.href);\n}\nfunction getCssRuleStringForSafari(rule) {\n    // Safari does not escape attribute selectors containing : properly\n    // https://bugs.webkit.org/show_bug.cgi?id=184604\n    if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n        // This regex replaces [foo:bar] by [foo\\\\:bar]\n        var escapeColon = /(\\[[\\w-]+[^\\\\])(:[^\\]]+\\])/g;\n        return rule.cssText.replace(escapeColon, '$1\\\\$2');\n    }\n    return getCssRuleString(rule);\n}\nfunction getCssRuleString(rule) {\n    // If it's an @import rule, try to inline sub-rules recursively with `getCssRulesString`. This\n    // operation can fail if the imported stylesheet is protected by CORS, in which case we fallback\n    // to the @import rule CSS text.\n    return (isCSSImportRule(rule) && getCssRulesString(rule.styleSheet)) || rule.cssText;\n}\nfunction isCSSImportRule(rule) {\n    return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n    return 'selectorText' in rule;\n}\n//# sourceMappingURL=serializeAttributes.js.map","import { reducePrivacyLevel, getNodeSelfPrivacyLevel, getTextContent, isNodeShadowRoot, hasChildNodes, forEachChildNodes, NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN, } from '@datadog/browser-rum-core';\nimport { assign } from '@datadog/browser-core';\nimport { NodeType } from '../../../types';\nimport { getSerializedNodeId, getValidTagName, setSerializedNodeId } from './serializationUtils';\nimport { serializeStyleSheets } from './serializeStyleSheets';\nimport { serializeAttributes } from './serializeAttributes';\nexport function serializeNodeWithId(node, options) {\n    var serializedNode = serializeNode(node, options);\n    if (!serializedNode) {\n        return null;\n    }\n    // Try to reuse the previous id\n    var id = getSerializedNodeId(node) || generateNextId();\n    var serializedNodeWithId = serializedNode;\n    serializedNodeWithId.id = id;\n    setSerializedNodeId(node, id);\n    if (options.serializedNodeIds) {\n        options.serializedNodeIds.add(id);\n    }\n    return serializedNodeWithId;\n}\nvar _nextId = 1;\nexport function generateNextId() {\n    return _nextId++;\n}\nexport function serializeChildNodes(node, options) {\n    var result = [];\n    forEachChildNodes(node, function (childNode) {\n        var serializedChildNode = serializeNodeWithId(childNode, options);\n        if (serializedChildNode) {\n            result.push(serializedChildNode);\n        }\n    });\n    return result;\n}\nfunction serializeNode(node, options) {\n    switch (node.nodeType) {\n        case node.DOCUMENT_NODE:\n            return serializeDocumentNode(node, options);\n        case node.DOCUMENT_FRAGMENT_NODE:\n            return serializeDocumentFragmentNode(node, options);\n        case node.DOCUMENT_TYPE_NODE:\n            return serializeDocumentTypeNode(node);\n        case node.ELEMENT_NODE:\n            return serializeElementNode(node, options);\n        case node.TEXT_NODE:\n            return serializeTextNode(node, options);\n        case node.CDATA_SECTION_NODE:\n            return serializeCDataNode();\n    }\n}\nexport function serializeDocumentNode(document, options) {\n    return {\n        type: NodeType.Document,\n        childNodes: serializeChildNodes(document, options),\n        adoptedStyleSheets: serializeStyleSheets(document.adoptedStyleSheets),\n    };\n}\nfunction serializeDocumentFragmentNode(element, options) {\n    var isShadowRoot = isNodeShadowRoot(element);\n    if (isShadowRoot) {\n        options.serializationContext.shadowRootsController.addShadowRoot(element);\n    }\n    return {\n        type: NodeType.DocumentFragment,\n        childNodes: serializeChildNodes(element, options),\n        isShadowRoot: isShadowRoot,\n        adoptedStyleSheets: isShadowRoot ? serializeStyleSheets(element.adoptedStyleSheets) : undefined,\n    };\n}\nfunction serializeDocumentTypeNode(documentType) {\n    return {\n        type: NodeType.DocumentType,\n        name: documentType.name,\n        publicId: documentType.publicId,\n        systemId: documentType.systemId,\n    };\n}\n/**\n * Serializing Element nodes involves capturing:\n * 1. HTML ATTRIBUTES:\n * 2. JS STATE:\n * - scroll offsets\n * - Form fields (input value, checkbox checked, option selection, range)\n * - Canvas state,\n * - Media (video/audio) play mode + currentTime\n * - iframe contents\n * - webcomponents\n * 3. CUSTOM PROPERTIES:\n * - height+width for when `hidden` to cover the element\n * 4. EXCLUDED INTERACTION STATE:\n * - focus (possible, but not worth perf impact)\n * - hover (tracked only via mouse activity)\n * - fullscreen mode\n */\nfunction serializeElementNode(element, options) {\n    var _a;\n    var tagName = getValidTagName(element.tagName);\n    var isSVG = isSVGElement(element) || undefined;\n    // For performance reason, we don't use getNodePrivacyLevel directly: we leverage the\n    // parentNodePrivacyLevel option to avoid iterating over all parents\n    var nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(element), options.parentNodePrivacyLevel);\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        var _b = element.getBoundingClientRect(), width = _b.width, height = _b.height;\n        return {\n            type: NodeType.Element,\n            tagName: tagName,\n            attributes: (_a = {\n                    rr_width: \"\".concat(width, \"px\"),\n                    rr_height: \"\".concat(height, \"px\")\n                },\n                _a[PRIVACY_ATTR_NAME] = PRIVACY_ATTR_VALUE_HIDDEN,\n                _a),\n            childNodes: [],\n            isSVG: isSVG,\n        };\n    }\n    // Ignore Elements like Script and some Link, Metas\n    if (nodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n        return;\n    }\n    var attributes = serializeAttributes(element, nodePrivacyLevel, options);\n    var childNodes = [];\n    if (hasChildNodes(element) &&\n        // Do not serialize style children as the css rules are already in the _cssText attribute\n        tagName !== 'style') {\n        // OBJECT POOLING OPTIMIZATION:\n        // We should not create a new object systematically as it could impact performances. Try to reuse\n        // the same object as much as possible, and clone it only if we need to.\n        var childNodesSerializationOptions = void 0;\n        if (options.parentNodePrivacyLevel === nodePrivacyLevel && options.ignoreWhiteSpace === (tagName === 'head')) {\n            childNodesSerializationOptions = options;\n        }\n        else {\n            childNodesSerializationOptions = assign({}, options, {\n                parentNodePrivacyLevel: nodePrivacyLevel,\n                ignoreWhiteSpace: tagName === 'head',\n            });\n        }\n        childNodes = serializeChildNodes(element, childNodesSerializationOptions);\n    }\n    return {\n        type: NodeType.Element,\n        tagName: tagName,\n        attributes: attributes,\n        childNodes: childNodes,\n        isSVG: isSVG,\n    };\n}\nfunction isSVGElement(el) {\n    return el.tagName === 'svg' || el instanceof SVGElement;\n}\n/**\n * Text Nodes are dependant on Element nodes\n * Privacy levels are set on elements so we check the parentElement of a text node\n * for privacy level.\n */\nfunction serializeTextNode(textNode, options) {\n    var textContent = getTextContent(textNode, options.ignoreWhiteSpace || false, options.parentNodePrivacyLevel);\n    if (textContent === undefined) {\n        return;\n    }\n    return {\n        type: NodeType.Text,\n        textContent: textContent,\n    };\n}\nfunction serializeCDataNode() {\n    return {\n        type: NodeType.CDATA,\n        textContent: '',\n    };\n}\n//# sourceMappingURL=serializeNode.js.map","export var RecordType = {\n    FullSnapshot: 2,\n    IncrementalSnapshot: 3,\n    Meta: 4,\n    Focus: 6,\n    ViewEnd: 7,\n    VisualViewport: 8,\n    FrustrationRecord: 9,\n};\nexport var NodeType = {\n    Document: 0,\n    DocumentType: 1,\n    Element: 2,\n    Text: 3,\n    CDATA: 4,\n    DocumentFragment: 11,\n};\nexport var IncrementalSource = {\n    Mutation: 0,\n    MouseMove: 1,\n    MouseInteraction: 2,\n    Scroll: 3,\n    ViewportResize: 4,\n    Input: 5,\n    TouchMove: 6,\n    MediaInteraction: 7,\n    StyleSheetRule: 8,\n    // CanvasMutation : 9,\n    // Font : 10,\n};\nexport var MouseInteractionType = {\n    MouseUp: 0,\n    MouseDown: 1,\n    Click: 2,\n    ContextMenu: 3,\n    DblClick: 4,\n    Focus: 5,\n    Blur: 6,\n    TouchStart: 7,\n    TouchEnd: 9,\n};\nexport var MediaInteractionType = {\n    Play: 0,\n    Pause: 1,\n};\n//# sourceMappingURL=sessionReplayConstants.js.map","import { isNodeShadowHost } from '@datadog/browser-rum-core';\nexport function isTouchEvent(event) {\n    return Boolean(event.changedTouches);\n}\nexport function getEventTarget(event) {\n    if (event.composed === true && isNodeShadowHost(event.target)) {\n        return event.composedPath()[0];\n    }\n    return event.target;\n}\n//# sourceMappingURL=eventsUtils.js.map","/**\n * Browsers have not standardized various dimension properties. Mobile devices typically report\n * dimensions in reference to the visual viewport, while desktop uses the layout viewport. For example,\n * Mobile Chrome will change innerWidth when a pinch zoom takes place, while Chrome Desktop (mac) will not.\n *\n * With the new Viewport API, we now calculate and normalize dimension properties to the layout viewport.\n * If the VisualViewport API is not supported by a browser, it isn't reasonably possible to detect or normalize\n * which viewport is being measured. Therefore these exported functions will fallback to assuming that the layout\n * viewport is being measured by the browser\n */\n// Scrollbar widths vary across properties on different devices and browsers\nvar TOLERANCE = 25;\n/**\n * Use the Visual Viewport API's properties to measure scrollX/Y in reference to the layout viewport\n * in order to determine if window.scrollX/Y is measuring the layout or visual viewport.\n * This finding corresponds to which viewport mouseEvent.clientX/Y and window.innerWidth/Height measures.\n */\nfunction isVisualViewportFactoredIn(visualViewport) {\n    return (Math.abs(visualViewport.pageTop - visualViewport.offsetTop - window.scrollY) > TOLERANCE ||\n        Math.abs(visualViewport.pageLeft - visualViewport.offsetLeft - window.scrollX) > TOLERANCE);\n}\nexport var convertMouseEventToLayoutCoordinates = function (clientX, clientY) {\n    var visualViewport = window.visualViewport;\n    var normalized = {\n        layoutViewportX: clientX,\n        layoutViewportY: clientY,\n        visualViewportX: clientX,\n        visualViewportY: clientY,\n    };\n    if (!visualViewport) {\n        // On old browsers, we cannot normalize, so fallback to clientX/Y\n        return normalized;\n    }\n    else if (isVisualViewportFactoredIn(visualViewport)) {\n        // Typically Mobile Devices\n        normalized.layoutViewportX = Math.round(clientX + visualViewport.offsetLeft);\n        normalized.layoutViewportY = Math.round(clientY + visualViewport.offsetTop);\n    }\n    else {\n        // Typically Desktop Devices\n        normalized.visualViewportX = Math.round(clientX - visualViewport.offsetLeft);\n        normalized.visualViewportY = Math.round(clientY - visualViewport.offsetTop);\n    }\n    return normalized;\n};\nexport var getVisualViewport = function (visualViewport) { return ({\n    scale: visualViewport.scale,\n    offsetLeft: visualViewport.offsetLeft,\n    offsetTop: visualViewport.offsetTop,\n    pageLeft: visualViewport.pageLeft,\n    pageTop: visualViewport.pageTop,\n    height: visualViewport.height,\n    width: visualViewport.width,\n}); };\n//# sourceMappingURL=viewports.js.map","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function assembleIncrementalSnapshot(source, data) {\n    return {\n        data: assign({\n            source: source,\n        }, data),\n        type: RecordType.IncrementalSnapshot,\n        timestamp: timeStampNow(),\n    };\n}\n//# sourceMappingURL=assembly.js.map","import { addEventListeners, addTelemetryDebug, throttle } from '@datadog/browser-core';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget, isTouchEvent } from '../eventsUtils';\nimport { convertMouseEventToLayoutCoordinates } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar MOUSE_MOVE_OBSERVER_THRESHOLD = 50;\nexport function trackMove(configuration, moveCb) {\n    var _a = throttle(function (event) {\n        var target = getEventTarget(event);\n        if (hasSerializedNode(target)) {\n            var coordinates = tryToComputeCoordinates(event);\n            if (!coordinates) {\n                return;\n            }\n            var position = {\n                id: getSerializedNodeId(target),\n                timeOffset: 0,\n                x: coordinates.x,\n                y: coordinates.y,\n            };\n            moveCb(assembleIncrementalSnapshot(isTouchEvent(event) ? IncrementalSource.TouchMove : IncrementalSource.MouseMove, { positions: [position] }));\n        }\n    }, MOUSE_MOVE_OBSERVER_THRESHOLD, {\n        trailing: false,\n    }), updatePosition = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListeners(configuration, document, [\"mousemove\" /* DOM_EVENT.MOUSE_MOVE */, \"touchmove\" /* DOM_EVENT.TOUCH_MOVE */], updatePosition, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return {\n        stop: function () {\n            removeListener();\n            cancelThrottle();\n        },\n    };\n}\nexport function tryToComputeCoordinates(event) {\n    var _a = isTouchEvent(event) ? event.changedTouches[0] : event, x = _a.clientX, y = _a.clientY;\n    if (window.visualViewport) {\n        var _b = convertMouseEventToLayoutCoordinates(x, y), visualViewportX = _b.visualViewportX, visualViewportY = _b.visualViewportY;\n        x = visualViewportX;\n        y = visualViewportY;\n    }\n    if (!Number.isFinite(x) || !Number.isFinite(y)) {\n        if (event.isTrusted) {\n            addTelemetryDebug('mouse/touch event without x/y');\n        }\n        return undefined;\n    }\n    return { x: x, y: y };\n}\n//# sourceMappingURL=trackMove.js.map","import { throttle, addEventListener } from '@datadog/browser-core';\nimport { getScrollX, getScrollY, getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar SCROLL_OBSERVER_THRESHOLD = 100;\nexport function trackScroll(configuration, scrollCb, elementsScrollPositions, target) {\n    if (target === void 0) { target = document; }\n    var _a = throttle(function (event) {\n        var target = getEventTarget(event);\n        if (!target ||\n            getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        var id = getSerializedNodeId(target);\n        var scrollPositions = target === document\n            ? {\n                scrollTop: getScrollY(),\n                scrollLeft: getScrollX(),\n            }\n            : {\n                scrollTop: Math.round(target.scrollTop),\n                scrollLeft: Math.round(target.scrollLeft),\n            };\n        elementsScrollPositions.set(target, scrollPositions);\n        scrollCb(assembleIncrementalSnapshot(IncrementalSource.Scroll, {\n            id: id,\n            x: scrollPositions.scrollLeft,\n            y: scrollPositions.scrollTop,\n        }));\n    }, SCROLL_OBSERVER_THRESHOLD), updatePosition = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListener(configuration, target, \"scroll\" /* DOM_EVENT.SCROLL */, updatePosition, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return {\n        stop: function () {\n            removeListener();\n            cancelThrottle();\n        },\n    };\n}\n//# sourceMappingURL=trackScroll.js.map","import { instrumentMethod } from '@datadog/browser-core';\nimport { IncrementalSource } from '../../../types';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackStyleSheet(styleSheetCb) {\n    function checkStyleSheetAndCallback(styleSheet, callback) {\n        if (styleSheet && hasSerializedNode(styleSheet.ownerNode)) {\n            callback(getSerializedNodeId(styleSheet.ownerNode));\n        }\n    }\n    var instrumentationStoppers = [\n        instrumentMethod(CSSStyleSheet.prototype, 'insertRule', function (_a) {\n            var styleSheet = _a.target, _b = _a.parameters, rule = _b[0], index = _b[1];\n            checkStyleSheetAndCallback(styleSheet, function (id) {\n                return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                    id: id,\n                    adds: [{ rule: rule, index: index }],\n                }));\n            });\n        }),\n        instrumentMethod(CSSStyleSheet.prototype, 'deleteRule', function (_a) {\n            var styleSheet = _a.target, index = _a.parameters[0];\n            checkStyleSheetAndCallback(styleSheet, function (id) {\n                return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                    id: id,\n                    removes: [{ index: index }],\n                }));\n            });\n        }),\n    ];\n    if (typeof CSSGroupingRule !== 'undefined') {\n        instrumentGroupingCSSRuleClass(CSSGroupingRule);\n    }\n    else {\n        instrumentGroupingCSSRuleClass(CSSMediaRule);\n        instrumentGroupingCSSRuleClass(CSSSupportsRule);\n    }\n    function instrumentGroupingCSSRuleClass(cls) {\n        instrumentationStoppers.push(instrumentMethod(cls.prototype, 'insertRule', function (_a) {\n            var styleSheet = _a.target, _b = _a.parameters, rule = _b[0], index = _b[1];\n            checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n                var path = getPathToNestedCSSRule(styleSheet);\n                if (path) {\n                    path.push(index || 0);\n                    styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                        id: id,\n                        adds: [{ rule: rule, index: path }],\n                    }));\n                }\n            });\n        }), instrumentMethod(cls.prototype, 'deleteRule', function (_a) {\n            var styleSheet = _a.target, index = _a.parameters[0];\n            checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n                var path = getPathToNestedCSSRule(styleSheet);\n                if (path) {\n                    path.push(index);\n                    styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                        id: id,\n                        removes: [{ index: path }],\n                    }));\n                }\n            });\n        }));\n    }\n    return {\n        stop: function () {\n            instrumentationStoppers.forEach(function (stopper) { return stopper.stop(); });\n        },\n    };\n}\nexport function getPathToNestedCSSRule(rule) {\n    var path = [];\n    var currentRule = rule;\n    while (currentRule.parentRule) {\n        var rules_1 = Array.from(currentRule.parentRule.cssRules);\n        var index_1 = rules_1.indexOf(currentRule);\n        path.unshift(index_1);\n        currentRule = currentRule.parentRule;\n    }\n    // A rule may not be attached to a stylesheet\n    if (!currentRule.parentStyleSheet) {\n        return;\n    }\n    var rules = Array.from(currentRule.parentStyleSheet.cssRules);\n    var index = rules.indexOf(currentRule);\n    path.unshift(index);\n    return path;\n}\n//# sourceMappingURL=trackStyleSheet.js.map","import { instrumentSetter, assign, addEventListeners, forEach, noop } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getNodePrivacyLevel, shouldMaskNode, cssEscape } from '@datadog/browser-rum-core';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackInput(configuration, inputCb, target) {\n    if (target === void 0) { target = document; }\n    var defaultPrivacyLevel = configuration.defaultPrivacyLevel;\n    var lastInputStateMap = new WeakMap();\n    var isShadowRoot = target !== document;\n    var stopEventListeners = addEventListeners(configuration, target, \n    // The 'input' event bubbles across shadow roots, so we don't have to listen for it on shadow\n    // roots since it will be handled by the event listener that we did add to the document. Only\n    // the 'change' event is blocked and needs to be handled on shadow roots.\n    isShadowRoot ? [\"change\" /* DOM_EVENT.CHANGE */] : [\"input\" /* DOM_EVENT.INPUT */, \"change\" /* DOM_EVENT.CHANGE */], function (event) {\n        var target = getEventTarget(event);\n        if (target instanceof HTMLInputElement ||\n            target instanceof HTMLTextAreaElement ||\n            target instanceof HTMLSelectElement) {\n            onElementChange(target);\n        }\n    }, {\n        capture: true,\n        passive: true,\n    }).stop;\n    var stopPropertySetterInstrumentation;\n    if (!isShadowRoot) {\n        var instrumentationStoppers_1 = [\n            instrumentSetter(HTMLInputElement.prototype, 'value', onElementChange),\n            instrumentSetter(HTMLInputElement.prototype, 'checked', onElementChange),\n            instrumentSetter(HTMLSelectElement.prototype, 'value', onElementChange),\n            instrumentSetter(HTMLTextAreaElement.prototype, 'value', onElementChange),\n            instrumentSetter(HTMLSelectElement.prototype, 'selectedIndex', onElementChange),\n        ];\n        stopPropertySetterInstrumentation = function () {\n            instrumentationStoppers_1.forEach(function (stopper) { return stopper.stop(); });\n        };\n    }\n    else {\n        stopPropertySetterInstrumentation = noop;\n    }\n    return {\n        stop: function () {\n            stopPropertySetterInstrumentation();\n            stopEventListeners();\n        },\n    };\n    function onElementChange(target) {\n        var nodePrivacyLevel = getNodePrivacyLevel(target, defaultPrivacyLevel);\n        if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n            return;\n        }\n        var type = target.type;\n        var inputState;\n        if (type === 'radio' || type === 'checkbox') {\n            if (shouldMaskNode(target, nodePrivacyLevel)) {\n                return;\n            }\n            inputState = { isChecked: target.checked };\n        }\n        else {\n            var value = getElementInputValue(target, nodePrivacyLevel);\n            if (value === undefined) {\n                return;\n            }\n            inputState = { text: value };\n        }\n        // Can be multiple changes on the same node within the same batched mutation observation.\n        cbWithDedup(target, inputState);\n        // If a radio was checked, other radios with the same name attribute will be unchecked.\n        var name = target.name;\n        if (type === 'radio' && name && target.checked) {\n            forEach(document.querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(cssEscape(name), \"\\\"]\")), function (el) {\n                if (el !== target) {\n                    // TODO: Consider the privacy implications for various differing input privacy levels\n                    cbWithDedup(el, { isChecked: false });\n                }\n            });\n        }\n    }\n    /**\n     * There can be multiple changes on the same node within the same batched mutation observation.\n     */\n    function cbWithDedup(target, inputState) {\n        if (!hasSerializedNode(target)) {\n            return;\n        }\n        var lastInputState = lastInputStateMap.get(target);\n        if (!lastInputState ||\n            lastInputState.text !== inputState.text ||\n            lastInputState.isChecked !== inputState.isChecked) {\n            lastInputStateMap.set(target, inputState);\n            inputCb(assembleIncrementalSnapshot(IncrementalSource.Input, assign({\n                id: getSerializedNodeId(target),\n            }, inputState)));\n        }\n    }\n}\n//# sourceMappingURL=trackInput.js.map","import { monitor, noop } from '@datadog/browser-core';\nimport { isNodeShadowHost, getMutationObserverConstructor, getParentNode, forEachChildNodes, getNodePrivacyLevel, getTextContent, NodePrivacyLevel, } from '@datadog/browser-rum-core';\nimport { IncrementalSource } from '../../../types';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode, nodeAndAncestorsHaveSerializedNode, serializeNodeWithId, serializeAttribute, } from '../serialization';\nimport { createMutationBatch } from '../mutationBatch';\nimport { assembleIncrementalSnapshot } from '../assembly';\n/**\n * Buffers and aggregate mutations generated by a MutationObserver into MutationPayload\n */\nexport function trackMutation(mutationCallback, configuration, shadowRootsController, target) {\n    var MutationObserver = getMutationObserverConstructor();\n    if (!MutationObserver) {\n        return { stop: noop, flush: noop };\n    }\n    var mutationBatch = createMutationBatch(function (mutations) {\n        processMutations(mutations.concat(observer.takeRecords()), mutationCallback, configuration, shadowRootsController);\n    });\n    var observer = new MutationObserver(monitor(mutationBatch.addMutations));\n    observer.observe(target, {\n        attributeOldValue: true,\n        attributes: true,\n        characterData: true,\n        characterDataOldValue: true,\n        childList: true,\n        subtree: true,\n    });\n    return {\n        stop: function () {\n            observer.disconnect();\n            mutationBatch.stop();\n        },\n        flush: function () {\n            mutationBatch.flush();\n        },\n    };\n}\nfunction processMutations(mutations, mutationCallback, configuration, shadowRootsController) {\n    var nodePrivacyLevelCache = new Map();\n    mutations\n        .filter(function (mutation) { return mutation.type === 'childList'; })\n        .forEach(function (mutation) {\n        mutation.removedNodes.forEach(function (removedNode) {\n            traverseRemovedShadowDom(removedNode, shadowRootsController.removeShadowRoot);\n        });\n    });\n    // Discard any mutation with a 'target' node that:\n    // * isn't injected in the current document or isn't known/serialized yet: those nodes are likely\n    // part of a mutation occurring in a parent Node\n    // * should be hidden or ignored\n    var filteredMutations = mutations.filter(function (mutation) {\n        return mutation.target.isConnected &&\n            nodeAndAncestorsHaveSerializedNode(mutation.target) &&\n            getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache) !==\n                NodePrivacyLevel.HIDDEN;\n    });\n    var _a = processChildListMutations(filteredMutations.filter(function (mutation) { return mutation.type === 'childList'; }), configuration, shadowRootsController, nodePrivacyLevelCache), adds = _a.adds, removes = _a.removes, hasBeenSerialized = _a.hasBeenSerialized;\n    var texts = processCharacterDataMutations(filteredMutations.filter(function (mutation) {\n        return mutation.type === 'characterData' && !hasBeenSerialized(mutation.target);\n    }), configuration, nodePrivacyLevelCache);\n    var attributes = processAttributesMutations(filteredMutations.filter(function (mutation) {\n        return mutation.type === 'attributes' && !hasBeenSerialized(mutation.target);\n    }), configuration, nodePrivacyLevelCache);\n    if (!texts.length && !attributes.length && !removes.length && !adds.length) {\n        return;\n    }\n    mutationCallback(assembleIncrementalSnapshot(IncrementalSource.Mutation, { adds: adds, removes: removes, texts: texts, attributes: attributes }));\n}\nfunction processChildListMutations(mutations, configuration, shadowRootsController, nodePrivacyLevelCache) {\n    // First, we iterate over mutations to collect:\n    //\n    // * nodes that have been added in the document and not removed by a subsequent mutation\n    // * nodes that have been removed from the document but were not added in a previous mutation\n    //\n    // For this second category, we also collect their previous parent (mutation.target) because we'll\n    // need it to emit a 'remove' mutation.\n    //\n    // Those two categories may overlap: if a node moved from a position to another, it is reported as\n    // two mutation records, one with a \"removedNodes\" and the other with \"addedNodes\". In this case,\n    // the node will be in both sets.\n    var addedAndMovedNodes = new Set();\n    var removedNodes = new Map();\n    var _loop_1 = function (mutation) {\n        mutation.addedNodes.forEach(function (node) {\n            addedAndMovedNodes.add(node);\n        });\n        mutation.removedNodes.forEach(function (node) {\n            if (!addedAndMovedNodes.has(node)) {\n                removedNodes.set(node, mutation.target);\n            }\n            addedAndMovedNodes.delete(node);\n        });\n    };\n    for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n        var mutation = mutations_1[_i];\n        _loop_1(mutation);\n    }\n    // Then, we sort nodes that are still in the document by topological order, for two reasons:\n    //\n    // * We will serialize each added nodes with their descendants. We don't want to serialize a node\n    // twice, so we need to iterate over the parent nodes first and skip any node that is contained in\n    // a precedent node.\n    //\n    // * To emit \"add\" mutations, we need references to the parent and potential next sibling of each\n    // added node. So we need to iterate over the parent nodes first, and when multiple nodes are\n    // siblings, we want to iterate from last to first. This will ensure that any \"next\" node is\n    // already serialized and have an id.\n    var sortedAddedAndMovedNodes = Array.from(addedAndMovedNodes);\n    sortAddedAndMovedNodes(sortedAddedAndMovedNodes);\n    // Then, we iterate over our sorted node sets to emit mutations. We collect the newly serialized\n    // node ids in a set to be able to skip subsequent related mutations.\n    var serializedNodeIds = new Set();\n    var addedNodeMutations = [];\n    for (var _a = 0, sortedAddedAndMovedNodes_1 = sortedAddedAndMovedNodes; _a < sortedAddedAndMovedNodes_1.length; _a++) {\n        var node = sortedAddedAndMovedNodes_1[_a];\n        if (hasBeenSerialized(node)) {\n            continue;\n        }\n        var parentNodePrivacyLevel = getNodePrivacyLevel(node.parentNode, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n        if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n            continue;\n        }\n        var serializedNode = serializeNodeWithId(node, {\n            serializedNodeIds: serializedNodeIds,\n            parentNodePrivacyLevel: parentNodePrivacyLevel,\n            serializationContext: { status: 2 /* SerializationContextStatus.MUTATION */, shadowRootsController: shadowRootsController },\n            configuration: configuration,\n        });\n        if (!serializedNode) {\n            continue;\n        }\n        var parentNode = getParentNode(node);\n        addedNodeMutations.push({\n            nextId: getNextSibling(node),\n            parentId: getSerializedNodeId(parentNode),\n            node: serializedNode,\n        });\n    }\n    // Finally, we emit remove mutations.\n    var removedNodeMutations = [];\n    removedNodes.forEach(function (parent, node) {\n        if (hasSerializedNode(node)) {\n            removedNodeMutations.push({\n                parentId: getSerializedNodeId(parent),\n                id: getSerializedNodeId(node),\n            });\n        }\n    });\n    return { adds: addedNodeMutations, removes: removedNodeMutations, hasBeenSerialized: hasBeenSerialized };\n    function hasBeenSerialized(node) {\n        return hasSerializedNode(node) && serializedNodeIds.has(getSerializedNodeId(node));\n    }\n    function getNextSibling(node) {\n        var nextSibling = node.nextSibling;\n        while (nextSibling) {\n            if (hasSerializedNode(nextSibling)) {\n                return getSerializedNodeId(nextSibling);\n            }\n            nextSibling = nextSibling.nextSibling;\n        }\n        return null;\n    }\n}\nfunction processCharacterDataMutations(mutations, configuration, nodePrivacyLevelCache) {\n    var _a;\n    var textMutations = [];\n    // Deduplicate mutations based on their target node\n    var handledNodes = new Set();\n    var filteredMutations = mutations.filter(function (mutation) {\n        if (handledNodes.has(mutation.target)) {\n            return false;\n        }\n        handledNodes.add(mutation.target);\n        return true;\n    });\n    // Emit mutations\n    for (var _i = 0, filteredMutations_1 = filteredMutations; _i < filteredMutations_1.length; _i++) {\n        var mutation = filteredMutations_1[_i];\n        var value = mutation.target.textContent;\n        if (value === mutation.oldValue) {\n            continue;\n        }\n        var parentNodePrivacyLevel = getNodePrivacyLevel(getParentNode(mutation.target), configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n        if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n            continue;\n        }\n        textMutations.push({\n            id: getSerializedNodeId(mutation.target),\n            // TODO: pass a valid \"ignoreWhiteSpace\" argument\n            value: (_a = getTextContent(mutation.target, false, parentNodePrivacyLevel)) !== null && _a !== void 0 ? _a : null,\n        });\n    }\n    return textMutations;\n}\nfunction processAttributesMutations(mutations, configuration, nodePrivacyLevelCache) {\n    var attributeMutations = [];\n    // Deduplicate mutations based on their target node and changed attribute\n    var handledElements = new Map();\n    var filteredMutations = mutations.filter(function (mutation) {\n        var handledAttributes = handledElements.get(mutation.target);\n        if (handledAttributes && handledAttributes.has(mutation.attributeName)) {\n            return false;\n        }\n        if (!handledAttributes) {\n            handledElements.set(mutation.target, new Set([mutation.attributeName]));\n        }\n        else {\n            handledAttributes.add(mutation.attributeName);\n        }\n        return true;\n    });\n    // Emit mutations\n    var emittedMutations = new Map();\n    for (var _i = 0, filteredMutations_2 = filteredMutations; _i < filteredMutations_2.length; _i++) {\n        var mutation = filteredMutations_2[_i];\n        var uncensoredValue = mutation.target.getAttribute(mutation.attributeName);\n        if (uncensoredValue === mutation.oldValue) {\n            continue;\n        }\n        var privacyLevel = getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n        var attributeValue = serializeAttribute(mutation.target, privacyLevel, mutation.attributeName, configuration);\n        var transformedValue = void 0;\n        if (mutation.attributeName === 'value') {\n            var inputValue = getElementInputValue(mutation.target, privacyLevel);\n            if (inputValue === undefined) {\n                continue;\n            }\n            transformedValue = inputValue;\n        }\n        else if (typeof attributeValue === 'string') {\n            transformedValue = attributeValue;\n        }\n        else {\n            transformedValue = null;\n        }\n        var emittedMutation = emittedMutations.get(mutation.target);\n        if (!emittedMutation) {\n            emittedMutation = {\n                id: getSerializedNodeId(mutation.target),\n                attributes: {},\n            };\n            attributeMutations.push(emittedMutation);\n            emittedMutations.set(mutation.target, emittedMutation);\n        }\n        emittedMutation.attributes[mutation.attributeName] = transformedValue;\n    }\n    return attributeMutations;\n}\nexport function sortAddedAndMovedNodes(nodes) {\n    nodes.sort(function (a, b) {\n        var position = a.compareDocumentPosition(b);\n        /* eslint-disable no-bitwise */\n        if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return -1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n            return 1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n            return 1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n            return -1;\n        }\n        /* eslint-enable no-bitwise */\n        return 0;\n    });\n}\nfunction traverseRemovedShadowDom(removedNode, shadowDomRemovedCallback) {\n    if (isNodeShadowHost(removedNode)) {\n        shadowDomRemovedCallback(removedNode.shadowRoot);\n    }\n    forEachChildNodes(removedNode, function (childNode) { return traverseRemovedShadowDom(childNode, shadowDomRemovedCallback); });\n}\n//# sourceMappingURL=trackMutation.js.map","import { noop, throttle, requestIdleCallback } from '@datadog/browser-core';\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nvar MUTATION_PROCESS_MAX_DELAY = 100;\n/**\n * Minimum duration to wait before processing mutations. This is used to batch mutations together\n * and be able to deduplicate them to save processing time and bandwidth.\n * 16ms is the duration of a frame at 60fps that ensure fluid UI.\n */\nexport var MUTATION_PROCESS_MIN_DELAY = 16;\nexport function createMutationBatch(processMutationBatch) {\n    var cancelScheduledFlush = noop;\n    var pendingMutations = [];\n    function flush() {\n        cancelScheduledFlush();\n        processMutationBatch(pendingMutations);\n        pendingMutations = [];\n    }\n    var _a = throttle(flush, MUTATION_PROCESS_MIN_DELAY, {\n        leading: false,\n    }), throttledFlush = _a.throttled, cancelThrottle = _a.cancel;\n    return {\n        addMutations: function (mutations) {\n            if (pendingMutations.length === 0) {\n                cancelScheduledFlush = requestIdleCallback(throttledFlush, { timeout: MUTATION_PROCESS_MAX_DELAY });\n            }\n            pendingMutations.push.apply(pendingMutations, mutations);\n        },\n        flush: flush,\n        stop: function () {\n            cancelScheduledFlush();\n            cancelThrottle();\n        },\n    };\n}\n//# sourceMappingURL=mutationBatch.js.map","import { trackInput, trackMutation, trackScroll } from './trackers';\nexport var initShadowRootsController = function (configuration, callback, elementsScrollPositions) {\n    var controllerByShadowRoot = new Map();\n    var shadowRootsController = {\n        addShadowRoot: function (shadowRoot) {\n            if (controllerByShadowRoot.has(shadowRoot)) {\n                return;\n            }\n            var mutationTracker = trackMutation(callback, configuration, shadowRootsController, shadowRoot);\n            // The change event does not bubble up across the shadow root, we have to listen on the shadow root\n            var inputTracker = trackInput(configuration, callback, shadowRoot);\n            // The scroll event does not bubble up across the shadow root, we have to listen on the shadow root\n            var scrollTracker = trackScroll(configuration, callback, elementsScrollPositions, shadowRoot);\n            controllerByShadowRoot.set(shadowRoot, {\n                flush: function () { return mutationTracker.flush(); },\n                stop: function () {\n                    mutationTracker.stop();\n                    inputTracker.stop();\n                    scrollTracker.stop();\n                },\n            });\n        },\n        removeShadowRoot: function (shadowRoot) {\n            var entry = controllerByShadowRoot.get(shadowRoot);\n            if (!entry) {\n                // unidentified root cause: observed in some cases with shadow DOM added by browser extensions\n                return;\n            }\n            entry.stop();\n            controllerByShadowRoot.delete(shadowRoot);\n        },\n        stop: function () {\n            controllerByShadowRoot.forEach(function (_a) {\n                var stop = _a.stop;\n                return stop();\n            });\n        },\n        flush: function () {\n            controllerByShadowRoot.forEach(function (_a) {\n                var flush = _a.flush;\n                return flush();\n            });\n        },\n    };\n    return shadowRootsController;\n};\n//# sourceMappingURL=shadowRootsController.js.map","import { addEventListener, addTelemetryDebug, assign, concatBuffers } from '@datadog/browser-core';\nexport function createDeflateEncoder(configuration, worker, streamId) {\n    var rawBytesCount = 0;\n    var compressedData = [];\n    var compressedDataTrailer;\n    var nextWriteActionId = 0;\n    var pendingWriteActions = [];\n    var removeMessageListener = addEventListener(configuration, worker, 'message', function (_a) {\n        var workerResponse = _a.data;\n        if (workerResponse.type !== 'wrote' || workerResponse.streamId !== streamId) {\n            return;\n        }\n        rawBytesCount += workerResponse.additionalBytesCount;\n        compressedData.push(workerResponse.result);\n        compressedDataTrailer = workerResponse.trailer;\n        var nextPendingAction = pendingWriteActions.shift();\n        if (nextPendingAction && nextPendingAction.id === workerResponse.id) {\n            if (nextPendingAction.writeCallback) {\n                nextPendingAction.writeCallback(workerResponse.result.byteLength);\n            }\n            else if (nextPendingAction.finishCallback) {\n                nextPendingAction.finishCallback();\n            }\n        }\n        else {\n            removeMessageListener();\n            addTelemetryDebug('Worker responses received out of order.');\n        }\n    }).stop;\n    function consumeResult() {\n        var output = compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer));\n        var result = {\n            rawBytesCount: rawBytesCount,\n            output: output,\n            outputBytesCount: output.byteLength,\n            encoding: 'deflate',\n        };\n        rawBytesCount = 0;\n        compressedData = [];\n        return result;\n    }\n    function sendResetIfNeeded() {\n        if (nextWriteActionId > 0) {\n            worker.postMessage({\n                action: 'reset',\n                streamId: streamId,\n            });\n            nextWriteActionId = 0;\n        }\n    }\n    return {\n        isAsync: true,\n        get isEmpty() {\n            return nextWriteActionId === 0;\n        },\n        write: function (data, callback) {\n            worker.postMessage({\n                action: 'write',\n                id: nextWriteActionId,\n                data: data,\n                streamId: streamId,\n            });\n            pendingWriteActions.push({\n                id: nextWriteActionId,\n                writeCallback: callback,\n                data: data,\n            });\n            nextWriteActionId += 1;\n        },\n        finish: function (callback) {\n            sendResetIfNeeded();\n            if (!pendingWriteActions.length) {\n                callback(consumeResult());\n            }\n            else {\n                // Make sure we do not call any write callback\n                pendingWriteActions.forEach(function (pendingWriteAction) {\n                    delete pendingWriteAction.writeCallback;\n                });\n                // Wait for the last action to finish before calling the finish callback\n                pendingWriteActions[pendingWriteActions.length - 1].finishCallback = function () { return callback(consumeResult()); };\n            }\n        },\n        finishSync: function () {\n            sendResetIfNeeded();\n            var pendingData = pendingWriteActions\n                .map(function (pendingWriteAction) {\n                // Make sure we do not call any write or finish callback\n                delete pendingWriteAction.writeCallback;\n                delete pendingWriteAction.finishCallback;\n                return pendingWriteAction.data;\n            })\n                .join('');\n            return assign(consumeResult(), {\n                pendingData: pendingData,\n            });\n        },\n        estimateEncodedBytesCount: function (data) {\n            // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n            // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n            // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n            // requests of the expected size.\n            return data.length / 8;\n        },\n        stop: function () {\n            removeMessageListener();\n        },\n    };\n}\n//# sourceMappingURL=deflateEncoder.js.map","import { addTelemetryError, display, includes, addEventListener, setTimeout, ONE_SECOND, DOCS_ORIGIN, } from '@datadog/browser-core';\nexport var INITIALIZATION_TIME_OUT_DELAY = 30 * ONE_SECOND;\nfunction createDeflateWorker(configuration) {\n    return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([\"!function(){\\\"use strict\\\";function t(t){for(var e=t.reduce((function(t,e){return t+e.length}),0),a=new Uint8Array(e),n=0,r=0,i=t;r<i.length;r++){var s=i[r];a.set(s,n),n+=s.length}return a}function e(t){for(var e=t.length;--e>=0;)t[e]=0}var a=256,n=286,r=30,i=15,s=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),h=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),_=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);e(o);var d=new Array(60);e(d);var u=new Array(512);e(u);var f=new Array(256);e(f);var c=new Array(29);e(c);var p,g,w,v=new Array(r);function b(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function m(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(v);var y=function(t){return t<256?u[t]:u[256+(t>>>7)]},k=function(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},z=function(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,k(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},x=function(t,e,a){z(t,a[2*e],a[2*e+1])},A=function(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},U=function(t,e,a){var n,r,s=new Array(16),h=0;for(n=1;n<=i;n++)s[n]=h=h+a[n-1]<<1;for(r=0;r<=e;r++){var l=t[2*r+1];0!==l&&(t[2*r]=A(s[l]++,l))}},I=function(t){var e;for(e=0;e<n;e++)t.dyn_ltree[2*e]=0;for(e=0;e<r;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},B=function(t){t.bi_valid>8?k(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},E=function(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]},S=function(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&E(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!E(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n},C=function(t,e,n){var r,i,l,_,o=0;if(0!==t.last_lit)do{r=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],i=t.pending_buf[t.l_buf+o],o++,0===r?x(t,i,e):(l=f[i],x(t,l+a+1,e),0!==(_=s[l])&&(i-=c[l],z(t,i,_)),r--,l=y(r),x(t,l,n),0!==(_=h[l])&&(r-=v[l],z(t,r,_)))}while(o<t.last_lit);x(t,256,e)},D=function(t,e){var a,n,r,s=e.dyn_tree,h=e.stat_desc.static_tree,l=e.stat_desc.has_stree,_=e.stat_desc.elems,o=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<_;a++)0!==s[2*a]?(t.heap[++t.heap_len]=o=a,t.depth[a]=0):s[2*a+1]=0;for(;t.heap_len<2;)s[2*(r=t.heap[++t.heap_len]=o<2?++o:0)]=1,t.depth[r]=0,t.opt_len--,l&&(t.static_len-=h[2*r+1]);for(e.max_code=o,a=t.heap_len>>1;a>=1;a--)S(t,s,a);r=_;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,s,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,s[2*r]=s[2*a]+s[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,s[2*a+1]=s[2*n+1]=r,t.heap[1]=r++,S(t,s,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,s,h,l,_=e.dyn_tree,o=e.max_code,d=e.stat_desc.static_tree,u=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(s=0;s<=i;s++)t.bl_count[s]=0;for(_[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(s=_[2*_[2*(n=t.heap[a])+1]+1]+1)>p&&(s=p,g++),_[2*n+1]=s,n>o||(t.bl_count[s]++,h=0,n>=c&&(h=f[n-c]),l=_[2*n],t.opt_len+=l*(s+h),u&&(t.static_len+=l*(d[2*n+1]+h)));if(0!==g){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(s=p;0!==s;s--)for(n=t.bl_count[s];0!==n;)(r=t.heap[--a])>o||(_[2*r+1]!==s&&(t.opt_len+=(s-_[2*r+1])*_[2*r],_[2*r+1]=s),n--)}}(t,e),U(s,o,t.bl_count)},j=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++h<l&&r===s||(h<_?t.bl_tree[2*r]+=h:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4))},M=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),n=0;n<=a;n++)if(r=s,s=e[2*(n+1)+1],!(++h<l&&r===s)){if(h<_)do{x(t,r,t.bl_tree)}while(0!=--h);else 0!==r?(r!==i&&(x(t,r,t.bl_tree),h--),x(t,16,t.bl_tree),z(t,h-3,2)):h<=10?(x(t,17,t.bl_tree),z(t,h-3,3)):(x(t,18,t.bl_tree),z(t,h-11,7));h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4)}},L=!1,T=function(t,e,a,n){z(t,0+(n?1:0),3),function(t,e,a,n){B(t),n&&(k(t,a),k(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a}(t,e,a,!0)},H=function(t,e,n,r){var i,s,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<a;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),D(t,t.l_desc),D(t,t.d_desc),h=function(t){var e;for(j(t,t.dyn_ltree,t.l_desc.max_code),j(t,t.dyn_dtree,t.d_desc.max_code),D(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*_[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==e?T(t,e,n,r):4===t.strategy||s===i?(z(t,2+(r?1:0),3),C(t,o,d)):(z(t,4+(r?1:0),3),function(t,e,a,n){var r;for(z(t,e-257,5),z(t,a-1,5),z(t,n-4,4),r=0;r<n;r++)z(t,t.bl_tree[2*_[r]+1],3);M(t,t.dyn_ltree,e-1),M(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),C(t,t.dyn_ltree,t.dyn_dtree)),I(t),r&&B(t)},R={_tr_init:function(t){L||(!function(){var t,e,a,_,m,y=new Array(16);for(a=0,_=0;_<28;_++)for(c[_]=a,t=0;t<1<<s[_];t++)f[a++]=_;for(f[a-1]=_,m=0,_=0;_<16;_++)for(v[_]=m,t=0;t<1<<h[_];t++)u[m++]=_;for(m>>=7;_<r;_++)for(v[_]=m<<7,t=0;t<1<<h[_]-7;t++)u[256+m++]=_;for(e=0;e<=i;e++)y[e]=0;for(t=0;t<=143;)o[2*t+1]=8,t++,y[8]++;for(;t<=255;)o[2*t+1]=9,t++,y[9]++;for(;t<=279;)o[2*t+1]=7,t++,y[7]++;for(;t<=287;)o[2*t+1]=8,t++,y[8]++;for(U(o,287,y),t=0;t<r;t++)d[2*t+1]=5,d[2*t]=A(t,5);p=new b(o,s,257,n,i),g=new b(d,h,0,r,i),w=new b(new Array(0),l,0,19,7)}(),L=!0),t.l_desc=new m(t.dyn_ltree,p),t.d_desc=new m(t.dyn_dtree,g),t.bl_desc=new m(t.bl_tree,w),t.bi_buf=0,t.bi_valid=0,I(t)},_tr_stored_block:T,_tr_flush_block:H,_tr_tally:function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(f[n]+a+1)]++,t.dyn_dtree[2*y(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){z(t,2,3),x(t,256,o),function(t){16===t.bi_valid?(k(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},K=function(t,e,a,n){for(var r=65535&t,i=t>>>16&65535,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{i=i+(r=r+e[n++]|0)|0}while(--s);r%=65521,i%=65521}return r|i<<16},N=new Uint32Array(function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}()),O=function(t,e,a,n){var r=N,i=n+a;t^=-1;for(var s=n;s<i;s++)t=t>>>8^r[255&(t^e[s])];return~t},q={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"},F=0,G=2,J=3,P=4,Q=0,V=1,W=-1,X=0,Y=8,Z=R._tr_init,$=R._tr_stored_block,tt=R._tr_flush_block,et=R._tr_tally,at=R._tr_align,nt=F,rt=1,it=J,st=P,ht=5,lt=Q,_t=V,ot=-2,dt=-3,ut=-5,ft=W,ct=1,pt=2,gt=3,wt=4,vt=X,bt=2,mt=Y,yt=258,kt=262,zt=103,xt=113,At=666,Ut=function(t,e){return t.msg=q[e],e},It=function(t){return(t<<1)-(t>4?9:0)},Bt=function(t){for(var e=t.length;--e>=0;)t[e]=0},Et=function(t,e,a){return(e<<t.hash_shift^a)&t.hash_mask},St=function(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Ct=function(t,e){tt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,St(t.strm)},Dt=function(t,e){t.pending_buf[t.pending++]=e},jt=function(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Mt=function(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,h=t.nice_match,l=t.strstart>t.w_size-kt?t.strstart-(t.w_size-kt):0,_=t.window,o=t.w_mask,d=t.prev,u=t.strstart+yt,f=_[i+s-1],c=_[i+s];t.prev_length>=t.good_match&&(r>>=2),h>t.lookahead&&(h=t.lookahead);do{if(_[(a=e)+s]===c&&_[a+s-1]===f&&_[a]===_[i]&&_[++a]===_[i+1]){i+=2,a++;do{}while(_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&i<u);if(n=yt-(u-i),i=u-yt,n>s){if(t.match_start=e,s=n,n>=h)break;f=_[i+s-1],c=_[i+s]}}}while((e=d[e&o])>l&&0!=--r);return s<=t.lookahead?s:t.lookahead},Lt=function(t){var e,a,n,r,i,s,h,l,_,o,d=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-kt)){t.window.set(t.window.subarray(d,d+d),0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=a=t.hash_size;do{n=t.head[--e],t.head[e]=n>=d?n-d:0}while(--a);e=a=d;do{n=t.prev[--e],t.prev[e]=n>=d?n-d:0}while(--a);r+=d}if(0===t.strm.avail_in)break;if(s=t.strm,h=t.window,l=t.strstart+t.lookahead,_=r,o=void 0,(o=s.avail_in)>_&&(o=_),a=0===o?0:(s.avail_in-=o,h.set(s.input.subarray(s.next_in,s.next_in+o),l),1===s.state.wrap?s.adler=K(s.adler,h,o,l):2===s.state.wrap&&(s.adler=O(s.adler,h,o,l)),s.next_in+=o,s.total_in+=o,o),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Et(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Et(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<kt&&0!==t.strm.avail_in)},Tt=function(t,e){for(var a,n;;){if(t.lookahead<kt){if(Lt(t),t.lookahead<kt&&e===nt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-kt&&(t.match_length=Mt(t,a)),t.match_length>=3)if(n=et(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Et(t,t.ins_h,t.window[t.strstart+1]);else n=et(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2},Ht=function(t,e){for(var a,n,r;;){if(t.lookahead<kt){if(Lt(t),t.lookahead<kt&&e===nt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-kt&&(t.match_length=Mt(t,a),t.match_length<=5&&(t.strategy===ct||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-3,n=et(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Ct(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=et(t,0,t.window[t.strstart-1]))&&Ct(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=et(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2};function Rt(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}var Kt=[new Rt(0,0,0,0,(function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Lt(t),0===t.lookahead&&e===nt)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Ct(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-kt&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Ct(t,!1),t.strm.avail_out),1)})),new Rt(4,4,8,4,Tt),new Rt(4,5,16,8,Tt),new Rt(4,6,32,32,Tt),new Rt(4,4,16,16,Ht),new Rt(8,16,32,32,Ht),new Rt(8,16,128,128,Ht),new Rt(8,32,128,256,Ht),new Rt(32,128,258,1024,Ht),new Rt(32,258,258,4096,Ht)];function Nt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=mt,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Bt(this.dyn_ltree),Bt(this.dyn_dtree),Bt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Bt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Bt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Ot=function(t){if(!t||!t.state)return Ut(t,ot);t.total_in=t.total_out=0,t.data_type=bt;var e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:xt,t.adler=2===e.wrap?0:1,e.last_flush=nt,Z(e),lt},qt=function(t){var e,a=Ot(t);return a===lt&&((e=t.state).window_size=2*e.w_size,Bt(e.head),e.max_lazy_match=Kt[e.level].max_lazy,e.good_match=Kt[e.level].good_length,e.nice_match=Kt[e.level].nice_length,e.max_chain_length=Kt[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),a},Ft=function(t,e,a,n,r,i){if(!t)return ot;var s=1;if(e===ft&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>9||a!==mt||n<8||n>15||e<0||e>9||i<0||i>wt)return Ut(t,ot);8===n&&(n=9);var h=new Nt;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=n,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=i,h.method=a,qt(t)},Gt={deflateInit:function(t,e){return Ft(t,e,mt,15,8,vt)},deflateInit2:Ft,deflateReset:qt,deflateResetKeep:Ot,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?ot:(t.state.gzhead=e,lt):ot},deflate:function(t,e){var a,n;if(!t||!t.state||e>ht||e<0)return t?Ut(t,ot):ot;var r=t.state;if(!t.output||!t.input&&0!==t.avail_in||r.status===At&&e!==st)return Ut(t,0===t.avail_out?ut:ot);r.strm=t;var i=r.last_flush;if(r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,Dt(r,31),Dt(r,139),Dt(r,8),r.gzhead?(Dt(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),Dt(r,255&r.gzhead.time),Dt(r,r.gzhead.time>>8&255),Dt(r,r.gzhead.time>>16&255),Dt(r,r.gzhead.time>>24&255),Dt(r,9===r.level?2:r.strategy>=pt||r.level<2?4:0),Dt(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(Dt(r,255&r.gzhead.extra.length),Dt(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=O(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(Dt(r,0),Dt(r,0),Dt(r,0),Dt(r,0),Dt(r,0),Dt(r,9===r.level?2:r.strategy>=pt||r.level<2?4:0),Dt(r,3),r.status=xt);else{var s=mt+(r.w_bits-8<<4)<<8;s|=(r.strategy>=pt||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(s|=32),s+=31-s%31,r.status=xt,jt(r,s),0!==r.strstart&&(jt(r,t.adler>>>16),jt(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),St(t),a=r.pending,r.pending!==r.pending_buf_size));)Dt(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),St(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,Dt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),St(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,Dt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.status=zt)}else r.status=zt;if(r.status===zt&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&St(t),r.pending+2<=r.pending_buf_size&&(Dt(r,255&t.adler),Dt(r,t.adler>>8&255),t.adler=0,r.status=xt)):r.status=xt),0!==r.pending){if(St(t),0===t.avail_out)return r.last_flush=-1,lt}else if(0===t.avail_in&&It(e)<=It(i)&&e!==st)return Ut(t,ut);if(r.status===At&&0!==t.avail_in)return Ut(t,ut);if(0!==t.avail_in||0!==r.lookahead||e!==nt&&r.status!==At){var h=r.strategy===pt?function(t,e){for(var a;;){if(0===t.lookahead&&(Lt(t),0===t.lookahead)){if(e===nt)return 1;break}if(t.match_length=0,a=et(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2}(r,e):r.strategy===gt?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=yt){if(Lt(t),t.lookahead<=yt&&e===nt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=s[r=t.strstart-1])===s[++r]&&n===s[++r]&&n===s[++r]){i=t.strstart+yt;do{}while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<i);t.match_length=yt-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=et(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=et(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2}(r,e):Kt[r.level].func(r,e);if(3!==h&&4!==h||(r.status=At),1===h||3===h)return 0===t.avail_out&&(r.last_flush=-1),lt;if(2===h&&(e===rt?at(r):e!==ht&&($(r,0,0,!1),e===it&&(Bt(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),St(t),0===t.avail_out))return r.last_flush=-1,lt}return e!==st?lt:r.wrap<=0?_t:(2===r.wrap?(Dt(r,255&t.adler),Dt(r,t.adler>>8&255),Dt(r,t.adler>>16&255),Dt(r,t.adler>>24&255),Dt(r,255&t.total_in),Dt(r,t.total_in>>8&255),Dt(r,t.total_in>>16&255),Dt(r,t.total_in>>24&255)):(jt(r,t.adler>>>16),jt(r,65535&t.adler)),St(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?lt:_t)},deflateEnd:function(t){if(!t||!t.state)return ot;var e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==zt&&e!==xt&&e!==At?Ut(t,ot):(t.state=null,e===xt?Ut(t,dt):lt)},deflateSetDictionary:function(t,e){var a=e.length;if(!t||!t.state)return ot;var n=t.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return ot;if(1===r&&(t.adler=K(t.adler,e,a,0)),n.wrap=0,a>=n.w_size){0===r&&(Bt(n.head),n.strstart=0,n.block_start=0,n.insert=0);var i=new Uint8Array(n.w_size);i.set(e.subarray(a-n.w_size,a),0),e=i,a=n.w_size}var s=t.avail_in,h=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Lt(n);n.lookahead>=3;){var _=n.strstart,o=n.lookahead-2;do{n.ins_h=Et(n,n.ins_h,n.window[_+3-1]),n.prev[_&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=_,_++}while(--o);n.strstart=_,n.lookahead=2,Lt(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=h,t.input=l,t.avail_in=s,n.wrap=r,lt},deflateInfo:\\\"pako deflate (from Nodeca project)\\\"};for(var Jt=new Uint8Array(256),Pt=0;Pt<256;Pt++)Jt[Pt]=Pt>=252?6:Pt>=248?5:Pt>=240?4:Pt>=224?3:Pt>=192?2:1;Jt[254]=Jt[254]=1;var Qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0},Vt=Object.prototype.toString,Wt=F,Xt=G,Yt=J,Zt=P,$t=Q,te=V,ee=W,ae=X,ne=Y;function re(){this.options={level:ee,method:ne,chunkSize:16384,windowBits:15,memLevel:8,strategy:ae};var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new Qt,this.strm.avail_out=0;var e=Gt.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==$t)throw new Error(q[e]);if(t.header&&Gt.deflateSetHeader(this.strm,t.header),t.dictionary){var a;if(a=\\\"[object ArrayBuffer]\\\"===Vt.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(e=Gt.deflateSetDictionary(this.strm,a))!==$t)throw new Error(q[e]);this._dict_set=!0}}function ie(t,e,a){try{t.postMessage({type:\\\"errored\\\",error:e,streamId:a})}catch(n){t.postMessage({type:\\\"errored\\\",error:String(e),streamId:a})}}function se(t){var e=t.strm.adler;return new Uint8Array([3,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])}re.prototype.push=function(t,e){var a,n,r=this.strm,i=this.options.chunkSize;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Zt:Wt,\\\"[object ArrayBuffer]\\\"===Vt.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(i),r.next_out=0,r.avail_out=i),(n===Xt||n===Yt)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if((a=Gt.deflate(r,n))===te)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),a=Gt.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===$t;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===$t&&(this.result=function(t){for(var e=0,a=0,n=t.length;a<n;a++)e+=t[a].length;for(var r=new Uint8Array(e),i=0,s=0,h=t.length;i<h;i++){var l=t[i];r.set(l,s),s+=l.length}return r}(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},function(e){void 0===e&&(e=self);try{var a=new Map;e.addEventListener(\\\"message\\\",(function(n){try{var r=function(e,a){switch(a.action){case\\\"init\\\":return{type:\\\"initialized\\\",version:\\\"5.35.1\\\"};case\\\"write\\\":var n=e.get(a.streamId);n||(n=new re,e.set(a.streamId,n));var r=n.chunks.length,i=function(t){if(\\\"function\\\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);var e,a,n,r,i,s=t.length,h=0;for(r=0;r<s;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),i=0,r=0;i<h;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),a<128?e[i++]=a:a<2048?(e[i++]=192|a>>>6,e[i++]=128|63&a):a<65536?(e[i++]=224|a>>>12,e[i++]=128|a>>>6&63,e[i++]=128|63&a):(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63,e[i++]=128|a>>>6&63,e[i++]=128|63&a);return e}(a.data);return n.push(i,G),{type:\\\"wrote\\\",id:a.id,streamId:a.streamId,result:t(n.chunks.slice(r)),trailer:se(n),additionalBytesCount:i.length};case\\\"reset\\\":e.delete(a.streamId)}}(a,n.data);r&&e.postMessage(r)}catch(t){ie(e,t,n.data&&\\\"streamId\\\"in n.data?n.data.streamId:void 0)}}))}catch(t){ie(e,t)}}()}();\"])));\n}\nvar state = { status: 0 /* DeflateWorkerStatus.Nil */ };\nexport function startDeflateWorker(configuration, source, onInitializationFailure, createDeflateWorkerImpl) {\n    if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n    if (state.status === 0 /* DeflateWorkerStatus.Nil */) {\n        // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n        doStartDeflateWorker(configuration, source, createDeflateWorkerImpl);\n    }\n    switch (state.status) {\n        case 1 /* DeflateWorkerStatus.Loading */:\n            state.initializationFailureCallbacks.push(onInitializationFailure);\n            return state.worker;\n        case 3 /* DeflateWorkerStatus.Initialized */:\n            return state.worker;\n    }\n}\nexport function resetDeflateWorkerState() {\n    if (state.status === 3 /* DeflateWorkerStatus.Initialized */ || state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        state.stop();\n    }\n    state = { status: 0 /* DeflateWorkerStatus.Nil */ };\n}\nexport function getDeflateWorkerStatus() {\n    return state.status;\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(configuration, source, createDeflateWorkerImpl) {\n    if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n    try {\n        var worker = createDeflateWorkerImpl(configuration);\n        var removeErrorListener_1 = addEventListener(configuration, worker, 'error', function (error) {\n            onError(configuration, source, error);\n        }).stop;\n        var removeMessageListener_1 = addEventListener(configuration, worker, 'message', function (_a) {\n            var data = _a.data;\n            if (data.type === 'errored') {\n                onError(configuration, source, data.error, data.streamId);\n            }\n            else if (data.type === 'initialized') {\n                onInitialized(data.version);\n            }\n        }).stop;\n        worker.postMessage({ action: 'init' });\n        setTimeout(function () { return onTimeout(source); }, INITIALIZATION_TIME_OUT_DELAY);\n        var stop_1 = function () {\n            removeErrorListener_1();\n            removeMessageListener_1();\n        };\n        state = { status: 1 /* DeflateWorkerStatus.Loading */, worker: worker, stop: stop_1, initializationFailureCallbacks: [] };\n    }\n    catch (error) {\n        onError(configuration, source, error);\n    }\n}\nfunction onTimeout(source) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        display.error(\"\".concat(source, \" failed to start: a timeout occurred while initializing the Worker\"));\n        state.initializationFailureCallbacks.forEach(function (callback) { return callback(); });\n        state = { status: 2 /* DeflateWorkerStatus.Error */ };\n    }\n}\nfunction onInitialized(version) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        state = { status: 3 /* DeflateWorkerStatus.Initialized */, worker: state.worker, stop: state.stop, version: version };\n    }\n}\nfunction onError(configuration, source, error, streamId) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */ || state.status === 0 /* DeflateWorkerStatus.Nil */) {\n        display.error(\"\".concat(source, \" failed to start: an error occurred while creating the Worker:\"), error);\n        if (error instanceof Event || (error instanceof Error && isMessageCspRelated(error.message))) {\n            var baseMessage = void 0;\n            if (configuration.workerUrl) {\n                baseMessage = \"Please make sure the Worker URL \".concat(configuration.workerUrl, \" is correct and CSP is correctly configured.\");\n            }\n            else {\n                baseMessage = 'Please make sure CSP is correctly configured.';\n            }\n            display.error(\"\".concat(baseMessage, \" See documentation at \").concat(DOCS_ORIGIN, \"/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay\"));\n        }\n        else {\n            addTelemetryError(error);\n        }\n        if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n            state.initializationFailureCallbacks.forEach(function (callback) { return callback(); });\n        }\n        state = { status: 2 /* DeflateWorkerStatus.Error */ };\n    }\n    else {\n        addTelemetryError(error, {\n            worker_version: state.status === 3 /* DeflateWorkerStatus.Initialized */ && state.version,\n            stream_id: streamId,\n        });\n    }\n}\nfunction isMessageCspRelated(message) {\n    return (includes(message, 'Content Security Policy') ||\n        // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n        includes(message, \"requires 'TrustedScriptURL'\"));\n}\n//# sourceMappingURL=deflateWorker.js.map","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n    return (\n    // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n    // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n    // this test is not sufficient.\n    typeof Array.from === 'function' &&\n        typeof CSSSupportsRule === 'function' &&\n        typeof URL.createObjectURL === 'function' &&\n        'forEach' in NodeList.prototype);\n}\n//# sourceMappingURL=isBrowserSupported.js.map","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { startRecording } from '../boot/startRecording';\nimport { makeRecorderApi } from '../boot/recorderApi';\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nvar recorderApi = makeRecorderApi(startRecording);\nexport var datadogRum = makeRumPublicApi(startRum, recorderApi, { startDeflateWorker: startDeflateWorker, createDeflateEncoder: createDeflateEncoder });\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","import { addTelemetryUsage, assign, createContextManager, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, checkUser, sanitizeUser, sanitize, createIdentityEncoder, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, createTrackingConsentState, timeStampToClocks, } from '@datadog/browser-core';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createCustomVitalsState } from '../domain/vital/vitalCollection';\nimport { createPreStartStrategy } from './preStartRum';\nvar RUM_STORAGE_KEY = 'rum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, options) {\n    if (options === void 0) { options = {}; }\n    var customerDataTrackerManager = createCustomerDataTrackerManager(0 /* CustomerDataCompressionStatus.Unknown */);\n    var globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n    var userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n    var trackingConsentState = createTrackingConsentState();\n    var customVitalsState = createCustomVitalsState();\n    function getCommonContext() {\n        return buildCommonContext(globalContextManager, userContextManager, recorderApi);\n    }\n    var strategy = createPreStartStrategy(options, getCommonContext, trackingConsentState, customVitalsState, function (configuration, deflateWorker, initialViewOptions) {\n        if (configuration.storeContextsAcrossPages) {\n            storeContextManager(configuration, globalContextManager, RUM_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n            storeContextManager(configuration, userContextManager, RUM_STORAGE_KEY, 1 /* CustomerDataType.User */);\n        }\n        customerDataTrackerManager.setCompressionStatus(deflateWorker ? 1 /* CustomerDataCompressionStatus.Enabled */ : 2 /* CustomerDataCompressionStatus.Disabled */);\n        var startRumResult = startRumImpl(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, deflateWorker && options.createDeflateEncoder\n            ? function (streamId) { return options.createDeflateEncoder(configuration, deflateWorker, streamId); }\n            : createIdentityEncoder, trackingConsentState, customVitalsState);\n        recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory, deflateWorker);\n        strategy = createPostStartStrategy(strategy, startRumResult);\n        return startRumResult;\n    });\n    var startView = monitor(function (options) {\n        var sanitizedOptions = typeof options === 'object' ? options : { name: options };\n        if (sanitizedOptions.context) {\n            customerDataTrackerManager.getOrCreateTracker(3 /* CustomerDataType.View */).updateCustomerData(sanitizedOptions.context);\n        }\n        strategy.startView(sanitizedOptions);\n        addTelemetryUsage({ feature: 'start-view' });\n    });\n    var rumPublicApi = makePublicApi({\n        init: monitor(function (initConfiguration) {\n            strategy.init(initConfiguration, rumPublicApi);\n        }),\n        setTrackingConsent: monitor(function (trackingConsent) {\n            trackingConsentState.update(trackingConsent);\n            addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n        }),\n        setViewName: monitor(function (name) {\n            strategy.setViewName(name);\n        }),\n        setViewContext: monitor(function (context) {\n            strategy.setViewContext(context);\n        }),\n        setViewContextProperty: monitor(function (key, value) {\n            strategy.setViewContextProperty(key, value);\n        }),\n        setGlobalContext: monitor(function (context) {\n            globalContextManager.setContext(context);\n            addTelemetryUsage({ feature: 'set-global-context' });\n        }),\n        getGlobalContext: monitor(function () { return globalContextManager.getContext(); }),\n        setGlobalContextProperty: monitor(function (key, value) {\n            globalContextManager.setContextProperty(key, value);\n            addTelemetryUsage({ feature: 'set-global-context' });\n        }),\n        removeGlobalContextProperty: monitor(function (key) { return globalContextManager.removeContextProperty(key); }),\n        clearGlobalContext: monitor(function () { return globalContextManager.clearContext(); }),\n        getInternalContext: monitor(function (startTime) { return strategy.getInternalContext(startTime); }),\n        getInitConfiguration: monitor(function () { return deepClone(strategy.initConfiguration); }),\n        addAction: function (name, context) {\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                strategy.addAction({\n                    name: sanitize(name),\n                    context: sanitize(context),\n                    startClocks: clocksNow(),\n                    type: \"custom\" /* ActionType.CUSTOM */,\n                    handlingStack: handlingStack,\n                });\n                addTelemetryUsage({ feature: 'add-action' });\n            });\n        },\n        addError: function (error, context) {\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                strategy.addError({\n                    error: error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n                    handlingStack: handlingStack,\n                    context: sanitize(context),\n                    startClocks: clocksNow(),\n                });\n                addTelemetryUsage({ feature: 'add-error' });\n            });\n        },\n        addTiming: monitor(function (name, time) {\n            // TODO: next major decide to drop relative time support or update its behaviour\n            strategy.addTiming(sanitize(name), time);\n        }),\n        setUser: monitor(function (newUser) {\n            if (checkUser(newUser)) {\n                userContextManager.setContext(sanitizeUser(newUser));\n            }\n            addTelemetryUsage({ feature: 'set-user' });\n        }),\n        getUser: monitor(function () { return userContextManager.getContext(); }),\n        setUserProperty: monitor(function (key, property) {\n            var _a;\n            var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n            userContextManager.setContextProperty(key, sanitizedProperty);\n            addTelemetryUsage({ feature: 'set-user' });\n        }),\n        removeUserProperty: monitor(function (key) { return userContextManager.removeContextProperty(key); }),\n        clearUser: monitor(function () { return userContextManager.clearContext(); }),\n        startView: startView,\n        stopSession: monitor(function () {\n            strategy.stopSession();\n            addTelemetryUsage({ feature: 'stop-session' });\n        }),\n        addFeatureFlagEvaluation: monitor(function (key, value) {\n            strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n            addTelemetryUsage({ feature: 'add-feature-flag-evaluation' });\n        }),\n        getSessionReplayLink: monitor(function () { return recorderApi.getSessionReplayLink(); }),\n        startSessionReplayRecording: monitor(function (options) {\n            recorderApi.start(options);\n            addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force });\n        }),\n        stopSessionReplayRecording: monitor(function () { return recorderApi.stop(); }),\n        addDurationVital: monitor(function (name, options) {\n            addTelemetryUsage({ feature: 'add-duration-vital' });\n            strategy.addDurationVital({\n                name: sanitize(name),\n                type: \"duration\" /* VitalType.DURATION */,\n                startClocks: timeStampToClocks(options.startTime),\n                duration: options.duration,\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n        startDurationVital: monitor(function (name, options) {\n            addTelemetryUsage({ feature: 'start-duration-vital' });\n            return strategy.startDurationVital(sanitize(name), {\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n        stopDurationVital: monitor(function (nameOrRef, options) {\n            addTelemetryUsage({ feature: 'stop-duration-vital' });\n            strategy.stopDurationVital(typeof nameOrRef === 'string' ? sanitize(nameOrRef) : nameOrRef, {\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n    });\n    return rumPublicApi;\n}\nfunction createPostStartStrategy(preStartStrategy, startRumResult) {\n    return assign({\n        init: function (initConfiguration) {\n            displayAlreadyInitializedError('DD_RUM', initConfiguration);\n        },\n        initConfiguration: preStartStrategy.initConfiguration,\n    }, startRumResult);\n}\n//# sourceMappingURL=rumPublicApi.js.map","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n    return {\n        context: globalContextManager.getContext(),\n        user: userContextManager.getContext(),\n        hasReplay: recorderApi.isRecording() ? true : undefined,\n    };\n}\n//# sourceMappingURL=commonContext.js.map","import { createBoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, assign, getEventBridge, ExperimentalFeature, isExperimentalFeatureEnabled, initFeatureFlags, addTelemetryConfiguration, initFetchObservable, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration, } from '../domain/configuration';\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection';\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration';\nimport { callPluginsMethod } from '../domain/plugins';\nexport function createPreStartStrategy(_a, getCommonContext, trackingConsentState, customVitalsState, doStartRum) {\n    var ignoreInitIfSyntheticsWillInjectRum = _a.ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker = _a.startDeflateWorker;\n    var bufferApiCalls = createBoundedBuffer();\n    var firstStartViewCall;\n    var deflateWorker;\n    var cachedInitConfiguration;\n    var cachedConfiguration;\n    var trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n    function tryStartRum() {\n        if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n            return;\n        }\n        trackingConsentStateSubscription.unsubscribe();\n        var initialViewOptions;\n        if (cachedConfiguration.trackViewsManually) {\n            if (!firstStartViewCall) {\n                return;\n            }\n            // An initial view is always created when starting RUM.\n            // When tracking views automatically, any startView call before RUM start creates an extra\n            // view.\n            // When tracking views manually, we use the ViewOptions from the first startView call as the\n            // initial view options, and we remove the actual startView call so we don't create an extra\n            // view.\n            bufferApiCalls.remove(firstStartViewCall.callback);\n            initialViewOptions = firstStartViewCall.options;\n        }\n        var startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions);\n        bufferApiCalls.drain(startRumResult);\n    }\n    function doInit(initConfiguration) {\n        var eventBridgeAvailable = canUseEventBridge();\n        if (eventBridgeAvailable) {\n            initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n        }\n        // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n        cachedInitConfiguration = initConfiguration;\n        addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n        if (cachedConfiguration) {\n            displayAlreadyInitializedError('DD_RUM', initConfiguration);\n            return;\n        }\n        var configuration = validateAndBuildRumConfiguration(initConfiguration);\n        if (!configuration) {\n            return;\n        }\n        if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n            display.warn('No storage available for session. We will not send any data.');\n            return;\n        }\n        if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n            deflateWorker = startDeflateWorker(configuration, 'Datadog RUM', \n            // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n            // issues are reported asynchronously. For now, the SDK will continue its execution even if\n            // data won't be sent to Datadog. We could improve this behavior in the future.\n            noop);\n            if (!deflateWorker) {\n                // `startDeflateWorker` should have logged an error message explaining the issue\n                return;\n            }\n        }\n        cachedConfiguration = configuration;\n        // Instrumuent fetch to track network requests\n        // This is needed in case the consent is not granted and some cutsomer\n        // library (Apollo Client) is storing uninstrumented fetch to be used later\n        // The subscrption is needed so that the instrumentation process is completed\n        initFetchObservable().subscribe(noop);\n        trackingConsentState.tryToInit(configuration.trackingConsent);\n        tryStartRum();\n    }\n    var addDurationVital = function (vital) {\n        bufferApiCalls.add(function (startRumResult) { return startRumResult.addDurationVital(vital); });\n    };\n    return {\n        init: function (initConfiguration, publicApi) {\n            if (!initConfiguration) {\n                display.error('Missing configuration');\n                return;\n            }\n            // Set the experimental feature flags as early as possible, so we can use them in most places\n            initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n            // Expose the initial configuration regardless of initialization success.\n            cachedInitConfiguration = initConfiguration;\n            // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n            // to completely discard the customer application RUM instance by ignoring their init() call.\n            // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n            // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n            if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n                return;\n            }\n            callPluginsMethod(initConfiguration.plugins, 'onInit', { initConfiguration: initConfiguration, publicApi: publicApi });\n            if (initConfiguration.remoteConfigurationId &&\n                isExperimentalFeatureEnabled(ExperimentalFeature.REMOTE_CONFIGURATION)) {\n                fetchAndApplyRemoteConfiguration(initConfiguration, doInit);\n            }\n            else {\n                doInit(initConfiguration);\n            }\n        },\n        get initConfiguration() {\n            return cachedInitConfiguration;\n        },\n        getInternalContext: noop,\n        stopSession: noop,\n        addTiming: function (name, time) {\n            if (time === void 0) { time = timeStampNow(); }\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addTiming(name, time); });\n        },\n        startView: function (options, startClocks) {\n            if (startClocks === void 0) { startClocks = clocksNow(); }\n            var callback = function (startRumResult) {\n                startRumResult.startView(options, startClocks);\n            };\n            bufferApiCalls.add(callback);\n            if (!firstStartViewCall) {\n                firstStartViewCall = { options: options, callback: callback };\n                tryStartRum();\n            }\n        },\n        setViewName: function (name) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewName(name); });\n        },\n        setViewContext: function (context) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewContext(context); });\n        },\n        setViewContextProperty: function (key, value) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewContextProperty(key, value); });\n        },\n        addAction: function (action, commonContext) {\n            if (commonContext === void 0) { commonContext = getCommonContext(); }\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addAction(action, commonContext); });\n        },\n        addError: function (providedError, commonContext) {\n            if (commonContext === void 0) { commonContext = getCommonContext(); }\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addError(providedError, commonContext); });\n        },\n        addFeatureFlagEvaluation: function (key, value) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addFeatureFlagEvaluation(key, value); });\n        },\n        startDurationVital: function (name, options) {\n            return startDurationVital(customVitalsState, name, options);\n        },\n        stopDurationVital: function (name, options) {\n            stopDurationVital(addDurationVital, customVitalsState, name, options);\n        },\n        addDurationVital: addDurationVital,\n    };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n    var _a, _b;\n    return assign({}, initConfiguration, {\n        applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n        clientToken: 'empty',\n        sessionSampleRate: 100,\n        defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel(),\n    });\n}\n//# sourceMappingURL=preStartRum.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n    switch (initConfiguration.sessionPersistence) {\n        case SessionPersistence.COOKIE:\n            return selectCookieStrategy(initConfiguration);\n        case SessionPersistence.LOCAL_STORAGE:\n            return selectLocalStorageStrategy();\n        case undefined: {\n            var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n            if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n                sessionStoreStrategyType = selectLocalStorageStrategy();\n            }\n            return sessionStoreStrategyType;\n        }\n        default:\n            display.error(\"Invalid session persistence '\".concat(String(initConfiguration.sessionPersistence), \"'\"));\n    }\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    var sessionStateUpdateObservable = new Observable();\n    var sessionStoreStrategy = sessionStoreStrategyType.type === SessionPersistence.COOKIE\n        ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n        : initLocalStorageStrategy();\n    var expireSession = sessionStoreStrategy.expireSession;\n    var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n    var sessionCache;\n    startSession();\n    var _a = throttle(function () {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return;\n                }\n                var synchronizedSession = synchronizeSession(sessionState);\n                expandOrRenewSessionState(synchronizedSession);\n                return synchronizedSession;\n            },\n            after: function (sessionState) {\n                if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n                    renewSessionInCache(sessionState);\n                }\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }, STORAGE_POLL_DELAY), throttledExpandOrRenewSession = _a.throttled, cancelExpandOrRenewSession = _a.cancel;\n    function expandSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) { return (hasSessionInCache() ? synchronizeSession(sessionState) : undefined); },\n        }, sessionStoreStrategy);\n    }\n    /**\n     * allows two behaviors:\n     * - if the session is active, synchronize the session cache without updating the session store\n     * - if the session is not active, clear the session store and expire the session cache\n     */\n    function watchSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                return isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState) : undefined;\n            },\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    function synchronizeSession(sessionState) {\n        if (isSessionInExpiredState(sessionState)) {\n            sessionState = getExpiredSessionState(sessionState);\n        }\n        if (hasSessionInCache()) {\n            if (isSessionInCacheOutdated(sessionState)) {\n                expireSessionInCache();\n            }\n            else {\n                sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n                sessionCache = sessionState;\n            }\n        }\n        return sessionState;\n    }\n    function startSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return getExpiredSessionState(sessionState);\n                }\n            },\n            after: function (sessionState) {\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }\n    function expandOrRenewSessionState(sessionState) {\n        if (isSessionInNotStartedState(sessionState)) {\n            return false;\n        }\n        var _a = computeSessionState(sessionState[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n        sessionState[productKey] = trackingType;\n        delete sessionState.isExpired;\n        if (isTracked && !sessionState.id) {\n            sessionState.id = generateUUID();\n            sessionState.created = String(dateNow());\n        }\n    }\n    function hasSessionInCache() {\n        return sessionCache[productKey] !== undefined;\n    }\n    function isSessionInCacheOutdated(sessionState) {\n        return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n    }\n    function expireSessionInCache() {\n        sessionCache = getExpiredSessionState(sessionCache);\n        expireObservable.notify();\n    }\n    function renewSessionInCache(sessionState) {\n        sessionCache = sessionState;\n        renewObservable.notify();\n    }\n    function updateSessionState(partialSessionState) {\n        processSessionStoreOperations({\n            process: function (sessionState) { return assign({}, sessionState, partialSessionState); },\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    return {\n        expandOrRenewSession: throttledExpandOrRenewSession,\n        expandSession: expandSession,\n        getSession: function () { return sessionCache; },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        sessionStateUpdateObservable: sessionStateUpdateObservable,\n        restartSession: startSession,\n        expire: function () {\n            cancelExpandOrRenewSession();\n            expireSession(sessionCache);\n            synchronizeSession(getExpiredSessionState(sessionCache));\n        },\n        stop: function () {\n            clearInterval(watchSessionTimeoutId);\n        },\n        updateSessionState: updateSessionState,\n    };\n}\n//# sourceMappingURL=sessionStore.js.map","export function callPluginsMethod(plugins, methodName, parameter) {\n    if (!plugins) {\n        return;\n    }\n    for (var _i = 0, plugins_1 = plugins; _i < plugins_1.length; _i++) {\n        var plugin = plugins_1[_i];\n        var method = plugin[methodName];\n        if (method) {\n            method(parameter);\n        }\n    }\n}\n//# sourceMappingURL=plugins.js.map","import { sendToExtension, createPageExitObservable, startTelemetry, canUseEventBridge, getEventBridge, addTelemetryDebug, drainPreStartTelemetry, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { createWindowOpenObservable } from '../browser/windowOpenObservable';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewHistory } from '../domain/contexts/viewHistory';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/action/actionCollection';\nimport { startErrorCollection } from '../domain/error/errorCollection';\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection';\nimport { startResourceCollection } from '../domain/resource/resourceCollection';\nimport { startViewCollection } from '../domain/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext';\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry';\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory';\nimport { startDisplayContext } from '../domain/contexts/displayContext';\nimport { startVitalCollection } from '../domain/vital/vitalCollection';\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext';\nimport { startLongAnimationFrameCollection } from '../domain/longAnimationFrame/longAnimationFrameCollection';\nexport function startRum(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, createEncoder, \n// `startRum` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startRum` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState, customVitalsState) {\n    var cleanupTasks = [];\n    var lifeCycle = new LifeCycle();\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) { return sendToExtension('rum', event); });\n    var telemetry = startRumTelemetry(configuration);\n    telemetry.setContextProvider(function () {\n        var _a, _b;\n        return ({\n            application: {\n                id: configuration.applicationId,\n            },\n            session: {\n                id: (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id,\n            },\n            view: {\n                id: (_b = viewHistory.findView()) === null || _b === void 0 ? void 0 : _b.id,\n            },\n            action: {\n                id: actionContexts.findActionId(),\n            },\n        });\n    });\n    var reportError = function (error) {\n        lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error });\n        addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n    };\n    var featureFlagContexts = startFeatureFlagContexts(lifeCycle, customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */));\n    var pageExitObservable = createPageExitObservable(configuration);\n    var pageExitSubscription = pageExitObservable.subscribe(function (event) {\n        lifeCycle.notify(11 /* LifeCycleEventType.PAGE_EXITED */, event);\n    });\n    cleanupTasks.push(function () { return pageExitSubscription.unsubscribe(); });\n    var session = !canUseEventBridge()\n        ? startRumSessionManager(configuration, lifeCycle, trackingConsentState)\n        : startRumSessionManagerStub();\n    if (!canUseEventBridge()) {\n        var batch_1 = startRumBatch(configuration, lifeCycle, telemetry.observable, reportError, pageExitObservable, session.expireObservable, createEncoder);\n        cleanupTasks.push(function () { return batch_1.stop(); });\n        startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batch_1.flushObservable);\n    }\n    else {\n        startRumEventBridge(lifeCycle);\n    }\n    var domMutationObservable = createDOMMutationObservable();\n    var locationChangeObservable = createLocationChangeObservable(configuration, location);\n    var pageStateHistory = startPageStateHistory(configuration);\n    var _a = createWindowOpenObservable(), windowOpenObservable = _a.observable, stopWindowOpen = _a.stop;\n    cleanupTasks.push(stopWindowOpen);\n    var _b = startRumEventCollection(lifeCycle, configuration, location, session, pageStateHistory, locationChangeObservable, domMutationObservable, windowOpenObservable, getCommonContext, reportError), viewHistory = _b.viewHistory, urlContexts = _b.urlContexts, actionContexts = _b.actionContexts, addAction = _b.addAction, stopRumEventCollection = _b.stop;\n    cleanupTasks.push(stopRumEventCollection);\n    drainPreStartTelemetry();\n    var _c = startViewCollection(lifeCycle, configuration, location, domMutationObservable, windowOpenObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions), addTiming = _c.addTiming, startView = _c.startView, setViewName = _c.setViewName, setViewContext = _c.setViewContext, setViewContextProperty = _c.setViewContextProperty, stopViewCollection = _c.stop;\n    cleanupTasks.push(stopViewCollection);\n    var stopResourceCollection = startResourceCollection(lifeCycle, configuration, pageStateHistory).stop;\n    cleanupTasks.push(stopResourceCollection);\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.LONG_ANIMATION_FRAME)) {\n        if (configuration.trackLongTasks) {\n            var stopLongAnimationFrameCollection = startLongAnimationFrameCollection(lifeCycle, configuration).stop;\n            cleanupTasks.push(stopLongAnimationFrameCollection);\n        }\n    }\n    else {\n        startLongTaskCollection(lifeCycle, configuration);\n    }\n    var addError = startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts).addError;\n    startRequestCollection(lifeCycle, configuration, session);\n    var vitalCollection = startVitalCollection(lifeCycle, pageStateHistory, customVitalsState);\n    var internalContext = startInternalContext(configuration.applicationId, session, viewHistory, actionContexts, urlContexts);\n    return {\n        addAction: addAction,\n        addError: addError,\n        addTiming: addTiming,\n        addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n        startView: startView,\n        setViewContext: setViewContext,\n        setViewContextProperty: setViewContextProperty,\n        setViewName: setViewName,\n        lifeCycle: lifeCycle,\n        viewHistory: viewHistory,\n        session: session,\n        stopSession: function () { return session.expire(); },\n        getInternalContext: internalContext.get,\n        startDurationVital: vitalCollection.startDurationVital,\n        stopDurationVital: vitalCollection.stopDurationVital,\n        addDurationVital: vitalCollection.addDurationVital,\n        stop: function () {\n            cleanupTasks.forEach(function (task) { return task(); });\n        },\n    };\n}\nfunction startRumTelemetry(configuration) {\n    var telemetry = startTelemetry(\"browser-rum-sdk\" /* TelemetryService.RUM */, configuration);\n    if (canUseEventBridge()) {\n        var bridge_1 = getEventBridge();\n        telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n    }\n    return telemetry;\n}\nexport function startRumEventCollection(lifeCycle, configuration, location, sessionManager, pageStateHistory, locationChangeObservable, domMutationObservable, windowOpenObservable, getCommonContext, reportError) {\n    var viewHistory = startViewHistory(lifeCycle);\n    var urlContexts = startUrlContexts(lifeCycle, locationChangeObservable, location);\n    var actionCollection = startActionCollection(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageStateHistory);\n    var displayContext = startDisplayContext(configuration);\n    var ciVisibilityContext = startCiVisibilityContext(configuration);\n    startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionCollection.actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError);\n    return {\n        viewHistory: viewHistory,\n        pageStateHistory: pageStateHistory,\n        urlContexts: urlContexts,\n        addAction: actionCollection.addAction,\n        actionContexts: actionCollection.actionContexts,\n        stop: function () {\n            actionCollection.stop();\n            ciVisibilityContext.stop();\n            displayContext.stop();\n            urlContexts.stop();\n            viewHistory.stop();\n            pageStateHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=startRum.js.map","import { initConsoleObservable, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n    var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleLog) {\n        return errorObservable.notify(consoleLog.error);\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n    var handleRuntimeError = function (stackTrace, originalError) {\n        var rawError = computeRawError({\n            stackTrace: stackTrace,\n            originalError: originalError,\n            startClocks: clocksNow(),\n            nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n            source: ErrorSource.SOURCE,\n            handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n        });\n        errorObservable.notify(rawError);\n    };\n    var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;\n    var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(handleRuntimeError).stop;\n    return {\n        stop: function () {\n            stopInstrumentingOnError();\n            stopInstrumentingOnUnhandledRejection();\n        },\n    };\n}\nexport function instrumentOnError(callback) {\n    return instrumentMethod(window, 'onerror', function (_a) {\n        var _b = _a.parameters, messageObj = _b[0], url = _b[1], line = _b[2], column = _b[3], errorObj = _b[4];\n        var stackTrace;\n        if (isError(errorObj)) {\n            stackTrace = computeStackTrace(errorObj);\n        }\n        else {\n            stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n        }\n        callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n    });\n}\nexport function instrumentUnhandledRejection(callback) {\n    return instrumentMethod(window, 'onunhandledrejection', function (_a) {\n        var e = _a.parameters[0];\n        var reason = e.reason || 'Empty reason';\n        var stack = computeStackTrace(reason);\n        callback(stack, reason);\n    });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError, isError, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts) {\n    var errorObservable = new Observable();\n    trackConsoleError(errorObservable);\n    trackRuntimeError(errorObservable);\n    trackReportError(configuration, errorObservable);\n    errorObservable.subscribe(function (error) { return lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error }); });\n    return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts);\n}\nexport function doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts) {\n    lifeCycle.subscribe(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, function (_a) {\n        var error = _a.error, customerContext = _a.customerContext, savedCommonContext = _a.savedCommonContext;\n        lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n            customerContext: customerContext,\n            savedCommonContext: savedCommonContext,\n        }, processError(error, pageStateHistory, featureFlagContexts)));\n    });\n    return {\n        addError: function (_a, savedCommonContext) {\n            var error = _a.error, handlingStack = _a.handlingStack, startClocks = _a.startClocks, customerContext = _a.context;\n            var stackTrace = isError(error) ? computeStackTrace(error) : undefined;\n            var rawError = computeRawError({\n                stackTrace: stackTrace,\n                originalError: error,\n                handlingStack: handlingStack,\n                startClocks: startClocks,\n                nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n                source: ErrorSource.CUSTOM,\n                handling: \"handled\" /* ErrorHandling.HANDLED */,\n            });\n            lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n                customerContext: customerContext,\n                savedCommonContext: savedCommonContext,\n                error: rawError,\n            });\n        },\n    };\n}\nfunction processError(error, pageStateHistory, featureFlagContexts) {\n    var rawRumEvent = {\n        date: error.startClocks.timeStamp,\n        error: {\n            id: generateUUID(),\n            message: error.message,\n            source: error.source,\n            stack: error.stack,\n            handling_stack: error.handlingStack,\n            type: error.type,\n            handling: error.handling,\n            causes: error.causes,\n            source_type: 'browser',\n            fingerprint: error.fingerprint,\n            csp: error.csp,\n        },\n        type: \"error\" /* RumEventType.ERROR */,\n        view: { in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, error.startClocks.relative) },\n    };\n    var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative);\n    if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n        rawRumEvent.feature_flags = featureFlagContext;\n    }\n    var domainContext = {\n        error: error.originalError,\n        handlingStack: error.handlingStack,\n    };\n    return {\n        rawRumEvent: rawRumEvent,\n        startTime: error.startClocks.relative,\n        domainContext: domainContext,\n    };\n}\n//# sourceMappingURL=errorCollection.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewHistory, actionContexts, urlContexts) {\n    return {\n        get: function (startTime) {\n            var viewContext = viewHistory.findView(startTime);\n            var urlContext = urlContexts.findUrl(startTime);\n            var session = sessionManager.findTrackedSession(startTime);\n            if (session && viewContext && urlContext) {\n                var actionId = actionContexts.findActionId(startTime);\n                return {\n                    application_id: applicationId,\n                    session_id: session.id,\n                    user_action: actionId ? { id: actionId } : undefined,\n                    view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n                };\n            }\n        },\n    };\n}\n//# sourceMappingURL=internalContext.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport var FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(lifeCycle, customerDataTracker) {\n    var featureFlagContexts = createValueHistory({\n        expireDelay: FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY,\n    });\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n        var startClocks = _a.startClocks;\n        featureFlagContexts.add({}, startClocks.relative);\n        customerDataTracker.resetCustomerData();\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        featureFlagContexts.closeActive(endClocks.relative);\n    });\n    return {\n        findFeatureFlagEvaluations: function (startTime) { return featureFlagContexts.find(startTime); },\n        addFeatureFlagEvaluation: function (key, value) {\n            var currentContext = featureFlagContexts.find();\n            if (currentContext) {\n                currentContext[key] = value;\n                customerDataTracker.updateCustomerData(currentContext);\n            }\n        },\n        stop: function () { return customerDataTracker.stop(); },\n    };\n}\n//# sourceMappingURL=featureFlagContext.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n    var sessionString = getInitCookie(SESSION_STORE_KEY);\n    if (!sessionString) {\n        var oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n        var oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n        var oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n        var session = {};\n        if (oldSessionId) {\n            session.id = oldSessionId;\n        }\n        if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n            session[LOGS_SESSION_KEY] = oldLogsType;\n        }\n        if (oldRumType && /^[012]$/.test(oldRumType)) {\n            session[RUM_SESSION_KEY] = oldRumType;\n        }\n        if (isSessionStarted(session)) {\n            expandSessionState(session);\n            cookieStoreStrategy.persistSession(session);\n        }\n    }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n    var bridge = getEventBridge();\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n        bridge.send('rum', serverRumEvent);\n    });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { combine, isTelemetryReplicationAllowed, startBatchWithReplica, } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable, sessionExpireObservable, createEncoder) {\n    var replica = configuration.replica;\n    var batch = startBatchWithReplica(configuration, {\n        endpoint: configuration.rumEndpointBuilder,\n        encoder: createEncoder(2 /* DeflateEncoderStreamId.RUM */),\n    }, replica && {\n        endpoint: replica.rumEndpointBuilder,\n        transformMessage: function (message) { return combine(message, { application: { id: replica.applicationId } }); },\n        encoder: createEncoder(3 /* DeflateEncoderStreamId.RUM_REPLICA */),\n    }, reportError, pageExitObservable, sessionExpireObservable);\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n        if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n            batch.upsert(serverRumEvent, serverRumEvent.view.id);\n        }\n        else {\n            batch.add(serverRumEvent);\n        }\n    });\n    telemetryEventObservable.subscribe(function (event) { return batch.add(event, isTelemetryReplicationAllowed(configuration)); });\n    return batch;\n}\n//# sourceMappingURL=startRumBatch.js.map","import { createBatch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable, batchFactoryImp) {\n    if (batchFactoryImp === void 0) { batchFactoryImp = createBatch; }\n    var primaryBatch = createBatchFromConfig(configuration, primary);\n    var replicaBatch = replica && createBatchFromConfig(configuration, replica);\n    function createBatchFromConfig(configuration, _a) {\n        var endpoint = _a.endpoint, encoder = _a.encoder;\n        return batchFactoryImp({\n            encoder: encoder,\n            request: createHttpRequest(endpoint, configuration.batchBytesLimit, reportError),\n            flushController: createFlushController({\n                messagesLimit: configuration.batchMessagesLimit,\n                bytesLimit: configuration.batchBytesLimit,\n                durationLimit: configuration.flushTimeout,\n                pageExitObservable: pageExitObservable,\n                sessionExpireObservable: sessionExpireObservable,\n            }),\n            messageBytesLimit: configuration.messageBytesLimit,\n        });\n    }\n    return {\n        flushObservable: primaryBatch.flushController.flushObservable,\n        add: function (message, replicated) {\n            if (replicated === void 0) { replicated = true; }\n            primaryBatch.add(message);\n            if (replicaBatch && replicated) {\n                replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n            }\n        },\n        upsert: function (message, key) {\n            primaryBatch.upsert(message, key);\n            if (replicaBatch) {\n                replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n            }\n        },\n        stop: function () {\n            primaryBatch.stop();\n            if (replicaBatch) {\n                replicaBatch.stop();\n            }\n        },\n    };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n    var messagesLimit = _a.messagesLimit, bytesLimit = _a.bytesLimit, durationLimit = _a.durationLimit, pageExitObservable = _a.pageExitObservable, sessionExpireObservable = _a.sessionExpireObservable;\n    var pageExitSubscription = pageExitObservable.subscribe(function (event) { return flush(event.reason); });\n    var sessionExpireSubscription = sessionExpireObservable.subscribe(function () { return flush('session_expire'); });\n    var flushObservable = new Observable(function () { return function () {\n        pageExitSubscription.unsubscribe();\n        sessionExpireSubscription.unsubscribe();\n    }; });\n    var currentBytesCount = 0;\n    var currentMessagesCount = 0;\n    function flush(flushReason) {\n        if (currentMessagesCount === 0) {\n            return;\n        }\n        var messagesCount = currentMessagesCount;\n        var bytesCount = currentBytesCount;\n        currentMessagesCount = 0;\n        currentBytesCount = 0;\n        cancelDurationLimitTimeout();\n        flushObservable.notify({\n            reason: flushReason,\n            messagesCount: messagesCount,\n            bytesCount: bytesCount,\n        });\n    }\n    var durationLimitTimeoutId;\n    function scheduleDurationLimitTimeout() {\n        if (durationLimitTimeoutId === undefined) {\n            durationLimitTimeoutId = setTimeout(function () {\n                flush('duration_limit');\n            }, durationLimit);\n        }\n    }\n    function cancelDurationLimitTimeout() {\n        clearTimeout(durationLimitTimeoutId);\n        durationLimitTimeoutId = undefined;\n    }\n    return {\n        flushObservable: flushObservable,\n        get messagesCount() {\n            return currentMessagesCount;\n        },\n        /**\n         * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right before adding the message, so no flush\n         * event can happen after `notifyBeforeAddMessage` and before adding the message.\n         *\n         * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n         * actually added.\n         */\n        notifyBeforeAddMessage: function (estimatedMessageBytesCount) {\n            if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n            // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n            // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n            // to notify when a flush is needed (for example on page exit).\n            currentMessagesCount += 1;\n            currentBytesCount += estimatedMessageBytesCount;\n            scheduleDurationLimitTimeout();\n        },\n        /**\n         * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n         *\n         * This function can be called asynchronously after the message was added, but in this case it\n         * should not be called if a flush event occurred in between.\n         *\n         * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n         * its actual bytes count once added to the pool.\n         */\n        notifyAfterAddMessage: function (messageBytesCountDiff) {\n            if (messageBytesCountDiff === void 0) { messageBytesCountDiff = 0; }\n            currentBytesCount += messageBytesCountDiff;\n            if (currentMessagesCount >= messagesLimit) {\n                flush('messages_limit');\n            }\n            else if (currentBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n        },\n        /**\n         * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right after removing the message, so no flush\n         * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n         *\n         * @param messageBytesCount: the message bytes count that was added to the pool. Should\n         * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n         * `notifyAfterAddMessage`.\n         */\n        notifyAfterRemoveMessage: function (messageBytesCount) {\n            currentBytesCount -= messageBytesCount;\n            currentMessagesCount -= 1;\n            if (currentMessagesCount === 0) {\n                cancelDurationLimitTimeout();\n            }\n        },\n    };\n}\n//# sourceMappingURL=flushController.js.map","import { instrumentMethod, Observable } from '@datadog/browser-core';\nexport function createWindowOpenObservable() {\n    var observable = new Observable();\n    var stop = instrumentMethod(window, 'open', function () { return observable.notify(); }).stop;\n    return { observable: observable, stop: stop };\n}\n//# sourceMappingURL=windowOpenObservable.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewHistory(lifeCycle) {\n    var viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY });\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (view) {\n        viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative);\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        viewValueHistory.closeActive(endClocks.relative);\n    });\n    lifeCycle.subscribe(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, function (viewUpdate) {\n        var currentView = viewValueHistory.find(viewUpdate.startClocks.relative);\n        if (currentView && viewUpdate.name) {\n            currentView.name = viewUpdate.name;\n        }\n        if (currentView && viewUpdate.context) {\n            currentView.context = viewUpdate.context;\n        }\n    });\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n        viewValueHistory.reset();\n    });\n    function buildViewHistoryEntry(view) {\n        return {\n            service: view.service,\n            version: view.version,\n            context: view.context,\n            id: view.id,\n            name: view.name,\n            startClocks: view.startClocks,\n        };\n    }\n    return {\n        findView: function (startTime) { return viewValueHistory.find(startTime); },\n        stop: function () {\n            viewValueHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=viewHistory.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nexport function startDisplayContext(configuration) {\n    var viewport;\n    var animationFrameId;\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.DELAY_VIEWPORT_COLLECTION)) {\n        // Use requestAnimationFrame to delay the calculation of viewport dimensions until after SDK initialization, preventing long tasks.\n        animationFrameId = requestAnimationFrame(function () {\n            viewport = getViewportDimension();\n        });\n    }\n    else {\n        viewport = getViewportDimension();\n    }\n    var unsubscribeViewport = initViewportObservable(configuration).subscribe(function (viewportDimension) {\n        viewport = viewportDimension;\n    }).unsubscribe;\n    return {\n        get: function () { return (viewport ? { viewport: viewport } : undefined); },\n        stop: function () {\n            unsubscribeViewport();\n            if (animationFrameId) {\n                cancelAnimationFrame(animationFrameId);\n            }\n        },\n    };\n}\n//# sourceMappingURL=displayContext.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory } from '@datadog/browser-core';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, locationChangeObservable, location) {\n    var urlContextHistory = createValueHistory({ expireDelay: URL_CONTEXT_TIME_OUT_DELAY });\n    var previousViewUrl;\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n        var startClocks = _a.startClocks;\n        var viewUrl = location.href;\n        urlContextHistory.add(buildUrlContext({\n            url: viewUrl,\n            referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n        }), startClocks.relative);\n        previousViewUrl = viewUrl;\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        urlContextHistory.closeActive(endClocks.relative);\n    });\n    var locationChangeSubscription = locationChangeObservable.subscribe(function (_a) {\n        var newLocation = _a.newLocation;\n        var current = urlContextHistory.find();\n        if (current) {\n            var changeTime = relativeNow();\n            urlContextHistory.closeActive(changeTime);\n            urlContextHistory.add(buildUrlContext({\n                url: newLocation.href,\n                referrer: current.referrer,\n            }), changeTime);\n        }\n    });\n    function buildUrlContext(_a) {\n        var url = _a.url, referrer = _a.referrer;\n        return {\n            url: url,\n            referrer: referrer,\n        };\n    }\n    return {\n        findUrl: function (startTime) { return urlContextHistory.find(startTime); },\n        stop: function () {\n            locationChangeSubscription.unsubscribe();\n            urlContextHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=urlContexts.js.map","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n    var bufferedClicks = [];\n    var status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n    var maxDurationBetweenClicksTimeoutId;\n    appendClick(firstClick);\n    function appendClick(click) {\n        click.stopObservable.subscribe(tryFinalize);\n        bufferedClicks.push(click);\n        clearTimeout(maxDurationBetweenClicksTimeoutId);\n        maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n    }\n    function tryFinalize() {\n        if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every(function (click) { return click.isStopped(); })) {\n            status = 2 /* ClickChainStatus.Finalized */;\n            onFinalize(bufferedClicks);\n        }\n    }\n    function dontAcceptMoreClick() {\n        clearTimeout(maxDurationBetweenClicksTimeoutId);\n        if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n            status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n            tryFinalize();\n        }\n    }\n    return {\n        tryAppend: function (click) {\n            if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n                return false;\n            }\n            if (bufferedClicks.length > 0 &&\n                !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n                dontAcceptMoreClick();\n                return false;\n            }\n            appendClick(click);\n            return true;\n        },\n        stop: function () {\n            dontAcceptMoreClick();\n        },\n    };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n    return (first.target === second.target &&\n        mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n        first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS);\n}\nfunction mouseEventDistance(origin, other) {\n    return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n//# sourceMappingURL=clickChain.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n    var testId = getSyntheticsTestId();\n    var resultId = getSyntheticsResultId();\n    if (testId && resultId) {\n        return {\n            test_id: testId,\n            result_id: resultId,\n            injected: willSyntheticsInjectRum(),\n        };\n    }\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { isEmptyObject, mapValues, toServerDuration } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, pageOpenObserable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions) {\n    lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_UPDATED */, function (view) {\n        return lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory));\n    });\n    return trackViews(location, lifeCycle, domMutationObservable, pageOpenObserable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n    var replayStats = recorderApi.getReplayStats(view.id);\n    var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative);\n    var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);\n    var viewEvent = {\n        _dd: {\n            document_version: view.documentVersion,\n            replay_stats: replayStats,\n            page_states: pageStates,\n            configuration: {\n                start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n            },\n        },\n        date: view.startClocks.timeStamp,\n        type: \"view\" /* RumEventType.VIEW */,\n        view: {\n            action: {\n                count: view.eventCounts.actionCount,\n            },\n            frustration: {\n                count: view.eventCounts.frustrationCount,\n            },\n            cumulative_layout_shift: (_a = view.commonViewMetrics.cumulativeLayoutShift) === null || _a === void 0 ? void 0 : _a.value,\n            cumulative_layout_shift_time: toServerDuration((_b = view.commonViewMetrics.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.time),\n            cumulative_layout_shift_target_selector: (_c = view.commonViewMetrics.cumulativeLayoutShift) === null || _c === void 0 ? void 0 : _c.targetSelector,\n            first_byte: toServerDuration((_d = view.initialViewMetrics.navigationTimings) === null || _d === void 0 ? void 0 : _d.firstByte),\n            dom_complete: toServerDuration((_e = view.initialViewMetrics.navigationTimings) === null || _e === void 0 ? void 0 : _e.domComplete),\n            dom_content_loaded: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.domContentLoaded),\n            dom_interactive: toServerDuration((_g = view.initialViewMetrics.navigationTimings) === null || _g === void 0 ? void 0 : _g.domInteractive),\n            error: {\n                count: view.eventCounts.errorCount,\n            },\n            first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n            first_input_delay: toServerDuration((_h = view.initialViewMetrics.firstInput) === null || _h === void 0 ? void 0 : _h.delay),\n            first_input_time: toServerDuration((_j = view.initialViewMetrics.firstInput) === null || _j === void 0 ? void 0 : _j.time),\n            first_input_target_selector: (_k = view.initialViewMetrics.firstInput) === null || _k === void 0 ? void 0 : _k.targetSelector,\n            interaction_to_next_paint: toServerDuration((_l = view.commonViewMetrics.interactionToNextPaint) === null || _l === void 0 ? void 0 : _l.value),\n            interaction_to_next_paint_time: toServerDuration((_m = view.commonViewMetrics.interactionToNextPaint) === null || _m === void 0 ? void 0 : _m.time),\n            interaction_to_next_paint_target_selector: (_o = view.commonViewMetrics.interactionToNextPaint) === null || _o === void 0 ? void 0 : _o.targetSelector,\n            is_active: view.isActive,\n            name: view.name,\n            largest_contentful_paint: toServerDuration((_p = view.initialViewMetrics.largestContentfulPaint) === null || _p === void 0 ? void 0 : _p.value),\n            largest_contentful_paint_target_selector: (_q = view.initialViewMetrics.largestContentfulPaint) === null || _q === void 0 ? void 0 : _q.targetSelector,\n            load_event: toServerDuration((_r = view.initialViewMetrics.navigationTimings) === null || _r === void 0 ? void 0 : _r.loadEvent),\n            loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n            loading_type: view.loadingType,\n            long_task: {\n                count: view.eventCounts.longTaskCount,\n            },\n            resource: {\n                count: view.eventCounts.resourceCount,\n            },\n            time_spent: toServerDuration(view.duration),\n        },\n        feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n        display: view.commonViewMetrics.scroll\n            ? {\n                scroll: {\n                    max_depth: view.commonViewMetrics.scroll.maxDepth,\n                    max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n                    max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n                    max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n                },\n            }\n            : undefined,\n        session: {\n            has_replay: replayStats ? true : undefined,\n            is_active: view.sessionIsActive ? undefined : false,\n        },\n        privacy: {\n            replay_level: configuration.defaultPrivacyLevel,\n        },\n    };\n    if (!isEmptyObject(view.customTimings)) {\n        viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n    }\n    return {\n        rawRumEvent: viewEvent,\n        startTime: view.startClocks.relative,\n        domainContext: {\n            location: view.location,\n        },\n    };\n}\n//# sourceMappingURL=viewCollection.js.map","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, monitor, } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport var THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues) {\n    if (scrollValues === void 0) { scrollValues = createScrollValuesObservable(configuration); }\n    var maxScrollDepth = 0;\n    var maxScrollHeight = 0;\n    var maxScrollHeightTime = 0;\n    var subscription = scrollValues.subscribe(function (_a) {\n        var scrollDepth = _a.scrollDepth, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight;\n        var shouldUpdate = false;\n        if (scrollDepth > maxScrollDepth) {\n            maxScrollDepth = scrollDepth;\n            shouldUpdate = true;\n        }\n        if (scrollHeight > maxScrollHeight) {\n            maxScrollHeight = scrollHeight;\n            var now = relativeNow();\n            maxScrollHeightTime = elapsed(viewStart.relative, now);\n            shouldUpdate = true;\n        }\n        if (shouldUpdate) {\n            callback({\n                maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n                maxDepthScrollTop: scrollTop,\n                maxScrollHeight: maxScrollHeight,\n                maxScrollHeightTime: maxScrollHeightTime,\n            });\n        }\n    });\n    return {\n        stop: function () { return subscription.unsubscribe(); },\n    };\n}\nexport function computeScrollValues() {\n    var scrollTop = getScrollY();\n    var height = getViewportDimension().height;\n    var scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n    var scrollDepth = Math.round(height + scrollTop);\n    return {\n        scrollHeight: scrollHeight,\n        scrollDepth: scrollDepth,\n        scrollTop: scrollTop,\n    };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration) {\n    if (throttleDuration === void 0) { throttleDuration = THROTTLE_SCROLL_DURATION; }\n    return new Observable(function (observable) {\n        function notify() {\n            observable.notify(computeScrollValues());\n        }\n        if (window.ResizeObserver) {\n            var throttledNotify_1 = throttle(notify, throttleDuration, {\n                leading: false,\n                trailing: true,\n            });\n            var observerTarget = document.scrollingElement || document.documentElement;\n            var resizeObserver_1 = new ResizeObserver(monitor(throttledNotify_1.throttled));\n            if (observerTarget) {\n                resizeObserver_1.observe(observerTarget);\n            }\n            var eventListener_1 = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, throttledNotify_1.throttled, {\n                passive: true,\n            });\n            return function () {\n                throttledNotify_1.cancel();\n                resizeObserver_1.disconnect();\n                eventListener_1.stop();\n            };\n        }\n    });\n}\n//# sourceMappingURL=trackScrollMetrics.js.map","import { setTimeout, relativeNow, runOnReadyState, clearTimeout } from '@datadog/browser-core';\nimport { getNavigationEntry } from '../../../browser/performanceUtils';\nexport function trackNavigationTimings(configuration, callback, getNavigationEntryImpl) {\n    if (getNavigationEntryImpl === void 0) { getNavigationEntryImpl = getNavigationEntry; }\n    return waitAfterLoadEvent(configuration, function () {\n        var entry = getNavigationEntryImpl();\n        if (!isIncompleteNavigation(entry)) {\n            callback(processNavigationEntry(entry));\n        }\n    });\n}\nfunction processNavigationEntry(entry) {\n    return {\n        domComplete: entry.domComplete,\n        domContentLoaded: entry.domContentLoadedEventEnd,\n        domInteractive: entry.domInteractive,\n        loadEvent: entry.loadEventEnd,\n        // In some cases the value reported is negative or is larger\n        // than the current page time. Ignore these cases:\n        // https://github.com/GoogleChrome/web-vitals/issues/137\n        // https://github.com/GoogleChrome/web-vitals/issues/162\n        firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n    };\n}\nfunction isIncompleteNavigation(entry) {\n    return entry.loadEventEnd <= 0;\n}\nfunction waitAfterLoadEvent(configuration, callback) {\n    var timeoutId;\n    var stopOnReadyState = runOnReadyState(configuration, 'complete', function () {\n        // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n        timeoutId = setTimeout(function () { return callback(); });\n    }).stop;\n    return {\n        stop: function () {\n            stopOnReadyState();\n            clearTimeout(timeoutId);\n        },\n    };\n}\n//# sourceMappingURL=trackNavigationTimings.js.map","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n    var commonViewMetrics = {};\n    var _a = trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n        commonViewMetrics.loadingTime = newLoadingTime;\n        scheduleViewUpdate();\n    }), stopLoadingTimeTracking = _a.stop, setLoadEvent = _a.setLoadEvent;\n    var stopScrollMetricsTracking = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {\n        commonViewMetrics.scroll = newScrollMetrics;\n    }).stop;\n    var stopCLSTracking = trackCumulativeLayoutShift(configuration, viewStart.relative, function (cumulativeLayoutShift) {\n        commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n        scheduleViewUpdate();\n    }).stop;\n    var _b = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType), stopINPTracking = _b.stop, getInteractionToNextPaint = _b.getInteractionToNextPaint, setViewEnd = _b.setViewEnd;\n    return {\n        stop: function () {\n            stopLoadingTimeTracking();\n            stopCLSTracking();\n            stopScrollMetricsTracking();\n        },\n        stopINPTracking: stopINPTracking,\n        setLoadEvent: setLoadEvent,\n        setViewEnd: setViewEnd,\n        getCommonViewMetrics: function () {\n            commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n            return commonViewMetrics;\n        },\n    };\n}\n//# sourceMappingURL=trackCommonViewMetrics.js.map","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate) {\n    var initialViewMetrics = {};\n    var stopNavigationTracking = trackNavigationTimings(configuration, function (navigationTimings) {\n        setLoadEvent(navigationTimings.loadEvent);\n        initialViewMetrics.navigationTimings = navigationTimings;\n        scheduleViewUpdate();\n    }).stop;\n    var firstHidden = trackFirstHidden(configuration);\n    var stopFCPTracking = trackFirstContentfulPaint(configuration, firstHidden, function (firstContentfulPaint) {\n        initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n        scheduleViewUpdate();\n    }).stop;\n    var stopLCPTracking = trackLargestContentfulPaint(configuration, firstHidden, window, function (largestContentfulPaint) {\n        initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n        scheduleViewUpdate();\n    }).stop;\n    var stopFIDTracking = trackFirstInput(configuration, firstHidden, function (firstInput) {\n        initialViewMetrics.firstInput = firstInput;\n        scheduleViewUpdate();\n    }).stop;\n    function stop() {\n        stopNavigationTracking();\n        stopFCPTracking();\n        stopLCPTracking();\n        stopFIDTracking();\n        firstHidden.stop();\n    }\n    return {\n        stop: stop,\n        initialViewMetrics: initialViewMetrics,\n    };\n}\n//# sourceMappingURL=trackInitialViewMetrics.js.map","import { elapsed, find } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(configuration, firstHidden, callback) {\n    var performanceFirstInputSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.FIRST_INPUT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var firstInputEntry = find(entries, function (entry) { return entry.startTime < firstHidden.timeStamp; });\n        if (firstInputEntry) {\n            var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n            var firstInputTargetSelector = void 0;\n            if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n                firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n            }\n            callback({\n                // Ensure firstInputDelay to be positive, see\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n                delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n                time: firstInputEntry.startTime,\n                targetSelector: firstInputTargetSelector,\n            });\n        }\n    });\n    return {\n        stop: function () {\n            performanceFirstInputSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackFirstInput.js.map","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n    var _a = trackEventCounts({\n        lifeCycle: lifeCycle,\n        isChildEvent: function (event) { return event.view.id === viewId; },\n        onChange: onChange,\n    }), stop = _a.stop, eventCounts = _a.eventCounts;\n    return {\n        stop: stop,\n        eventCounts: eventCounts,\n    };\n}\n//# sourceMappingURL=trackViewEventCounts.js.map","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadType, viewStart, callback) {\n    var isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n    var isWaitingForActivityLoadingTime = true;\n    var loadingTimeCandidates = [];\n    var firstHidden = trackFirstHidden(configuration);\n    function invokeCallbackIfAllCandidatesAreReceived() {\n        if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n            var loadingTime = Math.max.apply(Math, loadingTimeCandidates);\n            if (loadingTime < firstHidden.timeStamp) {\n                callback(loadingTime);\n            }\n        }\n    }\n    var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, function (event) {\n        if (isWaitingForActivityLoadingTime) {\n            isWaitingForActivityLoadingTime = false;\n            if (event.hadActivity) {\n                loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n            }\n            invokeCallbackIfAllCandidatesAreReceived();\n        }\n    }).stop;\n    return {\n        stop: function () {\n            stop();\n            firstHidden.stop();\n        },\n        setLoadEvent: function (loadEvent) {\n            if (isWaitingForLoadEvent) {\n                isWaitingForLoadEvent = false;\n                loadingTimeCandidates.push(loadEvent);\n                invokeCallbackIfAllCandidatesAreReceived();\n            }\n        },\n    };\n}\n//# sourceMappingURL=trackLoadingTime.js.map","import { ONE_SECOND } from './utils/timeUtils';\nimport { requestIdleCallback } from './requestIdleCallback';\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nvar IDLE_CALLBACK_TIMEOUT = ONE_SECOND;\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport var MAX_EXECUTION_TIME_ON_TIMEOUT = 30;\nexport function createTaskQueue() {\n    var pendingTasks = [];\n    function run(deadline) {\n        var executionTimeRemaining;\n        if (deadline.didTimeout) {\n            var start_1 = performance.now();\n            executionTimeRemaining = function () { return MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start_1); };\n        }\n        else {\n            executionTimeRemaining = deadline.timeRemaining.bind(deadline);\n        }\n        while (executionTimeRemaining() > 0 && pendingTasks.length) {\n            pendingTasks.shift()();\n        }\n        if (pendingTasks.length) {\n            scheduleNextRun();\n        }\n    }\n    function scheduleNextRun() {\n        requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT });\n    }\n    return {\n        push: function (task) {\n            if (pendingTasks.push(task) === 1) {\n                scheduleNextRun();\n            }\n        },\n    };\n}\n//# sourceMappingURL=taskQueue.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongAnimationFrameCollection(lifeCycle, configuration) {\n    var performanceResourceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LONG_ANIMATION_FRAME,\n        buffered: true,\n    }).subscribe(function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            var startClocks = relativeToClocks(entry.startTime);\n            var rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    entry_type: \"long-animation-frame\" /* RumLongTaskEntryType.LONG_ANIMATION_FRAME */,\n                    duration: toServerDuration(entry.duration),\n                    blocking_duration: toServerDuration(entry.blockingDuration),\n                    first_ui_event_timestamp: toServerDuration(entry.firstUIEventTimestamp),\n                    render_start: toServerDuration(entry.renderStart),\n                    style_and_layout_start: toServerDuration(entry.styleAndLayoutStart),\n                    start_time: toServerDuration(entry.startTime),\n                    scripts: entry.scripts.map(function (script) { return ({\n                        duration: toServerDuration(script.duration),\n                        pause_duration: toServerDuration(script.pauseDuration),\n                        forced_style_and_layout_duration: toServerDuration(script.forcedStyleAndLayoutDuration),\n                        start_time: toServerDuration(script.startTime),\n                        execution_start: toServerDuration(script.executionStart),\n                        source_url: script.sourceURL,\n                        source_function_name: script.sourceFunctionName,\n                        source_char_position: script.sourceCharPosition,\n                        invoker: script.invoker,\n                        invoker_type: script.invokerType,\n                        window_attribution: script.windowAttribution,\n                    }); }),\n                },\n                type: \"long_task\" /* RumEventType.LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent: rawRumEvent,\n                startTime: startClocks.relative,\n                domainContext: { performanceEntry: entry },\n            });\n        }\n    });\n    return {\n        stop: function () { return performanceResourceSubscription.unsubscribe(); },\n    };\n}\n//# sourceMappingURL=longAnimationFrameCollection.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongTaskCollection(lifeCycle, configuration) {\n    var performanceLongTaskSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LONG_TASK,\n        buffered: true,\n    }).subscribe(function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.entryType !== RumPerformanceEntryType.LONG_TASK) {\n                break;\n            }\n            if (!configuration.trackLongTasks) {\n                break;\n            }\n            var startClocks = relativeToClocks(entry.startTime);\n            var rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    entry_type: \"long-task\" /* RumLongTaskEntryType.LONG_TASK */,\n                    duration: toServerDuration(entry.duration),\n                },\n                type: \"long_task\" /* RumEventType.LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent: rawRumEvent,\n                startTime: startClocks.relative,\n                domainContext: { performanceEntry: entry },\n            });\n        }\n    });\n    return {\n        stop: function () {\n            performanceLongTaskSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=longTaskCollection.js.map","import { initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n    var subscription = initReportObservable(configuration, [\n        RawReportType.cspViolation,\n        RawReportType.intervention,\n    ]).subscribe(function (rawError) { return errorObservable.notify(rawError); });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackReportError.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n    var reader = stream.getReader();\n    var chunks = [];\n    var readBytesCount = 0;\n    readMore();\n    function readMore() {\n        reader.read().then(monitor(function (result) {\n            if (result.done) {\n                onDone();\n                return;\n            }\n            if (options.collectStreamBody) {\n                chunks.push(result.value);\n            }\n            readBytesCount += result.value.length;\n            if (readBytesCount > options.bytesLimit) {\n                onDone();\n            }\n            else {\n                readMore();\n            }\n        }), monitor(function (error) { return callback(error); }));\n    }\n    function onDone() {\n        reader.cancel().catch(\n        // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n        // as an unhandled rejection\n        noop);\n        var bytes;\n        var limitExceeded;\n        if (options.collectStreamBody) {\n            var completeBuffer_1;\n            if (chunks.length === 1) {\n                // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n                // use it directly.\n                completeBuffer_1 = chunks[0];\n            }\n            else {\n                // else, we need to copy buffers into a larger buffer to concatenate them.\n                completeBuffer_1 = new Uint8Array(readBytesCount);\n                var offset_1 = 0;\n                chunks.forEach(function (chunk) {\n                    completeBuffer_1.set(chunk, offset_1);\n                    offset_1 += chunk.length;\n                });\n            }\n            bytes = completeBuffer_1.slice(0, options.bytesLimit);\n            limitExceeded = completeBuffer_1.length > options.bytesLimit;\n        }\n        callback(undefined, bytes, limitExceeded);\n    }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { canUseEventBridge, noop, bridgeSupports, } from '@datadog/browser-core';\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats';\nimport { createDeflateEncoder, getDeflateWorkerStatus, startDeflateWorker, } from '../domain/deflate';\nimport { isBrowserSupported } from './isBrowserSupported';\nimport { createPostStartStrategy } from './postStartStrategy';\nimport { createPreStartStrategy } from './preStartStrategy';\nexport function makeRecorderApi(startRecordingImpl, createDeflateWorkerImpl) {\n    if ((canUseEventBridge() && !bridgeSupports(\"records\" /* BridgeCapability.RECORDS */)) || !isBrowserSupported()) {\n        return {\n            start: noop,\n            stop: noop,\n            getReplayStats: function () { return undefined; },\n            onRumStart: noop,\n            isRecording: function () { return false; },\n            getSessionReplayLink: function () { return undefined; },\n        };\n    }\n    // eslint-disable-next-line prefer-const\n    var _a = createPreStartStrategy(), strategy = _a.strategy, shouldStartImmediately = _a.shouldStartImmediately;\n    return {\n        start: function (options) { return strategy.start(options); },\n        stop: function () { return strategy.stop(); },\n        getSessionReplayLink: function () { return strategy.getSessionReplayLink(); },\n        onRumStart: onRumStart,\n        isRecording: function () {\n            // The worker is started optimistically, meaning we could have started to record but its\n            // initialization fails a bit later. This could happen when:\n            // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n            // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n            // * the browser fails to load the worker in case the workerUrl is used\n            // * an unexpected error occurs in the Worker before initialization, ex:\n            //   * a runtime exception collected by monitor()\n            //   * a syntax error notified by the browser via an error event\n            // * the worker is unresponsive for some reason and timeouts\n            //\n            // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n            // an important part of the Datadog App:\n            // * If we have a false positive (we set has_replay: true even if no replay data is present),\n            // we might display broken links to the Session Replay player.\n            // * If we have a false negative (we don't set has_replay: true even if replay data is\n            // available), it is less noticeable because no link will be displayed.\n            //\n            // Thus, it is better to have false negative, so let's make sure the worker is correctly\n            // initialized before advertizing that we are recording.\n            //\n            // In the future, when the compression worker will also be used for RUM data, this will be\n            // less important since no RUM event will be sent when the worker fails to initialize.\n            return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ && strategy.isRecording();\n        },\n        getReplayStats: function (viewId) {\n            return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ ? getReplayStatsImpl(viewId) : undefined;\n        },\n    };\n    function onRumStart(lifeCycle, configuration, sessionManager, viewHistory, worker) {\n        var cachedDeflateEncoder;\n        function getOrCreateDeflateEncoder() {\n            if (!cachedDeflateEncoder) {\n                worker !== null && worker !== void 0 ? worker : (worker = startDeflateWorker(configuration, 'Datadog Session Replay', function () {\n                    strategy.stop();\n                }, createDeflateWorkerImpl));\n                if (worker) {\n                    cachedDeflateEncoder = createDeflateEncoder(configuration, worker, 1 /* DeflateEncoderStreamId.REPLAY */);\n                }\n            }\n            return cachedDeflateEncoder;\n        }\n        strategy = createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, startRecordingImpl, getOrCreateDeflateEncoder);\n        if (shouldStartImmediately(configuration)) {\n            strategy.start();\n        }\n    }\n}\n//# sourceMappingURL=recorderApi.js.map","import { noop } from '@datadog/browser-core';\nexport function createPreStartStrategy() {\n    var status = 0 /* PreStartRecorderStatus.None */;\n    return {\n        strategy: {\n            start: function () {\n                status = 1 /* PreStartRecorderStatus.HadManualStart */;\n            },\n            stop: function () {\n                status = 2 /* PreStartRecorderStatus.HadManualStop */;\n            },\n            isRecording: function () { return false; },\n            getSessionReplayLink: noop,\n        },\n        shouldStartImmediately: function (configuration) {\n            return (status === 1 /* PreStartRecorderStatus.HadManualStart */ ||\n                (status === 0 /* PreStartRecorderStatus.None */ && !configuration.startSessionReplayRecordingManually));\n        },\n    };\n}\n//# sourceMappingURL=preStartStrategy.js.map","import { PageExitReason, runOnReadyState } from '@datadog/browser-core';\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink';\nexport function createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, startRecordingImpl, getOrCreateDeflateEncoder) {\n    var status = 0 /* RecorderStatus.Stopped */;\n    lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n        if (status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */) {\n            stop();\n            status = 1 /* RecorderStatus.IntentToStart */;\n        }\n    });\n    // Stop the recorder on page unload to avoid sending records after the page is ended.\n    lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n        if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n            stop();\n        }\n    });\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n        if (status === 1 /* RecorderStatus.IntentToStart */) {\n            start();\n        }\n    });\n    function start(options) {\n        var session = sessionManager.findTrackedSession();\n        if (canStartRecording(session, options)) {\n            status = 1 /* RecorderStatus.IntentToStart */;\n            return;\n        }\n        if (isRecordingInProgress(status)) {\n            return;\n        }\n        status = 2 /* RecorderStatus.Starting */;\n        runOnReadyState(configuration, 'interactive', function () {\n            if (status !== 2 /* RecorderStatus.Starting */) {\n                return;\n            }\n            var deflateEncoder = getOrCreateDeflateEncoder();\n            if (!deflateEncoder) {\n                status = 0 /* RecorderStatus.Stopped */;\n                return;\n            }\n            ;\n            (stopRecording = startRecordingImpl(lifeCycle, configuration, sessionManager, viewHistory, deflateEncoder).stop);\n            status = 3 /* RecorderStatus.Started */;\n        });\n        if (shouldForceReplay(session, options)) {\n            sessionManager.setForcedReplay();\n        }\n    }\n    function stop() {\n        if (status !== 0 /* RecorderStatus.Stopped */ && status === 3 /* RecorderStatus.Started */) {\n            stopRecording === null || stopRecording === void 0 ? void 0 : stopRecording();\n        }\n        status = 0 /* RecorderStatus.Stopped */;\n    }\n    var stopRecording;\n    return {\n        start: start,\n        stop: stop,\n        getSessionReplayLink: function () {\n            return getSessionReplayLink(configuration, sessionManager, viewHistory, status !== 0 /* RecorderStatus.Stopped */);\n        },\n        isRecording: function () { return status === 3 /* RecorderStatus.Started */; },\n    };\n}\nfunction canStartRecording(session, options) {\n    return !session || (session.sessionReplay === 0 /* SessionReplayState.OFF */ && (!options || !options.force));\n}\nfunction isRecordingInProgress(status) {\n    return status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */;\n}\nfunction shouldForceReplay(session, options) {\n    return options && options.force && session.sessionReplay === 0 /* SessionReplayState.OFF */;\n}\n//# sourceMappingURL=postStartStrategy.js.map","import { getSessionReplayUrl } from '@datadog/browser-rum-core';\nimport { isBrowserSupported } from '../boot/isBrowserSupported';\nexport function getSessionReplayLink(configuration, sessionManager, viewHistory, isRecordingStarted) {\n    var session = sessionManager.findTrackedSession();\n    var errorType = getErrorType(session, isRecordingStarted);\n    var viewContext = viewHistory.findView();\n    return getSessionReplayUrl(configuration, {\n        viewContext: viewContext,\n        errorType: errorType,\n        session: session,\n    });\n}\nfunction getErrorType(session, isRecordingStarted) {\n    if (!isBrowserSupported()) {\n        return 'browser-not-supported';\n    }\n    if (!session) {\n        // possibilities:\n        // - rum sampled out\n        // - session expired (edge case)\n        return 'rum-not-tracked';\n    }\n    if (session.sessionReplay === 0 /* SessionReplayState.OFF */) {\n        // possibilities\n        // - replay sampled out\n        return 'incorrect-session-plan';\n    }\n    if (!isRecordingStarted) {\n        return 'replay-not-started';\n    }\n}\n//# sourceMappingURL=getSessionReplayLink.js.map","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, _a) {\n    var session = _a.session, viewContext = _a.viewContext, errorType = _a.errorType;\n    var sessionId = session ? session.id : 'no-session-id';\n    var parameters = [];\n    if (errorType !== undefined) {\n        parameters.push(\"error-type=\".concat(errorType));\n    }\n    if (viewContext) {\n        parameters.push(\"seed=\".concat(viewContext.id));\n        parameters.push(\"from=\".concat(viewContext.startClocks.timeStamp));\n    }\n    var origin = getDatadogSiteUrl(configuration);\n    var path = \"/rum/replay/sessions/\".concat(sessionId);\n    return \"\".concat(origin).concat(path, \"?\").concat(parameters.join('&'));\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n    var site = rumConfiguration.site;\n    var subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n    return \"https://\".concat(subdomain ? \"\".concat(subdomain, \".\") : '').concat(site);\n}\nfunction getSiteDefaultSubdomain(configuration) {\n    switch (configuration.site) {\n        case INTAKE_SITE_US1:\n        case INTAKE_SITE_EU1:\n            return 'app';\n        case INTAKE_SITE_STAGING:\n            return 'dd';\n        default:\n            return undefined;\n    }\n}\n//# sourceMappingURL=getSessionReplayUrl.js.map","import { createHttpRequest, addTelemetryDebug, canUseEventBridge } from '@datadog/browser-core';\nimport { record } from '../domain/record';\nimport { startSegmentCollection, SEGMENT_BYTES_LIMIT } from '../domain/segmentCollection';\nimport { startRecordBridge } from '../domain/startRecordBridge';\nexport function startRecording(lifeCycle, configuration, sessionManager, viewHistory, encoder, httpRequest) {\n    var cleanupTasks = [];\n    var reportError = function (error) {\n        lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error });\n        addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n    };\n    var replayRequest = httpRequest || createHttpRequest(configuration.sessionReplayEndpointBuilder, SEGMENT_BYTES_LIMIT, reportError);\n    var addRecord;\n    if (!canUseEventBridge()) {\n        var segmentCollection = startSegmentCollection(lifeCycle, configuration, sessionManager, viewHistory, replayRequest, encoder);\n        addRecord = segmentCollection.addRecord;\n        cleanupTasks.push(segmentCollection.stop);\n    }\n    else {\n        ;\n        (addRecord = startRecordBridge(viewHistory).addRecord);\n    }\n    var stopRecording = record({\n        emit: addRecord,\n        configuration: configuration,\n        lifeCycle: lifeCycle,\n        viewHistory: viewHistory,\n    }).stop;\n    cleanupTasks.push(stopRecording);\n    return {\n        stop: function () {\n            cleanupTasks.forEach(function (task) { return task(); });\n        },\n    };\n}\n//# sourceMappingURL=startRecording.js.map","import { isPageExitReason, ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nimport { buildReplayPayload } from './buildReplayPayload';\nimport { createSegment } from './segment';\nexport var SEGMENT_DURATION_LIMIT = 5 * ONE_SECOND;\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport var SEGMENT_BYTES_LIMIT = 60000;\n// Segments are the main data structure for session replays. They contain context information used\n// for indexing or UI needs, and a list of records (RRWeb 'events', renamed to avoid confusing\n// namings). They are stored without any processing from the intake, and fetched one after the\n// other while a session is being replayed. Their encoding (deflate) are carefully crafted to allow\n// concatenating multiple segments together. Segments have a size overhead (metadata), so our goal is to\n// build segments containing as many records as possible while complying with the various flush\n// strategies to guarantee a good replay quality.\n//\n// When the recording starts, a segment is initially created.  The segment is flushed (finalized and\n// sent) based on various events (non-exhaustive list):\n//\n// * the page visibility change or becomes to unload\n// * the segment duration reaches a limit\n// * the encoded segment bytes count reaches a limit\n// * ...\n//\n// A segment cannot be created without its context.  If the RUM session ends and no session id is\n// available when creating a new segment, records will be ignored, until the session is renewed and\n// a new session id is available.\n//\n// Empty segments (segments with no record) aren't useful and should be ignored.\n//\n// To help investigate session replays issues, each segment is created with a \"creation reason\",\n// indicating why the session has been created.\nexport function startSegmentCollection(lifeCycle, configuration, sessionManager, viewHistory, httpRequest, encoder) {\n    return doStartSegmentCollection(lifeCycle, function () { return computeSegmentContext(configuration.applicationId, sessionManager, viewHistory); }, httpRequest, encoder);\n}\nexport function doStartSegmentCollection(lifeCycle, getSegmentContext, httpRequest, encoder) {\n    var state = {\n        status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n        nextSegmentCreationReason: 'init',\n    };\n    var unsubscribeViewCreated = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function () {\n        flushSegment('view_change');\n    }).unsubscribe;\n    var unsubscribePageExited = lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n        flushSegment(pageExitEvent.reason);\n    }).unsubscribe;\n    function flushSegment(flushReason) {\n        if (state.status === 1 /* SegmentCollectionStatus.SegmentPending */) {\n            state.segment.flush(function (metadata, encoderResult) {\n                var payload = buildReplayPayload(encoderResult.output, metadata, encoderResult.rawBytesCount);\n                if (isPageExitReason(flushReason)) {\n                    httpRequest.sendOnExit(payload);\n                }\n                else {\n                    httpRequest.send(payload);\n                }\n            });\n            clearTimeout(state.expirationTimeoutId);\n        }\n        if (flushReason !== 'stop') {\n            state = {\n                status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n                nextSegmentCreationReason: flushReason,\n            };\n        }\n        else {\n            state = {\n                status: 2 /* SegmentCollectionStatus.Stopped */,\n            };\n        }\n    }\n    return {\n        addRecord: function (record) {\n            if (state.status === 2 /* SegmentCollectionStatus.Stopped */) {\n                return;\n            }\n            if (state.status === 0 /* SegmentCollectionStatus.WaitingForInitialRecord */) {\n                var context = getSegmentContext();\n                if (!context) {\n                    return;\n                }\n                state = {\n                    status: 1 /* SegmentCollectionStatus.SegmentPending */,\n                    segment: createSegment({ encoder: encoder, context: context, creationReason: state.nextSegmentCreationReason }),\n                    expirationTimeoutId: setTimeout(function () {\n                        flushSegment('segment_duration_limit');\n                    }, SEGMENT_DURATION_LIMIT),\n                };\n            }\n            state.segment.addRecord(record, function (encodedBytesCount) {\n                if (encodedBytesCount > SEGMENT_BYTES_LIMIT) {\n                    flushSegment('segment_bytes_limit');\n                }\n            });\n        },\n        stop: function () {\n            flushSegment('stop');\n            unsubscribeViewCreated();\n            unsubscribePageExited();\n        },\n    };\n}\nexport function computeSegmentContext(applicationId, sessionManager, viewHistory) {\n    var session = sessionManager.findTrackedSession();\n    var viewContext = viewHistory.findView();\n    if (!session || !viewContext) {\n        return undefined;\n    }\n    return {\n        application: {\n            id: applicationId,\n        },\n        session: {\n            id: session.id,\n        },\n        view: {\n            id: viewContext.id,\n        },\n    };\n}\nexport function setSegmentBytesLimit(newSegmentBytesLimit) {\n    if (newSegmentBytesLimit === void 0) { newSegmentBytesLimit = 60000; }\n    SEGMENT_BYTES_LIMIT = newSegmentBytesLimit;\n}\n//# sourceMappingURL=segmentCollection.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRecordBridge(viewHistory) {\n    var bridge = getEventBridge();\n    return {\n        addRecord: function (record) {\n            // Get the current active view, not at the time of the record, aligning with the segment logic.\n            // This approach could potentially associate the record to an incorrect view, in case the record date is in the past (e.g. frustration records).\n            // However the risk is minimal. We could address the issue when potential negative impact are identified.\n            var view = viewHistory.findView();\n            bridge.send('record', record, view.id);\n        },\n    };\n}\n//# sourceMappingURL=startRecordBridge.js.map","import { assign } from '@datadog/browser-core';\nexport function buildReplayPayload(data, metadata, rawSegmentBytesCount) {\n    var formData = new FormData();\n    formData.append('segment', new Blob([data], {\n        type: 'application/octet-stream',\n    }), \"\".concat(metadata.session.id, \"-\").concat(metadata.start));\n    var metadataAndSegmentSizes = assign({\n        raw_segment_size: rawSegmentBytesCount,\n        compressed_segment_size: data.byteLength,\n    }, metadata);\n    var serializedMetadataAndSegmentSizes = JSON.stringify(metadataAndSegmentSizes);\n    formData.append('event', new Blob([serializedMetadataAndSegmentSizes], { type: 'application/json' }));\n    return { data: formData, bytesCount: data.byteLength };\n}\n//# sourceMappingURL=buildReplayPayload.js.map","import { assign } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport * as replayStats from '../replayStats';\nexport function createSegment(_a) {\n    var context = _a.context, creationReason = _a.creationReason, encoder = _a.encoder;\n    var encodedBytesCount = 0;\n    var viewId = context.view.id;\n    var metadata = assign({\n        start: Infinity,\n        end: -Infinity,\n        creation_reason: creationReason,\n        records_count: 0,\n        has_full_snapshot: false,\n        index_in_view: replayStats.getSegmentsCount(viewId),\n        source: 'browser',\n    }, context);\n    replayStats.addSegment(viewId);\n    function addRecord(record, callback) {\n        metadata.start = Math.min(metadata.start, record.timestamp);\n        metadata.end = Math.max(metadata.end, record.timestamp);\n        metadata.records_count += 1;\n        metadata.has_full_snapshot || (metadata.has_full_snapshot = record.type === RecordType.FullSnapshot);\n        var prefix = encoder.isEmpty ? '{\"records\":[' : ',';\n        encoder.write(prefix + JSON.stringify(record), function (additionalEncodedBytesCount) {\n            encodedBytesCount += additionalEncodedBytesCount;\n            callback(encodedBytesCount);\n        });\n    }\n    function flush(callback) {\n        if (encoder.isEmpty) {\n            throw new Error('Empty segment flushed');\n        }\n        encoder.write(\"],\".concat(JSON.stringify(metadata).slice(1), \"\\n\"));\n        encoder.finish(function (encoderResult) {\n            replayStats.addWroteData(metadata.view.id, encoderResult.rawBytesCount);\n            callback(metadata, encoderResult);\n        });\n    }\n    return { addRecord: addRecord, flush: flush };\n}\n//# sourceMappingURL=segment.js.map","import { sendToExtension } from '@datadog/browser-core';\nimport * as replayStats from '../replayStats';\nimport { trackFocus, trackFrustration, trackInput, trackMediaInteraction, trackMouseInteraction, trackMove, trackMutation, trackScroll, trackStyleSheet, trackViewEnd, trackViewportResize, trackVisualViewportResize, } from './trackers';\nimport { createElementsScrollPositions } from './elementsScrollPositions';\nimport { initShadowRootsController } from './shadowRootsController';\nimport { startFullSnapshots } from './startFullSnapshots';\nimport { initRecordIds } from './recordIds';\nexport function record(options) {\n    var emit = options.emit, configuration = options.configuration, lifeCycle = options.lifeCycle;\n    // runtime checks for user options\n    if (!emit) {\n        throw new Error('emit function is required');\n    }\n    var emitAndComputeStats = function (record) {\n        emit(record);\n        sendToExtension('record', { record: record });\n        var view = options.viewHistory.findView();\n        replayStats.addRecord(view.id);\n    };\n    var elementsScrollPositions = createElementsScrollPositions();\n    var shadowRootsController = initShadowRootsController(configuration, emitAndComputeStats, elementsScrollPositions);\n    var stopFullSnapshots = startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, function (records) { return records.forEach(function (record) { return emitAndComputeStats(record); }); }).stop;\n    function flushMutations() {\n        shadowRootsController.flush();\n        mutationTracker.flush();\n    }\n    var recordIds = initRecordIds();\n    var mutationTracker = trackMutation(emitAndComputeStats, configuration, shadowRootsController, document);\n    var trackers = [\n        mutationTracker,\n        trackMove(configuration, emitAndComputeStats),\n        trackMouseInteraction(configuration, emitAndComputeStats, recordIds),\n        trackScroll(configuration, emitAndComputeStats, elementsScrollPositions, document),\n        trackViewportResize(configuration, emitAndComputeStats),\n        trackInput(configuration, emitAndComputeStats),\n        trackMediaInteraction(configuration, emitAndComputeStats),\n        trackStyleSheet(emitAndComputeStats),\n        trackFocus(configuration, emitAndComputeStats),\n        trackVisualViewportResize(configuration, emitAndComputeStats),\n        trackFrustration(lifeCycle, emitAndComputeStats, recordIds),\n        trackViewEnd(lifeCycle, function (viewEndRecord) {\n            flushMutations();\n            emitAndComputeStats(viewEndRecord);\n        }),\n    ];\n    return {\n        stop: function () {\n            shadowRootsController.stop();\n            trackers.forEach(function (tracker) { return tracker.stop(); });\n            stopFullSnapshots();\n        },\n        flushMutations: flushMutations,\n        shadowRootsController: shadowRootsController,\n    };\n}\n//# sourceMappingURL=record.js.map","export function createElementsScrollPositions() {\n    var scrollPositionsByElement = new WeakMap();\n    return {\n        set: function (element, scrollPositions) {\n            if (element === document && !document.scrollingElement) {\n                // cf https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement,\n                // in some cases scrolling elements can not be defined, we don't support those for now\n                return;\n            }\n            scrollPositionsByElement.set(element === document ? document.scrollingElement : element, scrollPositions);\n        },\n        get: function (element) {\n            return scrollPositionsByElement.get(element);\n        },\n        has: function (element) {\n            return scrollPositionsByElement.has(element);\n        },\n    };\n}\n//# sourceMappingURL=elementsScrollPositions.js.map","import { getScrollX, getScrollY, getViewportDimension } from '@datadog/browser-rum-core';\nimport { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport { serializeDocument } from './serialization';\nimport { getVisualViewport } from './viewports';\nexport function startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, fullSnapshotCallback) {\n    var takeFullSnapshot = function (timestamp, serializationContext) {\n        if (timestamp === void 0) { timestamp = timeStampNow(); }\n        if (serializationContext === void 0) { serializationContext = {\n            status: 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */,\n            elementsScrollPositions: elementsScrollPositions,\n            shadowRootsController: shadowRootsController,\n        }; }\n        var _a = getViewportDimension(), width = _a.width, height = _a.height;\n        var records = [\n            {\n                data: {\n                    height: height,\n                    href: window.location.href,\n                    width: width,\n                },\n                type: RecordType.Meta,\n                timestamp: timestamp,\n            },\n            {\n                data: {\n                    has_focus: document.hasFocus(),\n                },\n                type: RecordType.Focus,\n                timestamp: timestamp,\n            },\n            {\n                data: {\n                    node: serializeDocument(document, configuration, serializationContext),\n                    initialOffset: {\n                        left: getScrollX(),\n                        top: getScrollY(),\n                    },\n                },\n                type: RecordType.FullSnapshot,\n                timestamp: timestamp,\n            },\n        ];\n        if (window.visualViewport) {\n            records.push({\n                data: getVisualViewport(window.visualViewport),\n                type: RecordType.VisualViewport,\n                timestamp: timestamp,\n            });\n        }\n        return records;\n    };\n    fullSnapshotCallback(takeFullSnapshot());\n    var unsubscribe = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function (view) {\n        flushMutations();\n        fullSnapshotCallback(takeFullSnapshot(view.startClocks.timeStamp, {\n            shadowRootsController: shadowRootsController,\n            status: 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */,\n            elementsScrollPositions: elementsScrollPositions,\n        }));\n    }).unsubscribe;\n    return {\n        stop: unsubscribe,\n    };\n}\n//# sourceMappingURL=startFullSnapshots.js.map","export function initRecordIds() {\n    var recordIds = new WeakMap();\n    var nextId = 1;\n    return {\n        getIdForEvent: function (event) {\n            if (!recordIds.has(event)) {\n                recordIds.set(event, nextId++);\n            }\n            return recordIds.get(event);\n        },\n    };\n}\n//# sourceMappingURL=recordIds.js.map","import { throttle, addEventListeners, timeStampNow, noop } from '@datadog/browser-core';\nimport { initViewportObservable } from '@datadog/browser-rum-core';\nimport { IncrementalSource, RecordType } from '../../../types';\nimport { getVisualViewport } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar VISUAL_VIEWPORT_OBSERVER_THRESHOLD = 200;\nexport function trackViewportResize(configuration, viewportResizeCb) {\n    var viewportResizeSubscription = initViewportObservable(configuration).subscribe(function (data) {\n        viewportResizeCb(assembleIncrementalSnapshot(IncrementalSource.ViewportResize, data));\n    });\n    return {\n        stop: function () {\n            viewportResizeSubscription.unsubscribe();\n        },\n    };\n}\nexport function trackVisualViewportResize(configuration, visualViewportResizeCb) {\n    var visualViewport = window.visualViewport;\n    if (!visualViewport) {\n        return { stop: noop };\n    }\n    var _a = throttle(function () {\n        visualViewportResizeCb({\n            data: getVisualViewport(visualViewport),\n            type: RecordType.VisualViewport,\n            timestamp: timeStampNow(),\n        });\n    }, VISUAL_VIEWPORT_OBSERVER_THRESHOLD, {\n        trailing: false,\n    }), updateDimension = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListeners(configuration, visualViewport, [\"resize\" /* DOM_EVENT.RESIZE */, \"scroll\" /* DOM_EVENT.SCROLL */], updateDimension, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return {\n        stop: function () {\n            removeListener();\n            cancelThrottle();\n        },\n    };\n}\n//# sourceMappingURL=trackViewportResize.js.map","import { RecordType } from '../../../types';\nexport function trackFrustration(lifeCycle, frustrationCb, recordIds) {\n    var frustrationSubscription = lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (data) {\n        var _a, _b;\n        if (data.rawRumEvent.type === \"action\" /* RumEventType.ACTION */ &&\n            data.rawRumEvent.action.type === \"click\" /* ActionType.CLICK */ &&\n            ((_b = (_a = data.rawRumEvent.action.frustration) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.length) &&\n            'events' in data.domainContext &&\n            data.domainContext.events &&\n            data.domainContext.events.length) {\n            frustrationCb({\n                timestamp: data.rawRumEvent.date,\n                type: RecordType.FrustrationRecord,\n                data: {\n                    frustrationTypes: data.rawRumEvent.action.frustration.type,\n                    recordIds: data.domainContext.events.map(function (e) { return recordIds.getIdForEvent(e); }),\n                },\n            });\n        }\n    });\n    return {\n        stop: function () {\n            frustrationSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackFrustration.js.map","import { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackViewEnd(lifeCycle, viewEndCb) {\n    var viewEndSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, function () {\n        viewEndCb({\n            timestamp: timeStampNow(),\n            type: RecordType.ViewEnd,\n        });\n    });\n    return {\n        stop: function () {\n            viewEndSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackViewEnd.js.map","import { serializeNodeWithId } from './serializeNode';\nexport function serializeDocument(document, configuration, serializationContext) {\n    // We are sure that Documents are never ignored, so this function never returns null\n    return serializeNodeWithId(document, {\n        serializationContext: serializationContext,\n        parentNodePrivacyLevel: configuration.defaultPrivacyLevel,\n        configuration: configuration,\n    });\n}\n//# sourceMappingURL=serializeDocument.js.map","import { addEventListeners } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getNodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { IncrementalSource, MediaInteractionType } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackMediaInteraction(configuration, mediaInteractionCb) {\n    return addEventListeners(configuration, document, [\"play\" /* DOM_EVENT.PLAY */, \"pause\" /* DOM_EVENT.PAUSE */], function (event) {\n        var target = getEventTarget(event);\n        if (!target ||\n            getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        mediaInteractionCb(assembleIncrementalSnapshot(IncrementalSource.MediaInteraction, {\n            id: getSerializedNodeId(target),\n            type: event.type === \"play\" /* DOM_EVENT.PLAY */ ? MediaInteractionType.Play : MediaInteractionType.Pause,\n        }));\n    }, {\n        capture: true,\n        passive: true,\n    });\n}\n//# sourceMappingURL=trackMediaInteraction.js.map","import { addEventListeners, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackFocus(configuration, focusCb) {\n    return addEventListeners(configuration, window, [\"focus\" /* DOM_EVENT.FOCUS */, \"blur\" /* DOM_EVENT.BLUR */], function () {\n        focusCb({\n            data: { has_focus: document.hasFocus() },\n            type: RecordType.Focus,\n            timestamp: timeStampNow(),\n        });\n    });\n}\n//# sourceMappingURL=trackFocus.js.map","// @flow\n\nimport { datadogRum } from '@datadog/browser-rum';\nimport { retrieve } from 'putki';\nimport { consentGivenForCategory } from 'utils/cookieConsent';\n\nconst environment = window.__ENVIRONMENT__;\n\n// Regex patterns to identify known bot instances\n// Source: https://docs.datadoghq.com/real_user_monitoring/guide/identify-bots-in-the-ui/\nconst botPattern =\n  '(googlebot\\\\/|bot|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google|bingbot|slurp|java|wget|curl|Commons-HttpClient|Python-urllib|libwww|httpunit|nutch|phpcrawl|msnbot|jyxobot|FAST-WebCrawler|FAST Enterprise Crawler|biglotron|teoma|convera|seekbot|gigablast|exabot|ngbot|ia_archiver|GingerCrawler|webmon |httrack|webcrawler|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|bibnum.bnf|findlink|msrbot|panscient|yacybot|AISearchBot|IOI|ips-agent|tagoobot|MJ12bot|dotbot|woriobot|yanga|buzzbot|mlbot|yandexbot|purebot|Linguee Bot|Voyager|CyberPatrol|voilabot|baiduspider|citeseerxbot|spbot|twengabot|postrank|turnitinbot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|blekkobot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|ahrefsbot|Aboundex|domaincrawler|wbsearchbot|summify|ccbot|edisterbot|seznambot|ec2linkfinder|gslfbot|aihitbot|intelium_bot|facebookexternalhit|yeti|RetrevoPageAnalyzer|lb-spider|sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|seokicks-robot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|blexbot|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|Lipperhey SEO Service|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Livelapbot|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|Twitterbot|OrangeBot|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|SemrushBot|yoozBot|lipperhey|y!j-asr|Domain Re-Animator Bot|AddThis)';\n\nconst botRegex = new RegExp(botPattern, 'i');\n\nfunction isBotUserAgent() {\n  return botRegex.test(navigator.userAgent);\n}\n\nlet initialized = false;\nfunction initializeDatadogRum() {\n  if (initialized) return;\n  initialized = true;\n\n  // sessionSampleRate:\n  //   The percentage of sessions to track: 100 for all, 0 for none. Only\n  //   tracked sessions send RUM events. For more details about\n  //   sessionSampleRate, see the sampling configuration.\n  //    -> https://docs.datadoghq.com/real_user_monitoring/guide/sampling-browser-plans/\n  //\n  // sessionReplaySampleRate:\n  //   The percentage of tracked sessions with Browser RUM & Session Replay\n  //   pricing features: 100 for all, 0 for none. For more details about\n  //   sessionReplaySampleRate, see the sampling configuration.\n  //    -> https://www.datadoghq.com/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay\n  //    -> https://docs.datadoghq.com/real_user_monitoring/guide/sampling-browser-plans/\n\n  const { sessionSampleRate, sessionReplaySampleRate } = (() => {\n    // Filter out bots from RUM monitoring\n    // See: https://docs.datadoghq.com/real_user_monitoring/guide/identify-bots-in-the-ui/\n    if (isBotUserAgent()) {\n      return { sessionSampleRate: 0, sessionReplaySampleRate: 0 };\n    }\n\n    switch (environment) {\n      case 'test':\n        // We don't want test environment to send any RUM events but we do\n        // want our app to crash in test if for some reason the Datadog RUM\n        // code messes up our application.\n        return { sessionSampleRate: 0, sessionReplaySampleRate: 0 };\n      case 'development':\n        // We don't want to incur pricing costs in development.\n        // This number can be changed when we want to test the RUM code.\n        return { sessionSampleRate: 0, sessionReplaySampleRate: 0 };\n      default:\n        // We want to track all user sessions and let Datadog retention filters\n        // handle the actual retention (keeping only ~1K out of ~260K sessions).\n        // This allows us to capture all sessions for investigation while only\n        // retaining error cases and requests that take a long time.\n        //\n        // We are not using session replays, though, so we disable that.\n        return { sessionSampleRate: 100, sessionReplaySampleRate: 0 };\n    }\n  })();\n\n  const controller = retrieve('controller');\n  const action = retrieve('action');\n  datadogRum.init({\n    applicationId: '1b89e864-e532-4578-a391-cf29b0edb549',\n    clientToken: 'pubf765aeae3809f6105bb0c168ce3687bd',\n    site: 'datadoghq.eu',\n    service: 'venuu',\n    env: environment,\n    version: retrieve('application_version_git'),\n    sessionSampleRate,\n    sessionReplaySampleRate,\n    allowedTracingUrls: [/^https:\\/\\/(?:dev\\.|staging\\.)?venuu\\.(?:fi|se|com)/],\n    trackUserInteractions: true,\n    trackResources: true,\n    trackLongTasks: true,\n    beforeSend: event => {\n      if (typeof controller === 'string' && typeof action === 'string') {\n        // Datadog shows this in RUM session explorer for view names:\n        //\n        // > RUM SDK supports custom view names, which can be used to override\n        // > `url_path_group`. If not specified, it will have the same content\n        // > of `view.url_path_group`.\n        //\n        // So in order for venue pages, search pages etc. to be monitorable as\n        // their own groups, we can set up a custom view name that uses the\n        // Rails controller name and actions.\n        //\n        // This way, regardless of how pretty our URLs are, the grouping will\n        // match the way we write our pages. And we can finally monitor how long\n        // venue profile pages take to load.\n        event.view.name = `${controller}#${action}`;\n      }\n    },\n    defaultPrivacyLevel: 'mask-user-input'\n  });\n\n  datadogRum.startSessionReplayRecording();\n}\n\ndocument.addEventListener('cookieyes_consent_update', eventData => {\n  // $FlowIgnore[prop-missing] -- https://www.cookieyes.com/documentation/events-on-cookie-banner-interactions/\n  const data = eventData.detail;\n  if (data.accepted.includes('performance')) {\n    initializeDatadogRum();\n  }\n});\n\nif (consentGivenForCategory('performance') || environment === 'test') {\n  initializeDatadogRum();\n}\n","// @flow\n\nimport Honeybadger from '@honeybadger-io/js';\nimport { retrieve } from 'putki';\n\nconst environment = window.__ENVIRONMENT__;\n\nHoneybadger.configure({\n  apiKey: '087b96bb',\n  environment: environment,\n  revision: retrieve('application_version_git'),\n  // Paths inside our sourcemaps start with `webpack:///./` and to make Honeybadger\n  // be able to link the errors to our actual source files, we need to define the\n  // `projectRoot` as documented here:\n  // https://docs.honeybadger.io/lib/javascript/guides/using-source-maps/#improving-error-grouping-and-linking-to-source-code\n  projectRoot: 'webpack:///./',\n  enableUncaught: false,\n  // Reporting unhandled Promise rejections causes massive noise in our Honeybadger\n  // and is almost always non-actionable. Rather than reporting them, let's not.\n  enableUnhandledRejection: false\n});\n\nHoneybadger.beforeNotify(notice => {\n  if (suppressCurrentUserAgent()) {\n    return false;\n  }\n\n  notice.component = retrieve('controller');\n  notice.action = retrieve('action');\n  console.warn('[Honeybadger]', notice); // eslint-disable-line no-console\n\n  return true;\n});\n\nfunction suppressCurrentUserAgent() {\n  if (!window.navigator) return false;\n  return window.navigator.userAgent.includes('BingPreview');\n}\n","import initializeAnalytics from './initializeAnalytics';\n$(document).ready(initializeAnalytics);\n\nimport './external-tools';\nimport initializeFoundation from './foundation';\nimport './stickySidebar';\nimport './setupDatadog';\nimport './setupHoneybadger';\nimport './whatInput';\n\n$(document).ready(initializeFoundation);\n","const initializeFoundation = () => {\n  /*\n   * FIXME: hack to make Magellan work in a sidebar.\n   * Can be replaced by the offset_by_height option in Foundation 5.5.\n   * https://github.com/zurb/foundation/pull/5801\n   */\n  const sidebarMenuHeight = $('[data-magellan-expedition]').outerHeight();\n\n  const BLANK_RE = /^\\s*$/;\n\n  $(document).foundation({\n    'magellan-expedition': {\n      active_class: 'is-current',\n      destination_threshold: -sidebarMenuHeight,\n      throttle_delay: 100\n    },\n    tooltip: {\n      touch_close_text: __('foundation.tooltip.touch_close_text')\n    },\n    abide: {\n      validators: {\n        valuePlaceholder: function (el, required) {\n          // At least one, non-whitespace character should be present in the textarea.\n          // So newlines alone will not be valid.\n          if (required && BLANK_RE.test(el.value)) {\n            return false;\n          } else if (el.value === el.getAttribute('data-placeholder')) {\n            return false;\n          } else {\n            return true;\n          }\n        }\n      }\n    }\n  });\n\n  function toggleSidebarNavigationBasedOnTopbarVisibility() {\n    const $topBar = $('.top-bar').first();\n    const isTopNavigationExpanded = $topBar.hasClass('expanded');\n    $('.m-navigation').toggleClass(\n      'm-navigation--expanded',\n      isTopNavigationExpanded\n    );\n  }\n\n  const originalTopBarToggle = window.Foundation.libs.topbar.toggle;\n  window.Foundation.libs.topbar.toggle = function (...args) {\n    originalTopBarToggle.call(this, ...args);\n    toggleSidebarNavigationBasedOnTopbarVisibility();\n  };\n};\n\nexport default initializeFoundation;\n","// @flow\n\nimport * as React from 'react';\n\nimport styles from './InstructionVideoEmbed.module.scss';\n\ntype Props = {|\n  title: string,\n  embedUrl: string\n|};\n\nexport default function InstructionVideoEmbed(props: Props): React.Node {\n  return (\n    <div className={styles.container}>\n      <h3 className={styles.heading}>{props.title}</h3>\n      <div className={styles.frameResizer}>\n        <div className={styles.frame}>\n          <iframe src={props.embedUrl} frameBorder=\"0\" allowFullScreen />\n        </div>\n      </div>\n    </div>\n  );\n}\n","// @flow\n\nimport * as React from 'react';\nimport type { JSONProps } from 'common/types';\n\ntype LazyComponent = Promise<React.ComponentType<JSONProps<any>>>;\n\nexport async function ProfileEditRichTextEditor(): LazyComponent {\n  return (\n    await import(\n      'profiles/common/edit/components/ProfileEditRichTextEditor.rails'\n    )\n  ).default;\n}\n\nexport async function LandingPageRichTextEditor(): LazyComponent {\n  return (\n    await import(\n      'profiles/common/edit/components/LandingPageRichTextEditor.rails'\n    )\n  ).default;\n}\n\nexport async function AvailabilitySourceForm(): LazyComponent {\n  return (await import('reservations/components/AvailabilitySourceForm'))\n    .default;\n}\n\nexport async function PhoneNumberForm(): LazyComponent {\n  return (await import('phoneNumbers/components/PhoneNumberForm')).default;\n}\n\nexport async function VenueMobileCTAs(): LazyComponent {\n  return (await import('phoneNumbers/components/VenueMobileCTAs.rails'))\n    .default;\n}\n\nexport async function Rating(): LazyComponent {\n  return (await import('common/components/Rating')).default;\n}\n\nexport async function RatingBoxAccordion(): LazyComponent {\n  return (await import('common/components/accordion/RatingBoxAccordion'))\n    .default;\n}\n\nexport async function AccordionPanel(): LazyComponent {\n  return (await import('common/components/accordion/AccordionPanel')).default;\n}\n\nexport async function CommissionRoot(): LazyComponent {\n  return (await import('commission/components/CommissionRoot.rails')).default;\n}\n\nexport async function PackageEditorRoot(): LazyComponent {\n  return (await import('packages/edit/components/PackageEditorRoot.rails'))\n    .default;\n}\n\nexport async function VenueInquiryConversationRoot(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/venueInquiry/conversation/ConversationRoot.rails'\n    )\n  ).default;\n}\n\nexport async function CateringInquiryConversationApp(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/cateringInquiry/ConversationApp.rails'\n    )\n  ).default;\n}\n\nexport async function ReadOnlyVenueInquiryConversationApp(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/venueInquiry/readOnly/ConversationApp.rails'\n    )\n  ).default;\n}\n\nexport async function MarkAsRepliedRoot(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/venueInquiry/markAsReplied/MarkAsRepliedRoot.rails'\n    )\n  ).default;\n}\n\nexport async function VenueGroupEditorApp(): LazyComponent {\n  return (\n    await import('groups/venues/edit/components/VenueGroupEditorApp.rails')\n  ).default;\n}\n\nexport async function SendCopy(): LazyComponent {\n  return (await import('thanks/components/SendCopy')).default;\n}\n\nexport async function MessageTemplateEditorApp(): LazyComponent {\n  return (\n    await import('messageTemplates/components/MessageTemplateEditorApp.rails')\n  ).default;\n}\n\nexport async function MultiSelect(): LazyComponent {\n  return (await import('common/components/MultiSelect.rails')).default;\n}\n\nexport async function VenuePageInquiryFormNew(): LazyComponent {\n  return (await import('inquiry/components/VenuePageInquiryForm.rails'))\n    .default;\n}\n\nexport async function MultiVenueInquiryForm(): LazyComponent {\n  return (await import('inquiry/components/MultiVenueInquiryForm.rails'))\n    .default;\n}\n\nexport async function SearchableInquiryIndex(): LazyComponent {\n  return (\n    await import('conversations/index/components/SearchableInquiryIndex.rails')\n  ).default;\n}\n\nexport async function FeaturedEventTypeField(): LazyComponent {\n  return (\n    await import('staff/featuredVenuesEdit/components/FeaturedEventTypeField')\n  ).default;\n}\n\nexport async function FeaturedVenuesInventory(): LazyComponent {\n  return (\n    await import(\n      'staff/featuredVenuesInventory/components/FeaturedVenuesInventory.rails'\n    )\n  ).default;\n}\n\nexport async function EditOrganizationTabs(): LazyComponent {\n  return (await import('staff/organization/components/EditOrganizationTabs'))\n    .default;\n}\n\nexport async function SpamInquiriesTabs(): LazyComponent {\n  return (await import('staff/spamInquiries/components/SpamInquiriesTabs'))\n    .default;\n}\n\nexport async function EditVenueServices(): LazyComponent {\n  return (await import('staff/organization/components/EditVenueServices'))\n    .default;\n}\n\nexport async function EditVenueTypes(): LazyComponent {\n  return (await import('staff/organization/components/EditVenueTypes')).default;\n}\n\nexport async function ProfileAnnouncementsEditorApp(): LazyComponent {\n  return (\n    await import(\n      'staff/organization/components/ProfileAnnouncementsEditorApp.rails'\n    )\n  ).default;\n}\n\nexport async function CateringSearch(): LazyComponent {\n  return (await import('catering/search/components/CateringSearch.rails'))\n    .default;\n}\n\n// ============================================= START PROFILE PAGE RELATED COMPONENTS\n\nexport async function VenueProfileGallery(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileGallery.rails')\n  ).default;\n}\n\nexport async function VenueWishlistButton(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/venueProfileGallery/VenueWishlistButton.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileLocation(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileLocation.rails')\n  ).default;\n}\n\nexport async function VenueProfileVideoSection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileVideoSection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileVirtualTourSection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileVirtualTourSection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileStoriesOfPastEvents(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileStoriesOfPastEvents.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileCapacityDetails(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileCapacityDetails.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileCTASection(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileCTASection.rails')\n  ).default;\n}\n\nexport async function VenueProfileOtherSpacesInSameLocation(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileOtherSpacesInSameLocation.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileReviewList(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileReviewList.rails')\n  ).default;\n}\n\nexport async function VenueProfileServicesAndFacilities(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileServicesAndFacilities.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileSimilarVenues(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileSimilarVenues.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfilePricingSection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfilePricingSection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileAvailabilitySection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileAvailabilitySection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileBasicInformation(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileBasicInformation.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileTranslatedDescription(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileTranslatedDescription.rails'\n    )\n  ).default;\n}\n\nexport async function CateringBasicInformation(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringBasicInformation;\n}\nexport async function CateringDetailedInformation(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringDetailedInformation;\n}\nexport async function CateringHeading(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringHeading;\n}\nexport async function ProfileImageCarousel(): LazyComponent {\n  return (\n    await import('profiles/common/show/components/ProfileImageCarousel.rails')\n  ).default;\n}\nexport async function CateringInquiry(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringInquiry;\n}\nexport async function CateringServicesAndPricing(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringServicesAndPricing;\n}\nexport async function CateringMenuList(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringMenuList;\n}\n\nexport async function SupplierProfileServicesAndPricing(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileServicesAndPricing.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileHeading(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileHeading.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileContactInformation(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileContactInformation.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileVideo(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileVideo.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileInquiry(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileInquiry.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileContactImage(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileContactImage.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileBasicInformation(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileBasicInformation.rails'\n    )\n  ).default;\n}\n\n// ============================================= END PROFILE PAGE RELATED COMPONENTS\n\nexport async function SupplierSearch(): LazyComponent {\n  return (\n    await import('profiles/suppliers/search/components/SupplierSearch.rails')\n  ).default;\n}\n\nexport async function LegalNotice(): LazyComponent {\n  return (await import('common/components/inquiry/legalNotice/LegalNotice'))\n    .default;\n}\n\nexport async function PipedriveIntegrationStatus(): LazyComponent {\n  return (\n    await import(\n      'staff/organization/components/pipedriveIntegrationStatus/PipedriveIntegrationStatus.rails'\n    )\n  ).default;\n}\n\nexport async function BillingDetails(): LazyComponent {\n  return (\n    await import('billing/admin/billingDetails/components/BillingDetails.rails')\n  ).default;\n}\nexport async function TinField(): LazyComponent {\n  return (await import('billing/admin/tin/components/TinField.rails')).default;\n}\nexport async function InvoicesOfDayStates(): LazyComponent {\n  return (\n    await import(\n      'billing/staff/dailyInvoices/components/InvoicesOfDayStates.rails'\n    )\n  ).default;\n}\nexport async function InvoicingFields(): LazyComponent {\n  return (\n    await import(\n      'billing/admin/invoicingFields/components/InvoicingFields.rails'\n    )\n  ).default;\n}\nexport async function OrganizationInvoices(): LazyComponent {\n  return (\n    await import(\n      'billing/staff/organizationInvoices/components/OrganizationInvoices.rails'\n    )\n  ).default;\n}\nexport async function StripeCustomerStatus(): LazyComponent {\n  return (\n    await import(\n      'billing/staff/stripeCustomerStatus/components/StripeCustomerStatus.rails'\n    )\n  ).default;\n}\n\nexport async function OutcomeFeedback(): LazyComponent {\n  return (await import('outcomes/thanks/components/OutcomeFeedback.rails'))\n    .default;\n}\n\nexport async function EditOpeningHours(): LazyComponent {\n  return (\n    await import('profiles/common/edit/components/EditOpeningHours.rails')\n  ).default;\n}\n\nexport async function InquiryRecipientPersonaSelect(): LazyComponent {\n  return (\n    await import(\n      'profiles/common/edit/components/InquiryRecipientPersonaSelect.rails'\n    )\n  ).default;\n}\n","// @flow\n\nimport { exposeComponents, exposeLazyComponents } from 'boot/common/reactMount';\nimport * as components from './components';\nimport * as lazyComponents from './components.lazy';\n\nexposeComponents(components);\nexposeLazyComponents(lazyComponents);\n","// @flow\n\ntype ModuleWithDefaultExport = { +default: () => void, ... };\n\nconst actionEntryPoints: {\n  [actionName: string]: void | (() => Promise<ModuleWithDefaultExport>),\n  ...\n} = {\n  frontPageIndex: () => import('./actionSpecificSetup/frontPageIndex'),\n  landingPagesShow: () => import('./actionSpecificSetup/landingPagesShow'),\n  listsShow: () => import('./actionSpecificSetup/listsShow'),\n  reviewsEdit: () => import('./actionSpecificSetup/reviewsEdit'),\n  reviewsNew: () => import('./actionSpecificSetup/reviewsNew'),\n  'profiles/reviewsNew': () => import('./actionSpecificSetup/reviewsNew'),\n  'profiles/venueProfilesShow': () =>\n    import('./actionSpecificSetup/profiles/venueProfilesShow'),\n\n  'profiles/admin/cateringProfilesEdit': () =>\n    import('./actionSpecificSetup/profiles/admin/cateringProfilesEdit'),\n  'catering/admin/menusIndex': () =>\n    import('./actionSpecificSetup/catering/admin/menusIndex'),\n\n  'admin/archives': () => import('./actionSpecificSetup/admin/archives'),\n  'admin/inquiryRecipientsShow': () =>\n    import('./actionSpecificSetup/admin/inquiryRecipientsShow'),\n  'profiles/admin/venueProfilesEdit': () =>\n    import('./actionSpecificSetup/profiles/admin/venueProfilesEdit'),\n  'profiles/admin/venueProfilesIndex': () =>\n    import('./actionSpecificSetup/profiles/admin/venueProfilesIndex'),\n\n  'profiles/supplierProfilesEdit': () =>\n    import('./actionSpecificSetup/profiles/supplierProfilesEdit'),\n\n  'staff/imagesIndex': () => import('./actionSpecificSetup/staff/imagesIndex'),\n  'staff/prospectsIndex': () =>\n    import('./actionSpecificSetup/staff/prospectsIndex'),\n  'staff/invoicesNew': () => import('./actionSpecificSetup/staff/invoicesNew'),\n  'staff/organizationsEdit': () =>\n    import('./actionSpecificSetup/staff/organizationsEdit'),\n  'staff/landingPagesEdit': () =>\n    import('./actionSpecificSetup/staff/landingPagesEdit.js'),\n  'staff/siteManagement/locationGeoShapesNew': () =>\n    import(\n      './actionSpecificSetup/staff/siteManagement/locationGeoShapesEdit.js'\n    ),\n  'staff/siteManagement/locationGeoShapesEdit': () =>\n    import(\n      './actionSpecificSetup/staff/siteManagement/locationGeoShapesEdit.js'\n    ),\n  'users/registrationsEdit': () =>\n    import('./actionSpecificSetup/users/registrationsEdit')\n};\n\nexport default actionEntryPoints;\n","import 'boot/webpackPublicPath';\nimport 'boot/vendor';\nimport 'vendorized-fonts/font-awesome-v6-kit-f11102cc8a/font-awesome-v6-fonts.global.scss';\nimport 'boot/common/setMomentLocale';\nimport 'boot/common/exportReact';\n\nimport './globalSetup';\n\nimport './exposeComponents';\n\nimport { mountAllComponents } from 'boot/common/reactMount';\n$(document).ready(mountAllComponents);\n\nimport './hookActionSpecificSetup';\n\nimport i18nSetup from 'boot/common/i18nSetup';\ni18nSetup();\n","/**\n * Imports that used to come via Rails assets pipeline.\n *\n * We must use `require` to get the jQuery global registered before\n * loading scripts that rely on the global `jQuery` to be present\n */\nrequire('vendorJS/modernizr');\n\nconst jQuery = require('vendorJS/jquery');\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\nrequire('vendorJS/jquery_ujs');\nrequire('jquery.cookie');\nrequire('vendorJS/purl');\nrequire('vendorJS/waypoints');\nrequire('vendorJS/waypoints-sticky');\nrequire('vendorJS/cocoon');\n\nrequire('foundation-sites/js/foundation/foundation');\nrequire('foundation-sites/js/foundation/foundation.alert');\nrequire('foundation-sites/js/foundation/foundation.equalizer');\n// require('foundation-sites/js/foundation/foundation.clearing');\n// require('foundation-sites/js/foundation/foundation.cookie');\n// require('foundation-sites/js/foundation/foundation.dropdown');\n// require('foundation-sites/js/foundation/foundation.joyride');\nrequire('foundation-sites/js/foundation/foundation.magellan');\n// require('foundation-sites/js/foundation/foundation.orbit');\nrequire('foundation-sites/js/foundation/foundation.reveal');\nrequire('foundation-sites/js/foundation/foundation.tooltip');\nrequire('foundation-sites/js/foundation/foundation.topbar');\nrequire('foundation-sites/js/foundation/foundation.tab');\n// require('foundation-sites/js/foundation/foundation.interchange');\n// require('foundation-sites/js/foundation/foundation.placeholder');\nrequire('vendorJS/foundation.abide');\nrequire('vendorJS/foundation.topbar');\n","// https://webpack.js.org/configuration/output/#output-publicpath\n//\n// > In cases where the publicPath of output files can't be known at compile time, it can be\n// > left blank and set dynamically at runtime in the entry file using the free variable\n// > __webpack_public_path__\n\nimport { retrieve } from 'putki';\n\n// On server side, we set the public path as a global variable\n// instead of going through Putki as the value needs to be known\n// before Putki has been populated.\nif (typeof SERVER_RENDERER_PUBLIC_PATH === 'string') {\n  // eslint-disable-next-line no-undef, camelcase\n  __webpack_public_path__ = SERVER_RENDERER_PUBLIC_PATH;\n} else {\n  // On client side, though, we know the public path via Putki.\n\n  // eslint-disable-next-line no-undef, camelcase\n  __webpack_public_path__ = retrieve('webpack_public_path');\n}\n","// @flow\n\nimport * as React from 'react';\nimport classnames from 'classnames';\n\nimport styles from './Button.module.scss';\n\nexport type Props = {\n  children: React.Node,\n  className?: string,\n  type?: 'default' | 'success' | 'primary' | 'danger' | 'link' | 'text',\n  disabled?: boolean,\n  submit?: boolean,\n  onClick?: Event => mixed,\n  ...\n};\n\nexport default function Button(props: Props): React.Node {\n  const {\n    children,\n    onClick,\n    className,\n    type = 'default',\n    disabled = false,\n    submit,\n    ...otherProps\n  } = props;\n  const buttonClassName = classnames(className, styles[type]);\n\n  const handleClick = (e: Event) => {\n    if (onClick) {\n      e.preventDefault();\n      onClick(e);\n    }\n  };\n\n  return (\n    <button\n      {...otherProps}\n      type={submit ? 'submit' : 'button'}\n      onClick={handleClick}\n      className={buttonClassName}\n      tabIndex={props.disabled ? '-1' : '0'}\n      disabled={disabled}\n    >\n      {children}\n    </button>\n  );\n}\n","// @flow\n\n// This component is to be passed down as prop to\n// the HoneybadgerErrorBoundary component\n\nimport * as React from 'react';\nimport Button from 'common/components/Button';\nimport styles from './ErrorComponent.module.scss';\n\nexport default function ErrorComponent(): React.Node {\n  return (\n    <div>\n      <p className={styles.errorMessage}>{__('error.something_went_wrong')}</p>\n      <Button\n        onClick={() => {\n          window.location.reload();\n        }}\n        type=\"primary\"\n      >\n        {__('error.reload')}\n      </Button>\n    </div>\n  );\n}\n","// @flow\n\nimport type { JSONObject } from 'common/types';\n\nexport default function match<\n  Branches: { [string | boolean]: (JSONObject) => any, ... },\n  BranchValues: $Values<$ObjMap<Branches, <V>((any) => V) => V>>\n>(sentinelProperty: string, branches: Branches): JSONObject => BranchValues {\n  return (jsonObject: JSONObject): BranchValues => {\n    const type = jsonObject[sentinelProperty];\n    if (typeof type !== 'string' && typeof type !== 'boolean') {\n      throw new Error(\n        `Expected type of property \"${sentinelProperty}\" to be a string or boolean with value being one of [${Object.keys(\n          branches\n        ).join(\n          ', '\n        )}]. Received \"${sentinelProperty}\" typeof was: ${typeof type}.`\n      );\n    }\n    if (typeof branches[type] === 'undefined') {\n      throw new Error(\n        `Expected value of property \"${sentinelProperty}\" to be one of [${Object.keys(\n          branches\n        ).join(', ')}]. Received \"${sentinelProperty}\": ${String(type)}.`\n      );\n    }\n    return branches[type](jsonObject);\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONArray } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function array<V>(extract: JSONArray => V): JSONValue => V {\n  return json => {\n    if (!Array.isArray(json)) {\n      return failure(\n        `Expecting an array, got ${\n          json === null ? 'null' : typeof json\n        } instead`,\n        () => extract([])\n      );\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONArray } from 'common/types';\n\nexport default function items<V>(\n  extract: JSONValue => V\n): JSONArray => Array<V> {\n  return array => array.map(extract);\n}\n","// @flow\n\nimport type { JSONValue, JSONObject } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function object<V>(extract: JSONObject => V): JSONValue => V {\n  return json => {\n    if (!json) {\n      return failure('Expecting an object, got a falsy value instead', () =>\n        extract({})\n      );\n    }\n    if (typeof json !== 'object') {\n      return failure(`Expecting an object, got ${typeof json} instead`, () =>\n        extract({})\n      );\n    }\n    if (Array.isArray(json)) {\n      return failure('Expecting an object, got an array instead', () =>\n        extract({})\n      );\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONObject } from 'common/types';\n\nexport type ExtractValues<Shape: { ... }> = $ObjMap<\n  Shape,\n  <V>(extractor: (JSONValue) => V) => V\n>;\n\nexport default function record<Shape: { ... }>(\n  shape: Shape\n): JSONObject => ExtractValues<Shape> {\n  return (json: JSONObject) => {\n    return Object.keys(shape).reduce<{ [empty]: any }>((result, key) => {\n      result[key] = shape[key](json[key]);\n      return result;\n    }, {});\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONObject } from 'common/types';\n\ntype Map<K, V> = { [key: K]: V, ... };\ntype AnyObject = { +[key: string]: any, ... };\n\nexport default function map<K, V>(\n  extractKey: JSONValue => K,\n  extractValue: JSONValue => V\n): JSONObject => Map<K, V> {\n  return json =>\n    Object.keys((json: AnyObject)).reduce((m: Map<K, V>, key): Map<K, V> => {\n      m[extractKey(key)] = extractValue(json[key]);\n      return m;\n    }, {});\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\n\nexport default function nullable<V>(\n  extract: JSONValue => V\n): JSONValue => V | null {\n  return json => {\n    if (json === null || typeof json === 'undefined') {\n      return null;\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\n\nexport default function withDefault<V>(\n  extract: JSONValue => V,\n  defaultValue: V\n): JSONValue => V {\n  return json => {\n    if (json === null || typeof json === 'undefined') {\n      return defaultValue;\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function oneOf<Enum: JSONValue>(\n  values: Array<Enum> | $ReadOnlyArray<Enum>\n): JSONValue => Enum {\n  return (json: JSONValue) => {\n    const index = values.indexOf(json);\n    if (index !== -1) {\n      return values[index];\n    }\n    return failure(\n      `Expecting one of [${values.join(', ')}], got ${String(json)}`,\n      () => values[0]\n    );\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function <V>(value: V): JSONValue => V {\n  return (json: JSONValue) => {\n    if (json === value) {\n      return value;\n    }\n    return failure(\n      `Expecting specific value of type ${typeof value}, got another value of type ${typeof json}`,\n      () => value\n    );\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nconst decimal: JSONValue => number = (json: JSONValue) => {\n  if (typeof json === 'number') {\n    return json;\n  } else if (typeof json === 'string') {\n    return Number(json);\n  }\n  return failure(\n    `Expecting decimal (number or string), got ${\n      json === null ? 'null' : typeof json\n    }`,\n    () => Number(json)\n  );\n};\n\nexport default decimal;\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nconst id: JSONValue => string = (json: JSONValue) => {\n  if (typeof json === 'string') {\n    return json;\n  } else if (typeof json === 'number') {\n    return String(json);\n  }\n  return failure(\n    `Expecting id (number or string), got ${\n      json === null ? 'null' : typeof json\n    }`,\n    () => String(json)\n  );\n};\n\nexport default id;\n","// @flow\n\nimport Honeybadger from '@honeybadger-io/js';\nimport type { JSONValue } from 'common/types';\n\nconst failureStack: Array<string> = [];\nlet usingFailureStack = false;\n// Wrap root-level extraction with this higher order function to get neat error\n// handling behavior\nexport function withFailureHandler<V>(extract: JSONValue => V): JSONValue => V {\n  return json => {\n    // Allow `failure` extractor to customize its logic based on whether the\n    // extraction has been wrapped with this function or not.\n    usingFailureStack = true;\n    try {\n      const returnValue = extract(json);\n      // Now `failureStack` should be populated if any errors happened when extracting.\n      //\n      // Do not handle this on the server side, though, as we get better error\n      // messages on browser side and debugging is also easier in the browser.\n      // Failures will be handled again when React mounts, and debugging extractor\n      // failures on browser-side is waaay easier than debugging an error\n      // raised when rendering a component on the server side.\n      if (failureStack.length > 0 && typeof document !== 'undefined') {\n        // Make a deep clone of the failure stack to ensure that the\n        // failureStack doesn't get modified from under us\n        const snapshotStack = JSON.parse(JSON.stringify(failureStack));\n\n        const error = new Error('Extraction error');\n\n        if (__DEV__) {\n          // Without the setTimeout, the console log can fail for some unknown reason\n          /* eslint-disable no-alert, no-console */\n          setTimeout(() => {\n            console.group('Extraction error');\n            console.error(snapshotStack.join('\\n* '), {\n              json\n            });\n            console.trace();\n            console.groupEnd();\n          }, 0);\n\n          alert('Extraction error! Check console for more information');\n          /* eslint-enable no-alert, no-console */\n        } else {\n          Honeybadger.notify(error, {\n            message: failureStack.join(', '),\n            context: { json }\n          });\n        }\n      }\n      return returnValue;\n    } catch (e) {\n      // Any errors that get here are result of real runtime errors, and we should\n      // not handle them.\n      throw e;\n    } finally {\n      // Reset the state regardless if there was an error or not\n      usingFailureStack = false;\n      failureStack.length = 0;\n    }\n  };\n}\n\nexport function failure<V>(errorMessage: string, fallback: () => V): V {\n  if (!usingFailureStack) {\n    // This situation means that the extraction pipeline for this particular case\n    // has not been wrapped with the failure handler function.\n    //\n    // In that case, handle the failures as before.\n    const error = new Error(errorMessage);\n    if (__DEV__) {\n      throw error;\n    } else {\n      Honeybadger.notify(error);\n      return fallback();\n    }\n  }\n  // This extraction pipeline has been wrapped with a failure handling pipeline.\n  // The failure handler will handle all errors received during extraction.\n  failureStack.push(errorMessage);\n  return fallback();\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport const boolean: JSONValue => boolean = (json: JSONValue) => {\n  if (typeof json === 'boolean') {\n    return json;\n  }\n  return failure(\n    `Expecting boolean, got ${json === null ? 'null' : typeof json}`,\n    () => Boolean(json)\n  );\n};\n\nexport const string: JSONValue => string = (json: JSONValue) => {\n  if (typeof json === 'string') {\n    return json;\n  }\n  return failure(\n    `Expecting string, got ${json === null ? 'null' : typeof json}`,\n    () => String(json)\n  );\n};\n\nexport const number: JSONValue => number = (json: JSONValue) => {\n  if (typeof json === 'number') {\n    return json;\n  }\n  return failure(\n    `Expecting number, got ${json === null ? 'null' : typeof json}`,\n    () => Number(json)\n  );\n};\n\nexport const mixed: JSONValue => mixed = (json: JSONValue) => {\n  return json;\n};\n","// @flow\n\nimport moment from 'moment';\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport opaque type DateString<DateFormat: string>: string = string;\n\nexport function dateString<DateFormat: string>(\n  format: DateFormat\n): JSONValue => DateString<DateFormat> {\n  return (json: JSONValue) => {\n    if (typeof json === 'string') {\n      if (moment.utc(json, format, true).isValid()) {\n        return json;\n      }\n      return failure(\n        `Expecting dateString (string with format ${format}), got a string \"${json}\"`,\n        () => String(json)\n      );\n    }\n    return failure(\n      `Expecting dateString (string with format ${format}), got ${\n        json === null ? 'null' : typeof json\n      }`,\n      () => String(json)\n    );\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { type Locale, locales } from 'common/types/locale';\nimport { oneOf } from 'common/json/extract';\n\nexport const locale: JSONValue => Locale = oneOf(locales);\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { type Money, money } from 'common/types/money';\nimport { object, record, decimal, locale } from 'common/json/extract';\n\nconst extractValues = object(\n  record({\n    currency: locale,\n    amount: decimal\n  })\n);\n\nexport default function moneyExtract(json: JSONValue): Money {\n  const extractedMoney = extractValues(json);\n  return money(extractedMoney.currency, extractedMoney.amount);\n}\n","// @flow\n\nimport {\n  type Locale,\n  locales as webpackLocales\n} from 'railsRoot/config/webpack/availableLocales';\nexport type { Locale } from 'railsRoot/config/webpack/availableLocales';\nexport const locales: $ReadOnlyArray<Locale> = webpackLocales;\n\nexport opaque type Localizable<LocalizableValue> = {|\n  locale: Locale,\n  value: LocalizableValue\n|};\n\nexport opaque type Localized<LocalizedValue>: LocalizedValue = LocalizedValue;\n\nexport function localizable<Value>(\n  locale: Locale,\n  value: Value\n): Localizable<Value> {\n  return {\n    locale,\n    value\n  };\n}\n\nexport function localize<Input, Output>(\n  { locale, value }: Localizable<Input>,\n  f: (Locale, Input) => Output\n): Localized<Output> {\n  return f(locale, value);\n}\n","// @flow\nimport { formatPrice } from 'utils/currencyUtils';\n\nimport {\n  type Locale,\n  type Localizable,\n  type Localized,\n  localizable,\n  localize\n} from './locale';\n\nexport opaque type RawMoney: number = number;\n\nexport function rawMoney(n: number): RawMoney {\n  return n;\n}\n\nexport type Money = Localizable<RawMoney>;\n\nexport function money(currency: Locale, n: number): Money {\n  return localizable(currency, n);\n}\n\nexport opaque type FormattedMoney: string = Localized<string>;\n\nexport type FormatMoneyOptions = {|\n  alwaysShowDecimals?: boolean\n|};\nconst defaultFormatMoneyOptions: FormatMoneyOptions = Object.freeze({});\n\nexport function formatMoney(\n  fm: Money,\n  options?: FormatMoneyOptions = defaultFormatMoneyOptions\n): FormattedMoney {\n  return localize(fm, (locale, number) => {\n    // If the price is a round number, leave the decimals out\n    if (!options.alwaysShowDecimals && Number.isInteger(number)) {\n      return formatPrice(number, { precision: 0, locale: locale });\n    }\n    // Otherwise render with locale specific precision\n    return formatPrice(number, { locale: locale });\n  });\n}\n\nexport function isEqual(a: Money, b: Money): boolean {\n  return JSON.stringify(a) === JSON.stringify(b);\n}\n","// @flow\n\nimport type {\n  Site,\n  PartnerSupport,\n  SalesPerson,\n  Bounds,\n  EInvoiceOperator\n} from './types';\nimport type { JSONObject, JSONValue } from 'common/types';\nimport {\n  object,\n  record,\n  string,\n  number,\n  locale,\n  nullable,\n  array,\n  items\n} from 'common/json/extract';\n\ntype SitesJSON = { [key: string]: JSONObject, ... };\nconst sitesJSON: SitesJSON = require('railsRoot/config/sites.json');\n\nexport default function allSites(): Array<Site> {\n  return Object.keys(sitesJSON).map(key => {\n    return siteFromJSON(key, sitesJSON[key]);\n  });\n}\n\nconst extractPartnerSupport: JSONValue => PartnerSupport = object(\n  record({\n    mail: string,\n    phone: nullable(string)\n  })\n);\n\nconst extractSalesPerson: JSONValue => SalesPerson = object(\n  record({\n    team_mail: string,\n    first_name: string,\n    image: string,\n    mail: string,\n    name: string,\n    phone: nullable(string)\n  })\n);\n\nconst requiredBounds: JSONValue => Bounds = object(\n  record({\n    south: number,\n    west: number,\n    north: number,\n    east: number\n  })\n);\n\nconst eInvoiceOperator: JSONValue => EInvoiceOperator = object(\n  record({\n    name: string,\n    id: string\n  })\n);\n\nconst extractEInvoiceoperators: JSONValue => Array<EInvoiceOperator> = array(\n  items(eInvoiceOperator)\n);\n\nfunction siteFromJSON(key: string, json: JSONObject): Site {\n  return {\n    key: key,\n    locale: locale(json.locale),\n    baseDomain: requiredString(json.base_domain),\n    countryInPath: optionalString(json.country_in_path),\n    defaultOgImage: optionalString(json.default_og_image),\n    defaultSearchBounds: requiredBounds(json.default_search_bounds),\n    defaultMapCenter: requiredLocation(json.default_map_center),\n    iso31661Alpha2: optionalString(json.iso_3166_1_alpha_2),\n    iso31661Alpha3: optionalString(json.iso_3166_1_alpha_3),\n    profileTimeZone: requiredString(json.profile_time_zone),\n    partnerSupport: extractPartnerSupport(json.partner_support),\n    salesPerson: extractSalesPerson(json.sales_person),\n    eInvoiceOperators: extractEInvoiceoperators(json.e_invoice_operators)\n  };\n}\n\nfunction requiredString(maybeString: JSONValue): string {\n  if (typeof maybeString !== 'string') {\n    throw new Error(\n      `Expected string, got ${typeof maybeString}: ${String(maybeString)}`\n    );\n  }\n  return maybeString;\n}\n\nfunction optionalString(maybeString: JSONValue): string | null {\n  if (typeof maybeString !== 'string') {\n    return null;\n  }\n  return maybeString;\n}\n\nfunction requiredLocation(maybeLocation: JSONValue): [number, number] {\n  // $FlowFixMe[incompatible-return]\n  return maybeLocation;\n}\n","// @flow\n\nimport type { Site } from './types';\nimport allSites from './allSites';\nimport { retrieve } from 'putki';\n\nexport default function currentSite(): Site {\n  const sites = allSites();\n  const key = retrieve('current_site');\n\n  const site = sites.find(s => s.key === key);\n  return site || sites[0];\n}\n","// @flow\n\nimport { retrieve } from 'putki';\nimport $ from 'jquery';\n\nimport { type JSONObject } from 'common/types';\nimport currentSite from 'site/currentSite';\nimport { trackLink } from './analyticsModules/analyticsLinkTracking';\n\nfunction getSocialMedia(input: string) {\n  switch (false) {\n    case input.indexOf('facebook.com') === -1:\n      return 'Facebook';\n    case input.indexOf('t.co') === -1:\n      return 'Twitter';\n    case input.indexOf('twitter.com') === -1:\n      return 'Twitter';\n    default:\n      return null;\n  }\n}\n\n// Copied from Mixpanel JS source code\n// https://github.com/mixpanel/mixpanel-js/blob/8ac526e5cb8563d11e2206046ab986c6491ac6d7/src/utils.js#L1571-L1593\nfunction inferOperatingSystem() {\n  const a = navigator.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\nfunction defaultProperties() {\n  const site = currentSite();\n  const controller = String(retrieve('controller'));\n  const action = String(retrieve('action'));\n  return {\n    Path: document.location.pathname,\n    'Social Media': getSocialMedia(window.document.referrer),\n    Locale: __LOCALE__,\n    'Site Key': site.key,\n    // Use specifically `category` to set \"Event Category\" in Google Analytics.\n    category: site.key,\n    // Use specifically `label` to set \"Event Label\" in Google Analytics.\n    label: __LOCALE__,\n    'Is Language Version Active': site.locale !== __LOCALE__,\n    'Action ID': `${controller}#${action}`,\n    $os: inferOperatingSystem()\n  };\n}\n\nfunction defaultContext() {\n  return {\n    locale: __LOCALE__\n  };\n}\n\nconst propertiesFromTrackedLink = (link: HTMLElement) => {\n  const $link = $(link);\n  const linkData = $link.data('venuu-t') || {};\n  return {\n    ...defaultProperties(),\n    ...linkData,\n    'Link Text': $link.text().trim(),\n    URL: $link.attr('href')\n  };\n};\n\nconst allHaveData = ($elements: any, dataKey: string) => {\n  return $elements\n    .map(function (this: HTMLElement) {\n      return $(this).data(dataKey);\n    })\n    .get()\n    .every(data => !!data);\n};\n\nexport function venueAnalyticsProps(): JSONObject {\n  const dataFromBackend = retrieve('analytics');\n  if (\n    dataFromBackend !== null &&\n    typeof dataFromBackend === 'object' &&\n    !Array.isArray(dataFromBackend)\n  ) {\n    return dataFromBackend;\n  }\n  return {};\n}\n\n/**\n * Tracks clicks on the given element/s.\n *\n * @throws TypeError if all elements do not have a proper data-venuu-t attribute\n * @throws TypeError if all elements do not have a proper data-venuu-t-name attribute\n */\nexport function trackClicksOn(elements: HTMLElement | Array<HTMLElement>) {\n  const $elements = $(elements);\n\n  if ($elements.length === 0) {\n    return;\n  }\n\n  if (!allHaveData($elements, 'venuu-t')) {\n    throw new TypeError(\n      'trackClicksOn requires all elements to have a \"venuu-t\" data attribute'\n    );\n  }\n\n  if (!allHaveData($elements, 'venuu-t-name')) {\n    throw new TypeError(\n      'trackClicksOn requires all elements to have a \"venuu-t-name\" data attribute'\n    );\n  }\n\n  trackLink(\n    (event, props) =>\n      new Promise((resolve, reject) => {\n        (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n          jitsu.track(event, props).then(resolve).catch(reject);\n        });\n      }),\n    elements,\n    link => $(link).data('venuu-t-name'),\n    propertiesFromTrackedLink\n  );\n}\n\n/**\n * Removes the click tracking from the given element.\n *\n * @param {HTMLElement} element - The element which has its clicks tracked\n */\nexport function untrackClicksOn(_element: HTMLElement) {\n  // TODO: Support untracking clicks for an element\n}\n\n/**\n * Remember update the server-side matchers (lib/tracking/actor_inference.rb)\n * if you make changes here.\n */\nexport function isBot(userAgent: string): boolean {\n  const BOT_MATCHERS = [\n    /google web preview/i,\n    /baiduspider/i,\n    /yahoo! slurp/i,\n    /rsiteauditor/i,\n    // This matches most currently known bots and likely future bots as well.\n    /bot/i\n  ];\n  return BOT_MATCHERS.some(matcher => {\n    return matcher.test(userAgent);\n  });\n}\n\n/**\n * Tracks a single event.\n *\n * This function also adds some default properties to the event for convenience.\n *\n * @param {String} eventName - The name of the event\n * @param {Object} properties - Extra properties associated with the event\n */\nexport function trackEvent(eventName: string, properties: Object = {}) {\n  if (isBot(navigator.userAgent)) return;\n\n  (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n    jitsu.track(\n      eventName,\n      {\n        ...defaultProperties(),\n        ...properties\n      },\n      defaultContext()\n    );\n  });\n}\n","// @flow\n\n// Originally copied from segmentio/analytics-next library (MIT licensed)\n// https://github.com/segmentio/analytics-next/blob/b7d8563e461fb5aac6a2e517a537e89bd0f9fa45/packages/core/src/callback/index.ts#L4C1-L17C2\nfunction pTimeout<T>(promise: Promise<T>, timeout: number): Promise<T> {\n  return new Promise((resolve, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(Error('Promise timed out'));\n    }, timeout);\n\n    promise\n      .then(val => {\n        clearTimeout(timeoutId);\n        return resolve(val);\n      })\n      .catch(reject);\n  });\n}\n\n// Originally copied from segmentio/analytics-next library (MIT licensed)\n// https://github.com/segmentio/analytics-next/blob/b7d8563e461fb5aac6a2e517a537e89bd0f9fa45/packages/browser/src/core/auto-track.ts#L5-L96\ntype JQueryShim = {\n  toArray(): Array<HTMLElement>,\n  ...\n};\n\ntype EventProperties = Record<string, any>;\n\nexport function trackLink(\n  track: (event: string, props: { ... }) => Promise<any>,\n  links: HTMLElement | Array<HTMLElement> | JQueryShim | null,\n  event: string | (HTMLElement => string),\n  properties: EventProperties | (HTMLElement => EventProperties)\n) {\n  let elements: Array<HTMLElement> = [];\n  if (!links) return;\n\n  // always arrays, handles jquery\n  if (links instanceof HTMLElement) {\n    elements = [links];\n  } else if (links instanceof Array) {\n    elements = links;\n  } else if ('toArray' in links) {\n    elements = links.toArray();\n  }\n\n  elements.forEach((el: HTMLElement) => {\n    el.addEventListener(\n      'click',\n      (elementEvent: Event) => {\n        const ev = typeof event === 'function' ? event(el) : event;\n        const props =\n          typeof properties === 'function' ? properties(el) : properties;\n        const href =\n          el.getAttribute('href') ||\n          el.getAttributeNS('http://www.w3.org/1999/xlink', 'href') ||\n          el.getAttribute('xlink:href') ||\n          // flowlint-next-line unnecessary-optional-chain:off\n          el.getElementsByTagName('a')[0]?.getAttribute('href');\n\n        const trackEvent = pTimeout(\n          track(ev, props),\n          // this.settings.timeout ?? 500\n          500\n        );\n\n        if (\n          !linkNewTab(\n            // $FlowIgnore[incompatible-cast] -- Cast is copied over from the original source code\n            (el: HTMLAnchorElement),\n            href\n          ) &&\n          !userNewTab(elementEvent)\n        ) {\n          if (href) {\n            elementEvent.preventDefault();\n            trackEvent\n              // eslint-disable-next-line no-console\n              .catch(console.error)\n              .then(() => {\n                window.location.href = href;\n              })\n              // eslint-disable-next-line no-console\n              .catch(console.error);\n          }\n        }\n      },\n      false\n    );\n  });\n}\n\n// Check if a user is opening the link in a new tab\nfunction userNewTab(event: Event): boolean {\n  const typedEvent: Event | KeyboardEvent | MouseEvent = event;\n  if (\n    typedEvent.ctrlKey ||\n    typedEvent.shiftKey ||\n    typedEvent.metaKey ||\n    // flowlint-next-line sketchy-number-and:off\n    (typedEvent.button && typedEvent.button === 1)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// Check if the link opens in new tab\nfunction linkNewTab(\n  element: HTMLAnchorElement,\n  href: string | null | void\n): boolean {\n  if (element.target === '_blank' && href) {\n    return true;\n  }\n  return false;\n}\n","// @flow\n\nimport accounting from 'accounting';\n\nexport function formatPrice(\n  number: string | number,\n  options: Object = {}\n): string {\n  const translatedOptions = {\n    precision: I18n.t('number.currency.format.precision', options),\n    thousand: I18n.t('number.currency.format.delimiter', options),\n    decimal: I18n.t('number.currency.format.separator', options),\n    format: I18n.t('number.currency.format.accounting.format', options),\n    symbol: I18n.t('number.currency.format.unit', options),\n    ...options\n  };\n  return accounting.formatMoney(number, translatedOptions);\n}\n","import Modernizr from 'modernizr';\n\nconst mediaTypesToMediaQueries = {\n  // Same as Foundation ones, plus middle added by Venuu\n  small: 'only screen',\n  middle: 'only screen and (min-width: 1024px)',\n  medium: 'only screen and (min-width: 40.063em)',\n  large: 'only screen and (min-width: 64.063em)',\n  xlarge: 'only screen and (min-width: 90.063em)',\n  xxlarge: 'only screen and (min-width: 120.063em)',\n  smallDevice: 'only screen and (min-device-width: 768px)',\n  topbar: 'only screen and (min-width: 48em)'\n};\n\nexport default function satisfiesMediaQuery(mediaType) {\n  if (typeof mediaType !== 'string') {\n    throw new TypeError('Media type was not a string');\n  }\n  const mediaQuery = mediaTypesToMediaQueries[mediaType];\n  if (!mediaQuery) {\n    throw new TypeError(`Unknown media type \"${mediaType}\"`);\n  }\n  return Modernizr.mq(mediaQuery);\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\n\nexport function retrieve(identifier: string): JSONValue {\n  const value = base()[identifier];\n\n  if (typeof value === 'undefined') {\n    return null;\n  }\n  return value;\n}\n\nfunction base() {\n  return (window && window.Putki) || {};\n}\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v3.0.0\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\tmodule.exports = (function() {\n\n\t  'use strict';\n\n\t  /*\n\t    ---------------\n\t    variables\n\t    ---------------\n\t  */\n\n\t  // array of actively pressed keys\n\t  var activeKeys = [];\n\n\t  // cache document.body\n\t  var body;\n\n\t  // boolean: true if touch buffer timer is running\n\t  var buffer = false;\n\n\t  // the last used input type\n\t  var currentInput = null;\n\n\t  // form input types\n\t  var formInputs = [\n\t    'button',\n\t    'input',\n\t    'select',\n\t    'textarea'\n\t  ];\n\n\t  // detect version of mouse wheel event to use\n\t  // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t  var mouseWheel = detectWheel();\n\n\t  // list of modifier keys commonly used with the mouse and\n\t  // can be safely ignored to prevent false keyboard detection\n\t  var ignoreMap = [\n\t    16, // shift\n\t    17, // control\n\t    18, // alt\n\t    91, // Windows key / left Apple cmd\n\t    93  // Windows menu / right Apple cmd\n\t  ];\n\n\t  // mapping of events to input types\n\t  var inputMap = {\n\t    'keydown': 'keyboard',\n\t    'keyup': 'keyboard',\n\t    'mousedown': 'mouse',\n\t    'mousemove': 'mouse',\n\t    'MSPointerDown': 'pointer',\n\t    'MSPointerMove': 'pointer',\n\t    'pointerdown': 'pointer',\n\t    'pointermove': 'pointer',\n\t    'touchstart': 'touch'\n\t  };\n\n\t  // add correct mouse wheel event mapping to `inputMap`\n\t  inputMap[detectWheel()] = 'mouse';\n\n\t  // array of all used input types\n\t  var inputTypes = [];\n\n\t  // mapping of key codes to a common name\n\t  var keyMap = {\n\t    9: 'tab',\n\t    13: 'enter',\n\t    16: 'shift',\n\t    27: 'esc',\n\t    32: 'space',\n\t    37: 'left',\n\t    38: 'up',\n\t    39: 'right',\n\t    40: 'down'\n\t  };\n\n\t  // map of IE 10 pointer events\n\t  var pointerMap = {\n\t    2: 'touch',\n\t    3: 'touch', // treat pen like touch\n\t    4: 'mouse'\n\t  };\n\n\t  // touch buffer timer\n\t  var timer;\n\n\n\t  /*\n\t    ---------------\n\t    functions\n\t    ---------------\n\t  */\n\n\t  // allows events that are also triggered to be filtered out for `touchstart`\n\t  function eventBuffer(event) {\n\t    clearTimer();\n\t    setInput(event);\n\n\t    buffer = true;\n\t    timer = window.setTimeout(function() {\n\t      buffer = false;\n\t    }, 650);\n\t  }\n\n\t  function bufferedEvent(event) {\n\t    if (!buffer) setInput(event);\n\t  }\n\n\t  function clearTimer() {\n\t    window.clearTimeout(timer);\n\t  }\n\n\t  function setInput(event) {\n\t    var eventKey = key(event);\n\t    var value = inputMap[event.type];\n\t    if (value === 'pointer') value = pointerType(event);\n\n\t    // don't do anything if the value matches the input type already set\n\t    if (currentInput !== value) {\n\t      var activeElement = document.activeElement.nodeName.toLowerCase();\n\n\t      if (\n\t        (\n\t          // only if the user flag to allow input switching\n\t          // while interacting with form fields isn't set\n\t          !body.hasAttribute('data-whatinput-formswitching') &&\n\n\t          // support for legacy keyword\n\t          !body.hasAttribute('data-whatinput-formtyping') &&\n\n\t          // only if currentInput has a value\n\t          currentInput &&\n\n\t          formInputs.indexOf(activeElement) > -1\n\t        ) || (\n\t          // ignore modifier keys\n\t          ignoreMap.indexOf(eventKey) > -1\n\t        )\n\t      ) {\n\t        // ignore keyboard typing and do nothing\n\t      } else {\n\t        switchInput(value);\n\t      }\n\t    }\n\n\t    if (value === 'keyboard') logKeys(eventKey);\n\t  }\n\n\t  function switchInput(string) {\n\t    currentInput = string;\n\t    body.setAttribute('data-whatinput', currentInput);\n\n\t    if (inputTypes.indexOf(currentInput) === -1) inputTypes.push(currentInput);\n\t  }\n\n\t  function key(event) {\n\t    return (event.keyCode) ? event.keyCode : event.which;\n\t  }\n\n\t  function target(event) {\n\t    return event.target || event.srcElement;\n\t  }\n\n\t  function pointerType(event) {\n\t    if (typeof event.pointerType === 'number') {\n\t      return pointerMap[event.pointerType];\n\t    } else {\n\t      return (event.pointerType === 'pen') ? 'touch' : event.pointerType; // treat pen like touch\n\t    }\n\t  }\n\n\t  // keyboard logging\n\t  function logKeys(eventKey) {\n\t    if (activeKeys.indexOf(keyMap[eventKey]) === -1 && keyMap[eventKey]) activeKeys.push(keyMap[eventKey]);\n\t  }\n\n\t  function unLogKeys(event) {\n\t    var eventKey = key(event);\n\t    var arrayPos = activeKeys.indexOf(keyMap[eventKey]);\n\n\t    if (arrayPos !== -1) activeKeys.splice(arrayPos, 1);\n\t  }\n\n\t  function bindEvents() {\n\t    body = document.body;\n\n\t    // pointer events (mouse, pen, touch)\n\t    if (window.PointerEvent) {\n\t      body.addEventListener('pointerdown', bufferedEvent);\n\t      body.addEventListener('pointermove', bufferedEvent);\n\t    } else if (window.MSPointerEvent) {\n\t      body.addEventListener('MSPointerDown', bufferedEvent);\n\t      body.addEventListener('MSPointerMove', bufferedEvent);\n\t    } else {\n\n\t      // mouse events\n\t      body.addEventListener('mousedown', bufferedEvent);\n\t      body.addEventListener('mousemove', bufferedEvent);\n\n\t      // touch events\n\t      if ('ontouchstart' in window) {\n\t        body.addEventListener('touchstart', eventBuffer);\n\t      }\n\t    }\n\n\t    // mouse wheel\n\t    body.addEventListener(mouseWheel, bufferedEvent);\n\n\t    // keyboard events\n\t    body.addEventListener('keydown', eventBuffer);\n\t    body.addEventListener('keyup', eventBuffer);\n\t    document.addEventListener('keyup', unLogKeys);\n\t  }\n\n\n\t  /*\n\t    ---------------\n\t    utilities\n\t    ---------------\n\t  */\n\n\t  // detect version of mouse wheel event to use\n\t  // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t  function detectWheel() {\n\t    return mouseWheel = 'onwheel' in document.createElement('div') ?\n\t      'wheel' : // Modern browsers support \"wheel\"\n\n\t      document.onmousewheel !== undefined ?\n\t        'mousewheel' : // Webkit and IE support at least \"mousewheel\"\n\t        'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox\n\t  }\n\n\n\t  /*\n\t    ---------------\n\t    init\n\n\t    don't start script unless browser cuts the mustard,\n\t    also passes if polyfills are used\n\t    ---------------\n\t  */\n\n\t  if (\n\t    'addEventListener' in window &&\n\t    Array.prototype.indexOf\n\t  ) {\n\n\t    // if the dom is already ready already (script was placed at bottom of <body>)\n\t    if (document.body) {\n\t      bindEvents();\n\n\t    // otherwise wait for the dom to load (script was placed in the <head>)\n\t    } else {\n\t      document.addEventListener('DOMContentLoaded', bindEvents);\n\t    }\n\t  }\n\n\n\t  /*\n\t    ---------------\n\t    api\n\t    ---------------\n\t  */\n\n\t  return {\n\n\t    // returns string: the current input type\n\t    ask: function() { return currentInput; },\n\n\t    // returns array: currently pressed keys\n\t    keys: function() { return activeKeys; },\n\n\t    // returns array: all the detected input types\n\t    types: function() { return inputTypes; },\n\n\t    // accepts string: manually set the input type\n\t    set: switchInput\n\t  };\n\n\t}());\n\n\n/***/ }\n/******/ ])\n});\n;","module.exports = Modernizr;","module.exports = jQuery;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"names":["module","exports","factory","__createBinding","__setModuleDefault","__exportStar","__importStar","__importDefault","events_1","extendStatics","__extends","__assign","__awaiter","__generator","onunhandledrejection_1","breadcrumbs_1","timers_1","event_listeners_1","merge","filter","objectIsExtensible","globalThisOrWindow","getProjectRoot","Honeybadger","NOTIFIER","userAgent","singleton","currentTimeout","commonjsGlobal","globalThis","window","g","self","getAugmentedNamespace","n","f","default","a","apply","arguments","prototype","Object","defineProperty","value","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","browser$1","src","events","util$1","UNKNOWN_FUNCTION","chromeRe","chromeEvalRe","winjsRe","geckoRe","geckoEvalRe","javaScriptCoreRe","nodeRe","require$$0$1","freeze","__proto__","parse","stackString","lines","split","reduce","stack","line","parts","parseResult","parseChrome","exec","isNative","indexOf","isEval","submatch","file","methodName","lineNumber","column","parseGecko","push","create","o","m","k2","undefined","desc","__esModule","writable","configurable","v","mod","result","hasOwnProperty","call","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","adopt","then","body","y","t","_","label","sent","trys","ops","verb","Symbol","iterator","op","pop","length","logDeprecatedMethod","isBrowserConfig","clone","formatCGIData","filterUrl","generateStackTrace","endpoint","instrumentConsole","instrument","isErrorObject","makeNotice","logger","sanitize","shallowClone","runAfterNotifyHandlers","runBeforeNotifyHandlers","getSourceForBacktrace","getCauses","calculateBacktraceShift","DEFAULT_BACKTRACE_SHIFT","makeBacktrace","objectIsEmpty","mergeNotice","stackTraceParser","obj1","obj2","filterHbSourceCode","console","backtrace","map","method","number","splice","err","debug","isFrameFromHbSourceCode","frame","hasHbFile","hasHbMethod","toLowerCase","shift","i","nextFrame","obj","thing","Error","toString","object","name","replacement","original","__hb_original","_e","notice1","notice2","context","isExtensible","notice","cause","causes","class","message","getSourceFileHandler","index","trace","fileContent","_a","getSourceCodeSnippet","fileData","columnNumber","sourceRadius","getThresholdExceededSnippet","unshift","targetLine","start","end","handlers","results","len","handlerResult","handler","error","afterNotify","maxDepth","seenObjects","safeSerialize","depth","typeOfObj","test","seen","Array","isArray","ret","concat","client","log","args","_i","config","info","warn","String","_consoleAlreadyInstrumented","listeners","filterMatch","key","filters","is","type","klass","slice","_window","level","listener","Function","base","path","trim","replace","curr","callee","RegExp","$1","caller","join","newObj","url","query","pair","vars","prefix","formattedVars","toUpperCase","JSON","stringify","async","_deprecatedMethodCalls","oldMethod","newMethod","callCountThreshold","msg","util_1$4","shouldReloadOnConfigure","load","sendEventsToInsights","eventsEnabled","data","severity","event","store","GlobalStore","contents","breadcrumbsLimit","available","getContents","setContext","util_1$3","addBreadcrumb","breadcrumb","breadcrumbs","clear","run","callback","throttled_events_logger","require$$0","NdJson","item","defaults","CONFIG","apiKey","appEndpoint","environment","hostname","projectRoot","component","action","revision","reportData","breadcrumbsEnabled","maxBreadcrumbs","maxObjectDepth","developmentEnvironments","tags","enableUncaught","enableUnhandledRejection","afterUncaught","__plugins","__assign$2","assign","s","p","__awaiter$2","__generator$2","ThrottledEventsLogger","transport","queue","isProcessing","defaults_1$1","originalLogger","configure","opts","payload","processQueue","flushAsync","send","_this","setTimeout","catch","eventsData","json_nd_1","makeHttpRequest","headers","util_1$2","_b","_c","_d","__assign$1","__awaiter$1","__generator$1","Client","TAG_SEPARATOR","NOT_BLANK","__pluginsLoaded","__store","__beforeNotifyHandlers","__afterNotifyHandlers","__notifier","version","defaults_1","__initStore","__transport","__eventsLogger","throttled_events_logger_1","util_1$1","getVersion","getNotifier","setNotifier","notifier","loadPlugins","pluginsToLoad","plugin","store_1","beforeNotify","resetContext","notify","noticeable","extra","sourceCodeData","preConditionsResult","__runPreconditions","__send","_err","notifyAsync","partialNotice","originalAfterNotify","noticeTags","__constructTags","contextTags","configTags","uniqueTags","metadata","category","timestamp","Date","toISOString","logEvent","event_type","ts","__getBreadcrumbs","__getContext","__developmentMode","includes","__buildPayload","cgiData","enabled","trail","__breadcrumbs","fingerprint","request","cgi_data","params","session","server","project_root","environment_name","time","toUTCString","details","tag","preConditionError","beforeNotifyResult","some","allSettled","status","originalBacktrace","__getSourceFileHandler","sourcePerTrace","source","res","statusCode","uuid","id","noticeUrl","types","Plugins","Defaults","Util","Types","client_1","util","preferCatch","encodeCookie","decodeCookie","localURLPathname","parseURL","nativeFetch","stringTextOfElement","stringSelectorOfElement","stringNameOfElement","globalThisOrWindow$7","core_1$7","element","tagName","stringClassNames","getAttribute","className","attrName","attr","siblings","getSiblings","nodes","parentNode","childNodes","siblings_1","node","func","match","protocol","host","pathname","parentName","string","text","textContent","innerText","substr","global","fetch","document","sandbox","createElement","style","display","head","appendChild","contentWindow","removeChild","parsed","parsedDocURL","URL","cookies","atob","ErrorEvent","colno","onerror","onError","ignoreNextOnError","instrument$4","core_1$6","globalThisOrWindow$6","ignoreOnError","clearTimeout","col","onunhandledrejection","instrument$3","core_1$5","globalThisOrWindow$5","promiseRejectionEvent","reason","stackFallback","sanitize$1","core_1$4","instrument$2","globalThisOrWindow$4","addEventListener","selector","util_1","target","location","XMLHttpRequest","rawUrl","__hb_xhr","xhr","onreadystatechangeHandler","readyState","status_code","onreadystatechange","input","Request","response","lastHref","href","_event","recordUrlChange","history","historyWrapper","from","to","timers","instrument$1","core_1$3","globalThisOrWindow$3","instrumentTimer","wrapOpts","delay","args_1","__wrap","event_listeners","core_1$2","globalThisOrWindow$2","targets","prop","useCapture","wantsUntrusted","handleEvent","BrowserTransport","core_1$1","globalThisOrWindow$1","defaultHeaders","options","headerArray","requestInit","entries","feedbackForm","BrowserFeedbackForm","core_1","scriptUrl","appendUserFeedbackTag","script","setAttribute","onLoad","onload","isUserFeedbackUrlAlreadyVisible","feedbackScriptUrl","scripts","show","lastNoticeId","userFeedbackEndpoint","noticeId","b","setPrototypeOf","__","getUserFeedbackScriptUrl","majorMinorVersion","_super","maxErrors","transport_1","__errorsSent","__lastWrapErr","__lastNoticeId","__exceedsMaxErrors","__incrementErrorsCount","_error","resetMaxErrors","checkIn","_id","showUserFeedbackForm","form","feedback_form_1","getUserFeedbackSubmitUrl","cookiesObject","HTTP_USER_AGENT","HTTP_REFERER","HTTP_COOKIE","navigator","referrer","___hb","onerror_1","core_2","x","DefaultErrorComponent","HoneybadgerErrorBoundary","Component","props","state","errorOccurred","getDerivedStateFromError","componentDidMount","honeybadger","_notice","showUserFeedbackFormOnError","componentDidCatch","errorInfo","setState","getErrorComponent","ErrorComponent","render","children","defaultProps","lib","settings","currency","symbol","format","decimal","thousand","precision","grouping","nativeMap","nativeIsArray","isString","charCodeAt","isObject","defs","j","checkPrecision","val","isNaN","Math","round","abs","checkCurrencyFormat","pos","neg","zero","unformat","regex","unformatted","parseFloat","toFixed","power","pow","formatNumber","usePrecision","negative","parseInt","formatMoney","formats","useFormat","formatColumn","list","padAfterSymbol","maxLength","formatted","fVal","accounting","root","I18n","padding","isFunction","isSet","lazyEvaluate","scope","dest","DATE","day_names","abbr_day_names","month_names","abbr_month_names","meridian","NUMBER_FORMAT","separator","delimiter","strip_insignificant_zeros","CURRENCY_FORMAT","unit","sign_first","PERCENTAGE_FORMAT","SIZE_UNITS","DEFAULT_OPTIONS","defaultLocale","locale","defaultSeparator","placeholder","fallbacks","translations","missingBehaviour","missingTranslationPrefix","reset","initializeOptions","locales","localeParts","firstFallback","secondFallback","nullableFallbackLocale","pluralization","count","currentLocale","lookup","scopes","fullScope","getFullScope","defaultValue","pluralizationLookupWithoutFallback","pluralizerKey","pluralizerKeys","pluralizer","pluralizationLookup","date","am","pm","prepareOptions","subject","createTranslationOptions","translationOptions","translate","translation","usedScope","optionsWithoutDefault","translationOption","interpolate","pluralize","missingTranslation","matches","nullPlaceholder","missingPlaceholder","p1","p2","toNumber","exp","formattedNumber","NaN","buffer","max","toCurrency","localize","toPercentage","localizedValue","toTime","parseDate","convertedDate","fraction","UTC","setTime","$2","$3","$6","$4","$5","strftime","meridianOptions","getTime","weekDay","getDay","day","getDate","year","getFullYear","month","getMonth","hour","getHours","hour12","secs","getSeconds","mins","getMinutes","offset","getTimezoneOffset","absOffsetHours","floor","absOffsetMinutes","timezoneoffset","dateString","date_string","toHumanSize","size","iterations","extend","bind","l","$","pluses","encode","raw","encodeURIComponent","read","converter","parseCookieValue","decodeURIComponent","json","cookie","expires","days","domain","secure","removeCookie","moment","monthsShortDot","monthsShort","monthsParse","monthsRegex","defineLocale","months","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","hours","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","yy","dayOfMonthOrdinalParse","ordinal","week","dow","doy","invalidDate","hooks","hookCallback","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","arr","fn","arrLen","valueOf","createUTC","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","token","getSetMillisecond","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","targetLength","forceSign","absNumber","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","formatMoment","expandFormat","makeFormatFunction","array","mom","output","replaceLongDateFormatTokens","lastIndex","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isLeapYear","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","isStrict","regexEscape","tokens","addParseToken","tokenLen","addWeekParseToken","_w","modMonth","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","ms","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdaysShort","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","meridiemParse","localeFamilies","normalizeLocale","loadLocale","_abbr","getSetGlobalLocale","values","getLocale","abbr","_config","parentLocale","chooseLocale","names","commonPrefix","arr1","arr2","minl","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","configFromRFC2822","weekdayStr","parsedInput","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayProvided","calculateOffset","obsOffset","militaryOffset","numOffset","hm","setUTCMinutes","getUTCMinutes","c","configFromArray","weekYear","temp","weekdayOverflow","curWeek","nowValue","currentDate","expectedWeekday","yearToUse","now","_useUTC","getUTCMonth","getUTCDate","GG","W","E","createLocal","_week","gg","_dayOfYear","_nextDay","ISO_8601","RFC_2822","isPm","skipped","stringLength","totalParsedInputLength","matched","p3","p4","meridiemHour","erasConvertYear","prepareConfig","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromInput","configFromString","createFromInputFallback","dayOrDate","minute","second","millisecond","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","milliseconds","isDurationValid","unitHasDecimal","orderLen","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","matcher","chunk","cloneWithOffset","model","diff","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","adjust","wholeMonthDiff","anchor","anchor2","newLocaleData","defaultFormat","defaultFormatUtc","lang","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","proto","preParsePostFormat","arrayTest","dataTypeTest","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","MS_PER_HOUR","MS_PER_MINUTE","MS_PER_SECOND","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","getPrioritizedUnits","unitsObj","u","priority","prioritizedLen","toArray","toObject","toDate","keepOffset","inspect","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","compareArrays","array1","array2","lengthDiff","diffs","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","Infinity","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","shouldUseNative","test1","test2","fromCharCode","order2","test3","letter","symbols","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","MessageChannel","q","unstable_now","unstable_forceFrameRate","performance","z","A","cancelAnimationFrame","requestAnimationFrame","B","C","D","F","G","H","I","port2","port1","onmessage","postMessage","J","K","r","sortIndex","N","O","Q","R","S","T","U","V","startTime","expirationTime","X","priorityLevel","Y","Z","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","timeout","unstable_shouldYield","unstable_wrapCallback","React","i18nSetup","__LOCALE__","I18N_RUNTIME_TRANSLATIONS","originalMissingTranslation","fallbackLocales","i18nFallbacks","__usedFallbackLocales","nextFallbackLocaleIndex","exposeComponents","mountableComponents","Venuu","REACT_COMPONENTS","exposeLazyComponents","REACT_LAZY_COMPONENTS","mountComponentFromNode","componentName","componentId","REACT_PROPS","normalComponent","loadLazyComponent","ReactDOM","mountAllComponents","reactNodes","querySelectorAll","moduleNameWithAction","moduleNameWithoutAction","ExperimentalFeature","RumPerformanceEntryType","existingGlobalVariable","onMonitorErrorCollected","navigationStart","isURLSupported","fetchObservable","initCookieParsed","getCurrentSiteCache","browserCache","ongoingOperations","createIdentifierImplementationCache","modifiableFieldPathsByEvent","xhrObservable","resourceTimingBufferFullListener","supportsLabelPropertyResult","supportsElementClosestResult","supportScopeSelectorCache","observer","viewportObservable","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","statsPerView","getCookies","all","substring","cookieCategories","consentGivenForCategory","getConsentedCookieCategories","rawValue","re","cookieValue","unescape","cookiePairs","cookieArr","oneOf","byteToHex","TypeError","Uint8Array","ROTL","v5","v35","hashfunc","generateUUID","namespace","buf","_namespace","stringToBytes","str","bytes","unsafeStringify","DNS","Uint32Array","FIRST_16_BYTES","extractRemarketingDetails","nullable","record","page","loadAnalytics","jitsuDomain","retrieve","jitsuBrowserWriteKey","jitsuScriptTag","anonymousId","userId","search","jitsuOnLoadCallback","jitsu","serverSideAnonymousId","setAnonymousId","firstScriptTag","getElementsByTagName","insertBefore","extractUserTrackingData","withDefault","email","customer_type","ready","controller","socialMediaInitCondition","js","fjs","fbAsyncInit","FB","init","xfbml","getElementById","$sidebar","$footer","first","waypoint","stuckClass","css","width","$wrapper","outerWidth","top","outerHeight","position","removeAttr","addClass","resize","satisfiesMediaQuery","waypoints","removeClass","on","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","errorMsg","__spreadArray","pack","ar","debugMode","setDebugMode","newDebugMode","monitor","callMonitored","displayIfDebugEnabled","candidate","arrayLike","Set","find","predicate","objectValues","objectEntries","startsWith","toAssign","getGlobalObject","globalObject","_dd_temp_","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","TextEncoder","Blob","getZoneJsOriginalValue","browserWindow","Zone","__symbol__","timeoutId","throttle","wait","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","cancel","noop","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","objectToJson","objectHasValue","isEmptyObject","createCustomerDataTracker","checkCustomerDataLimit","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","getBytesCount","stop","getType","mergeInto","destination","circularReferenceChecker","createCircularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","has","ignoreCase","multiline","sticky","unicode","merged_1","merged","deepClone","combine","sources","sources_1","maxCharacterCount","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","warnOverCharacterLimit","containerToProcess","separatorLength","targetData","parentPath","sourceToSanitize","tryToApplyToJSON","description","sanitizedSource","sanitizeObjects","Event","isTrusted","currentPath","changeType","Observable","onFirstSubscribe","observers","subscribe","onLastUnsubscribe","unsubscribe","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","createContextManager","customerDataTracker","changeObservable","contextManager","getContext","newContext","clearContext","setContextProperty","removeContextProperty","TrackingConsent","GRANTED","NOT_GRANTED","configuration","eventTarget","eventName","addEventListeners","eventNames","once","capture","passive","listenerWithMonitor","__ddIsTrusted","allowUntrustedEvents","listenerTarget","EventTarget","remove","storageListeners","storeContextManager","productKey","customerDataType","storageKey","getFromStorage","rawContext","localStorage","getItem","setItem","createIdentityEncoder","outputBytesCount","isAsync","isEmpty","write","additionalEncodedBytesCount","finish","finishSync","rawBytesCount","pendingData","estimateEncodedBytesCount","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","parseChromeLine","CHROME_LINE_RE","CHROME_EVAL_RE","parseChromeAnonymousLine","CHROME_ANONYMOUS_FUNCTION_RE","parseWinLine","WINJS_LINE_RE","parseGeckoLine","GECKO_LINE_RE","GECKO_EVAL_RE","fileUrl","filePosition","ERROR_TYPES_RE","createHandlingStack","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","isErrorInstance","nonErrorPrefix","originalError","handlingStack","startClocks","handling","isError","hasUsableStack","flattenErrorCauses","tryToGetFingerprint","dd_fingerprint","parentSource","currentError","enabledExperimentalFeatures","isExperimentalFeatureEnabled","featureName","INTAKE_SITE_STAGING","INTAKE_SITE_US1","INTAKE_URL_PARAMETERS","performDraw","random","num","decimals","ONE_YEAR","relativeToClocks","relative","correctedOrigin","timeStamp","dateNow","getNavigationStart","addDuration","toServerDuration","timeStampNow","relativeNow","clocksNow","clocksOrigin","timing","sendToExtension","__ddBrowserSdkExtensionCallback","getConnectivity","onLine","interfaces","connection","effective_type","effectiveType","removeItem","drain","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","addTelemetryDebug","addTelemetryError","formatError","kind","allowedFrameUrl","addTelemetryUsage","usage","sanitizeUser","newUser","user","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","safeTruncate","lastChar","correctedLength","isLastCharSurrogatePair","startDurationVital","vitalsByName","vitalsByReference","vital","reference","__dd_vital_reference","stopDurationVital","stopCallback","nameOrRef","vitalStart","stopOptions","stopClocks","delete","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","getPrivacyLevel","getAllowedWebViewHosts","eventType","viewId","view","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","allowedHost","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","onPostCall","instrumentSetter","after","originalDescriptor","instrumentationWrapper","normalizeUrl","buildUrl","supportedURL","getSupportedUrl","originalURL","doc","anchorElement","baseElement","implementation","createHTMLDocument","initFetchObservable","methodFromParams","responsePromise","startContext","reportFetch","partialContext","responseType","isAborted","signal","aborted","DOMException","code","ABORT_ERR","setCookie","expireDelay","sameSite","crossSite","partitioned","getCookie","getInitCookie","findCommaSeparatedValues","Map","willSyntheticsInjectRum","Boolean","_DATADOG_SYNTHETICS_INJECTS_RUM","detectBrowserCached","chrome","vendor","documentMode","SESSION_STORE_KEY","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_ENTRY_REGEXP","getExpiredSessionState","previousSessionState","expiredSessionState","isExpired","ANONYMOUS_USER_TRACKING","isSessionInExpiredState","sessionState","created","Number","expire","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","entry","selectCookieStrategy","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","getCurrentSite","testCookieName","domainLevels","candidateDomain","areCookiesAuthorized","testCookieValue","isCookieCorrectlySet","retrieveSessionCookie","selectLocalStorageStrategy","testKey","retrievedId","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","currentLock","isLockEnabled","persistSession","expireSession","persistWithLock","lock","retrieveStore","retrieveSession","currentStore","retryLater","processedSession","process","sessionStore","currentNumberOfRetries","nextOperations","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","proxy","normalizedProxyUrl_1","buildEndpointHost","site","internalAnalyticsSubdomain","usePciIntake","domainParts","extension","build","api","clientToken","retry","encoding","lastFailureStatus","reverse","urlPrefix","buildTag","valueSizeLimit","TAG_SIZE_LIMIT","sanitizedValue","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","ALL","SAMPLED","isSampleRate","sampleRate","isMatchOption","itemType","matchList","useStartsWith","getCrypto","crypto","msCrypto","createIdentifier","bits","CONSISTENT_TRACE_SAMPLING","areBigIntIdentifiersSupported","getRandomValues","BigUint64Array","createIdentifierUsingBigInt","createIdentifierUsingUint32Array","BigInt","radix","high","low","toPaddedHexadecimalString","traceId","clearTracingIfNeeded","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","inject","findTrackedSession","tracingOption","allowedTracingUrls","propagatorTypes","tracingHeaders","isTraceSampled","identifier","knuthFactor","twoPow64","traceSampleRate","traceContextInjection","propagatorType","traceparent","b3","DEFAULT_PROPAGATOR_TYPES","displayRemoteConfigurationFetchingError","PageExitReason","HIDDEN","UNLOADING","PAGEHIDE","FROZEN","getMutationObserverConstructor","constructor","MutationObserver","originalInstance","createEventRateLimiter","onLimitReached","eventCount","allowNextEvent","isLimitReached","current","fields","isValidObject","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","service","AbstractLifeCycle","callbacks","eventCallbacks","END_OF_TIMES","createValueHistory","maxEntries","clearOldValuesInterval","oldTimeThreshold","endTime","close","returnInactive","entries_1","closeActive","latestEntry","findAll","xhrContexts","openXhr","abortXhr","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","areInOrder","numbers","hasValidResourceEntryDuration","hasValidResourceEntryTimings","areCommonTimingsInOrder","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","requestStart","responseStart","responseEnd","areRedirectionTimingsInOrder","hasRedirection","redirectEnd","redirectStart","formatTiming","origin","computeResourceEntryProtocol","nextHopProtocol","computeResourceEntryDeliveryType","deliveryType","isAllowedRequestUrl","every","param","DATA_URL_REGEX","isLongDataUrl","sanitizeDataUrl","nextRequestIndex","getNextRequestIndex","discardNegativeDuration","trackEventCounts","lifeCycle","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","_dd","discarded","createPerformanceObservable","PerformanceObserver","stopFirstInputTiming","handlePerformanceEntries","rumPerformanceEntries","entryType","RESOURCE","isObserverInitializing","getEntries","observe","NAVIGATION","LONG_TASK","PAINT","buffered","getEntriesByType","entryTypes","clearResourceTimings","FIRST_INPUT","retrieveFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","processingEnd","sendTiming","disconnect","supportPerformanceTimingEvent","supportedEntryTypes","doWaitPageActivityEnd","pageActivityObservable","pageActivityEndCallback","maxDuration","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","hadActivity","maxDurationTimeoutId","pageActivitySubscription","isBusy","lastChangeTime","createPageActivityObservable","domMutationObservable","windowOpenObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","requestIndex","requestUrl","excludedActivityUrls","cssEscape","CSS","escape","ch","asCodePoint","elementMatches","msMatchesSelector","getParentElement","parentElement","nodeType","Node","ELEMENT_NODE","initialValues","isTextNode","TEXT_NODE","isElementNode","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","child","firstChild","nextSibling","getParentNode","NodePrivacyLevel","IGNORE","PRIVACY_ATTR_NAME","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","defaultPrivacyLevel","cache","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","inputElement","autocomplete","endsWith","getPrivacySelector","shouldIgnoreElement","nodeName","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","hasAttribute","shouldMaskNode","privacyLevel","isFormElement","getTextContent","textNode","ignoreWhiteSpace","parentTagName","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElementProgrammatically","targetElement","programmaticAttribute","HTMLElement","elementWithAttribute","closest","truncate","normalizeWhitespace","priorityStrategies","userProgrammaticAttribute","privacy","HTMLInputElement","labels","getActionNameFromTextualContent","ownerDocument","htmlFor","nameSource","privacyEnabledActionName","getActionNameFromStandardAttribute","labelledByAttribute","refElement","getTextualContent","fallbackStrategies","getActionNameFromElementForStrategies","strategies","recursionCounter","strategies_1","actionName","strategy","name_1","trimmedName","attribute","isContentEditable","text_1","removeTextFromElements","element_1","textToReplace","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","classList","getClassList","classes","getSelectorFromElement","actionNameAttribute","isConnected","documentElement","contains","targetElementSelector","currentElement","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","uniqueSelectorAmongChildren","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","sibling","firstElementChild","elementIndex","nextElementSibling","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","currentElementSelector","isSiblingMatching","scopedSelector_1","supportScopeSelector","querySelector","parent","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","isDead","click","hasPageActivity","getUserActivity","scroll","interactionSelectorCache","updateInteractionSelector","relativeTimestamp","elapsed","ACTION_CONTEXT_TIME_OUT_DELAY","processAction","pageStateHistory","autoActionProperties","isAutoAction","loading_time","frustrationTypes","counts","long_task","resource","name_source","ACTION_NAME_MASKING","customerContext","actionEvent","in_foreground","wasInPageStateAt","domainContext","rawRumEvent","consoleObservablesByApi","buildRawReportError","partial","buildStack","sourceFile","requestIdleCallback","cancelIdleCallback","id_1","didTimeout","timeRemaining","MAX_TASK_TIME","alreadyMatchedEntries","runOnReadyState","expectedReadyState","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","createDocumentTraceData","rawTraceTime","traceTime","getTraceCommentFromNode","COMMENT_NODE","getNavigationEntry","navigationEntry","timings","computeTimingsFromDeprecatedPerformanceTiming","timingElement","decodedBodySize","encodedBodySize","transferSize","workerStart","retrieveInitialDocumentResourceTiming","getDocumentTraceId","traceIdMeta","traceTimeMeta","getDocumentTraceDataFromMeta","content","getDocumentTraceDataFromComment","comment","findTraceComment","processResourceEntry","tracingInfo","computeResourceEntryTracingInfo","trace_id","span_id","createSpanIdentifier","rule_psr","rulePsr","trackResources","computeResourceEntryType","isValidUrl","RESOURCE_TYPES_1","isType","entryMetrics","computeResourceEntryMetrics","resourceEvent","responseStatus","delivery_type","performanceEntry","renderBlockingStatus","render_blocking_status","computeResourceEntrySize","encoded_body_size","decoded_body_size","transfer_size","computeResourceEntryDetails","secureConnectionStart","download","first_byte","worker","connect","ssl","dns","redirect","FCP_MAXIMUM_DELAY","LCP_MAXIMUM_DELAY","trackFirstHidden","stopListeners","visibilityState","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","getInteractionCount","interactionCount","MAX_INP_VALUE","getScrollX","visual","visualViewport","pageLeft","offsetLeft","scrollX","pageXOffset","getScrollY","pageTop","offsetTop","scrollY","pageYOffset","initViewportObservable","getViewportDimension","scale","height","innerWidth","innerHeight","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","getPathFromHash","hash","stopCallbacks","isTypeTracked","rumSessionType","createBatch","encoder","flushController","messageBytesLimit","upsertBuffer","flushSubscription","flushObservable","flush","upsertMessages","isPageExit","sendOnExit","encoderResult","formatPayloadFromEncoder","pendingMessages","bytesCount","addOrUpdate","removedMessage","messageBytesCount","serializedMessage","estimatedMessageBytesCount","hasMessageFor","notifyAfterRemoveMessage","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","upsert","MAX_QUEUE_BYTES_COUNT","sendWithRetryStrategy","sendStrategy","reportError","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","ongoingRequestCount","isFull","queueFullReported","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","bytesLimit","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","isKeepAliveSupported","keepalive","mode","sendXHR","sendBeaconStrategy","sendBeacon","beaconUrl","hasReportedBeaconError","open","setRequestHeader","getHistoryInstrumentationTarget","History","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","createMeasure","sum","updateMeasure","measure","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","getPageState","hasFocus","watchCookieFallback","cookieName","previousCookieValue","watchCookieIntervalId","CI_VISIBILITY_TEST_ID_COOKIE_NAME","getOrCreateReplayStats","replayStats","records_count","segments_count","segments_total_raw_size","deleteOldestStats","toDelete","isFirst_1","_value","serializedNodeIds","hasSerializedNode","getSerializedNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","TAG_NAME_REGEX","getValidTagName","processedTagName","censoredImageForSize","serializeStyleSheets","cssStyleSheets","cssStyleSheet","cssRules","rules","cssRule","cssText","disabled","media","serializeAttribute","attributeValue","image","naturalWidth","naturalHeight","getBoundingClientRect","getCssRulesString","cssHref","isSafari","getCssRuleStringForSafari","getCssRuleString","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","makeUrlAbsolute","baseUrl","rule","selectorText","styleSheet","serializeNodeWithId","serializedNode","serializeNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","DOCUMENT_TYPE_NODE","documentType","publicId","systemId","serializeElementNode","el","isSVG","isSVGElement","SVGElement","attributes","rr_width","rr_height","serializeAttributes","scrollTop","scrollLeft","safeAttrs","formValue","optionElement","selected","stylesheet","styleSheets","_cssText","sheet","checked","rr_mediaState","mediaElement","paused","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","CDATA_SECTION_NODE","_nextId","serializedNodeWithId","childNode","serializedChildNode","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","convertMouseEventToLayoutCoordinates","clientX","clientY","normalized","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","getVisualViewport","assembleIncrementalSnapshot","tryToComputeCoordinates","eventTypeToMouseInteraction","trackScroll","scrollCb","scrollPositions","updatePosition","cancelThrottle","removeListener","getPathToNestedCSSRule","currentRule","parentRule","index_1","rules_1","parentStyleSheet","trackInput","inputCb","stopPropertySetterInstrumentation","lastInputStateMap","stopEventListeners","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","stopper","inputState","isChecked","cbWithDedup","lastInputState","trackMutation","mutationCallback","mutationBatch","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","throttledFlush","addMutations","mutations","nodePrivacyLevelCache","filteredMutations","adds","removes","hasBeenSerialized","texts","takeRecords","mutation","removedNodes","removedNode","traverseRemovedShadowDom","shadowDomRemovedCallback","removeShadowRoot","processChildListMutations","addedAndMovedNodes","_loop_1","addedNodes","mutations_1","sortedAddedAndMovedNodes","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","nextId","getNextSibling","parentId","removedNodeMutations","nodeAndAncestorsHaveSerializedNode","processCharacterDataMutations","textMutations","handledNodes","filteredMutations_1","oldValue","processAttributesMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","uncensoredValue","transformedValue","inputValue","emittedMutation","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initShadowRootsController","controllerByShadowRoot","mutationTracker","inputTracker","scrollTracker","createDeflateEncoder","streamId","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","additionalBytesCount","trailer","nextPendingAction","writeCallback","byteLength","finishCallback","consumeResult","concatBuffers","buffers","buffers_1","sendResetIfNeeded","pendingWriteAction","createDeflateWorker","Worker","workerUrl","createObjectURL","startDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","doStartDeflateWorker","removeErrorListener_1","removeMessageListener_1","initializationFailureCallbacks","baseMessage","worker_version","stream_id","isBrowserSupported","CSSSupportsRule","NodeList","datadogRum","makeRumPublicApi","startRumImpl","recorderApi","currentConsent","publicApi","customerDataTrackerManager","createCustomerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","initialBytesCount","bytesCountLimit","tracker","createDetachedTracker","getOrCreateTracker","setCompressionStatus","newCompressionStatus","getCompressionStatus","globalContextManager","userContextManager","trackingConsentState","tryToInit","trackingConsent","update","isGranted","customVitalsState","getCommonContext","hasReplay","isRecording","createPreStartStrategy","doStartRum","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","ignoreInitIfSyntheticsWillInjectRum","bufferApiCalls","trackingConsentStateSubscription","tryStartRum","trackViewsManually","initialViewOptions","startRumResult","doInit","baseSerializedConfiguration","usedTracingPropagators","eventBridgeAvailable","applicationId","sessionSampleRate","session_sample_rate","telemetry_sample_rate","telemetrySampleRate","telemetry_configuration_sample_rate","telemetryConfigurationSampleRate","telemetry_usage_sample_rate","telemetryUsageSampleRate","use_before_send","beforeSend","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","session_persistence","sessionPersistence","allow_fallback_to_local_storage","allowFallbackToLocalStorage","store_contexts_across_pages","storeContextsAcrossPages","allow_untrusted_events","tracking_consent","session_replay_sample_rate","sessionReplaySampleRate","start_session_replay_recording_manually","startSessionReplayRecordingManually","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","option","default_privacy_level","enable_privacy_for_action_name","enablePrivacyForActionName","use_excluded_activity_urls","use_worker_url","compress_intake_requests","compressIntakeRequests","track_views_manually","track_user_interactions","trackUserInteractions","track_resources","track_long_task","trackLongTasks","plugins","getConfigurationTelemetry","validateAndBuildRumConfiguration","validateAndBuildTracingOptions","tracingOptions","expectedItem","baseConfiguration","validateAndBuildConfiguration","env","datacenter","endpointBuilders","sessionStoreStrategyType","selectSessionStoreStrategyType","batchBytesLimit","eventRateLimiterThreshold","maxTelemetryEventsPerPage","flushTimeout","batchMessagesLimit","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","replica","computeReplicaConfiguration","replicaConfiguration","replicaEndpointBuilders","subdomain","customerDataTelemetrySampleRate","addDurationVital","enableExperimentalFeatures","enabledFeatures","flag","callPluginsMethod","parameter","plugins_1","remoteConfigurationId","REMOTE_CONFIGURATION","fetchAndApplyRemoteConfiguration","remoteInitConfiguration","responseText","getInternalContext","stopSession","addTiming","startView","setViewName","setViewContext","setViewContextProperty","addAction","commonContext","addError","providedError","addFeatureFlagEvaluation","preStartStrategy","onRumStart","viewHistory","sanitizedOptions","feature","rumPublicApi","onReady","setTrackingConsent","setGlobalContext","getGlobalContext","setGlobalContextProperty","removeGlobalContextProperty","clearGlobalContext","getInitConfiguration","setUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","getSessionReplayLink","startSessionReplayRecording","force","stopSessionReplayRecording","createEncoder","errorObservable","consoleObservables","reportTypes","featureFlagContexts","tracer","handleRuntimeError","apis","cleanupTasks","telemetry","startRumTelemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","is_local_file","is_worker","rawEvent","stringifiedEvent","event_1","format_version","runtime_env","connectivity","sdk_setup","experimental_features","setContextProvider","provider","bridge_1","application","findView","actionContexts","findActionId","endClocks","findFeatureFlagEvaluations","currentContext","pageExitObservable","stopBeforeUnloadListener","pageExitSubscription","sessionReplay","expireObservable","setForcedReplay","startSessionManager","computeSessionState","expandSession","expandSessionWhenVisible","visibilityCheckInterval","renewObservable","startSessionStore","sessionCache","sessionStateUpdateObservable","initCookieStrategy","cookieStore","oldSessionId","oldRumType","oldLogsType","cookieStoreStrategy","watchSessionTimeoutId","synchronizeSession","startSession","synchronizedSession","expandOrRenewSessionState","trackingType","isTracked","isSessionStarted","hasSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","previousState","newState","expandOrRenewSession","getSession","restartSession","updateSessionState","partialSessionState","sessionContextHistory","buildSessionContext","isReplayForced","forcedReplay","findSession","rawTrackingType","sessionEntity","serverRumEvent","telemetryEventObservable","sessionExpireObservable","batch","batchFlushObservable","batch_1","startBatchWithReplica","primary","batchFactoryImp","primaryBatch","createBatchFromConfig","replicaBatch","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","sessionExpireSubscription","currentBytesCount","currentMessagesCount","flushReason","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","replicated","transformMessage","locationChangeObservable","currentLocation","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","stopHistoryTracking","trackHistory","onLocationChange","stopHashTracking","trackHash","newLocation","oldLocation","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","pageStateEntryHistory","addPageState","persisted","nextPageState","eventStartTime","pageStateEntries","pageStateServerEntries","pageState","relativeStartTime","wasInPageStateDuringPeriod","stopWindowOpen","startRumEventCollection","viewValueHistory","viewport","animationFrameId","unsubscribeViewport","cookieObservable","detectCookieChangeStrategy","testExecutionId","cookieObservableSubscription","eventRateLimiters","syntheticsContext","viewUpdate","currentView","urlContexts","startUrlContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","locationChangeSubscription","changeTime","findUrl","actionCollection","trackClickActions","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","currentClickChain","stopObservable","stopClickChain","stopActionEventsListener","listenActionEvents","pointerDownEvent","clickActionBase","computeClickActionBase","defaultActionName","rect","left","hadActivityOnPointerDown","pageActivityEndEvent","startClickAction","appendClickToClickChain","newClick","activityEndTime","historyEntry","eventCountsSubscription","newActivityEndTime","hasError","addFrustration","frustrationType","isStopped","validate","domEvents","clickAction","discard","stopWaitPageActivityEnd","waitPageActivityEnd","viewEndedSubscription","stopSubscription","localUserActivity_1","tryAppend","rageClick_1","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","tryFinalize","dontAcceptMoreClick","mouseEventDistance","sqrt","clicks","rageClick","computeFrustration","isRage","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","hasSelectionChanged","savedCommonContext","displayContext","DELAY_VIEWPORT_COLLECTION","viewportDimension","ciVisibilityContext","changeEvent","changed","deleted","Cypress","test_execution_id","WRITABLE_RESOURCE_GRAPHQL","getSyntheticsContext","testId","_DATADOG_SYNTHETICS_PUBLIC_ID","resultId","_DATADOG_SYNTHETICS_RESULT_ID","test_id","result_id","injected","viewHistoryEntry","urlContext","actionId","drift","browser_sdk_version","needToAssembleWithAction","synthetics","ci_test","has_replay","sampled_for_replay","anonymous_id","usr","shouldSend","modifiableFieldPaths","fieldPath","fieldType","newValue","newType","stopRumEventCollection","_g","_h","_j","_k","_m","_o","_p","_q","_r","featureFlagContext","pageStates","viewEvent","getReplayStats","document_version","documentVersion","replay_stats","page_states","cumulative_layout_shift","commonViewMetrics","cumulativeLayoutShift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","targetSelector","initialViewMetrics","navigationTimings","firstByte","dom_complete","domComplete","dom_content_loaded","domContentLoaded","dom_interactive","domInteractive","first_contentful_paint","firstContentfulPaint","first_input_delay","firstInput","first_input_time","first_input_target_selector","interaction_to_next_paint","interactionToNextPaint","interaction_to_next_paint_time","interaction_to_next_paint_target_selector","is_active","isActive","largest_contentful_paint","largestContentfulPaint","largest_contentful_paint_target_selector","load_event","loadEvent","loadingTime","loading_type","loadingType","time_spent","feature_flags","max_depth","max_depth_scroll_top","maxDepthScrollTop","max_scroll_height","maxScrollHeight","max_scroll_height_time","maxScrollHeightTime","sessionIsActive","replay_level","customTimings","custom_timings","mapValues","newObject","trackViews","areViewsTrackedAutomatically","activeViews","startNewView","viewOptions","newlyCreatedView","newView","initialLocation","throttleDuration","stopOnReadyState","viewStart","stopLoadingTimeTracking","setLoadEvent","scrollValues","maxScrollDepth","stopScrollMetricsTracking","stopCLSTracking","stopINPTracking","getInteractionToNextPaint","getNavigationEntryImpl","stopNavigationTracking","firstHidden","stopFCPTracking","firstInteractionTimestamp","stopEventListener","biggestLcpSize","performanceLcpSubscription","stopLCPTracking","performanceFirstInputSubscription","stopFIDTracking","viewCreatedEvent","triggerViewUpdate","scheduleViewUpdate","cancelScheduleViewUpdate","trackLoadingTime","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","newLoadingTime","trackScrollMetrics","newScrollMetrics","ResizeObserver","throttledNotify_1","scrollHeight","scrollingElement","scrollDepth","observerTarget","resizeObserver_1","eventListener_1","shouldUpdate","trackCumulativeLayoutShift","LAYOUT_SHIFT","cumulatedValue","maxValue","maxClsTarget","maxClsStartTime","maxClsValue","isMaxValue","performanceSubscription","hadRecentInput","getTargetFromSource","WeakRef","deref","trackInteractionToNextPaint","viewLoadingType","EVENT","PerformanceEventTiming","setViewEnd","previousInteractionCount","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","interactionId","durationThreshold","getViewInteractionCount","stopViewInteractionCount","viewEnd","longestInteractions","trackLongestInteractions","sortAndTrimLongestInteractions","interactionIndex","findIndex","interaction","minLongestInteraction","estimateP98Interaction","handleEntries","newInteraction","firstInputSubscription","eventSubscription","viewEndTime","getCommonViewMetrics","stopCommonViewMetricsTracking","trackNavigationTimings","loadEventEnd","domContentLoadedEventEnd","trackFirstContentfulPaint","fcpEntry","trackLargestContentfulPaint","LARGEST_CONTENTFUL_PAINT","lcpEntry","findLast","lcpTargetSelector","trackFirstInput","firstInputEntry","firstInputDelay","firstInputTargetSelector","stopInitialViewMetricsTracking","stopEventCountsTracking","keepAliveIntervalId","currentEnd","sanitized","looksLikeRelativeTime","updatedName","pageExitEvent","otherLocation","correspondingId","stopViewCollection","stopResourceCollection","startResourceCollection","taskQueue","retrieveInitialDocumentResourceTimingImpl","createTaskQueue","pendingTasks","deadline","executionTimeRemaining","start_1","MAX_EXECUTION_TIME_ON_TIMEOUT","scheduleNextRun","task","handleResource","processRequest","matchingTiming","matchRequestResourceEntry","sameNameEntries","getEntriesByName","candidates","computeRequestTracingInfo","correspondingTimingOverrides","requestInput","performanceResourceSubscription","computeRawEvent","LONG_ANIMATION_FRAME","stopLongAnimationFrameCollection","startLongAnimationFrameCollection","entry_type","blocking_duration","blockingDuration","first_ui_event_timestamp","firstUIEventTimestamp","render_start","renderStart","style_and_layout_start","styleAndLayoutStart","start_time","pause_duration","pauseDuration","forced_style_and_layout_duration","forcedStyleAndLayoutDuration","execution_start","executionStart","source_url","sourceURL","source_function_name","sourceFunctionName","source_char_position","sourceCharPosition","invoker","invoker_type","invokerType","window_attribution","windowAttribution","startErrorCollection","initConsoleObservable","originalConsoleApi","buildConsoleLog","firstErrorParam","consoleLog","instrumentOnError","rawError","messageObj","errorObj","instrumentUnhandledRejection","initReportObservable","blockedURI","effectiveDirective","csp","disposition","originalPolicy","ReportingObserver","handleReports","reports","report","handling_stack","source_type","traceFetch","append","headers_1","Headers","header","traceXhr","trackXhr","initXhrObservable","stopInstrumentingStart","stopInstrumentingSend","sendXhr","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","unsubscribeLoadEndListener","completeContext","stopInstrumentingAbort","clonedResponse","tryToClone","readBytesFromStream","stream","reader","getReader","chunks","readBytesCount","onDone","collectStreamBody","completeBuffer_1","limitExceeded","offset_1","readMore","vitalCollection","startVitalCollection","valueComputedBySdk","computed_value","internalContext","viewContext","application_id","session_id","user_action","makeRecorderApi","startRecordingImpl","shouldStartImmediately","cachedDeflateEncoder","getOrCreateDeflateEncoder","stopRecording","deflateEncoder","isRecordingStarted","errorType","sessionId","rumConfiguration","getSiteDefaultSubdomain","getDeflateWorkerStatus","httpRequest","addRecord","replayRequest","startRecordBridge","segmentCollection","doStartSegmentCollection","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","segment","rawSegmentBytesCount","formData","serializedMetadataAndSegmentSizes","FormData","raw_segment_size","compressed_segment_size","expirationTimeoutId","createSegment","creationReason","encodedBytesCount","creation_reason","has_full_snapshot","index_in_view","scrollPositionsByElement","flushMutations","fullSnapshotCallback","takeFullSnapshot","recordIds","viewportResizeSubscription","frustrationSubscription","viewEndCb","viewEndSubscription","emit","emitAndComputeStats","stopFullSnapshots","startFullSnapshots","records","has_focus","initialOffset","getIdForEvent","trackers","coordinates","timeOffset","moveCb","positions","mouseInteractionCb","viewportResizeCb","mediaInteractionCb","trackStyleSheet","styleSheetCb","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","instrumentGroupingCSSRuleClass","cls","CSSGroupingRule","CSSMediaRule","focusCb","trackVisualViewportResize","visualViewportResizeCb","updateDimension","frustrationCb","viewEndRecord","__ENVIRONMENT__","botRegex","initialized","initializeDatadogRum","eventData","detail","accepted","remarketingDetails","gclidFromUrl","identifyUser","userIdFromUrl","distinctIdFromUrl","emailUserIdFromUrl","emailIdFromUrl","rawEmailDistinctId","generateUserId","userEmail","uuidv5","userIdFromCookie","customerType","commonTraits","currentSite","identify","jitsuQ","traits","Source","pageOpts","hrental_id","hrental_pagetype","hrental_totalvalue","trackClicksOn","gclidCookie","gclidFromCookie","gclid","sidebarMenuHeight","BLANK_RE","foundation","active_class","destination_threshold","throttle_delay","tooltip","touch_close_text","abide","validators","valuePlaceholder","required","originalTopBarToggle","Foundation","libs","topbar","toggle","isTopNavigationExpanded","$topBar","hasClass","toggleClass","InstructionVideoEmbed","div","styles","container","h3","heading","title","frameResizer","iframe","embedUrl","frameBorder","allowFullScreen","ProfileEditRichTextEditor","LandingPageRichTextEditor","AvailabilitySourceForm","PhoneNumberForm","VenueMobileCTAs","Rating","RatingBoxAccordion","AccordionPanel","CommissionRoot","PackageEditorRoot","VenueInquiryConversationRoot","CateringInquiryConversationApp","ReadOnlyVenueInquiryConversationApp","MarkAsRepliedRoot","VenueGroupEditorApp","SendCopy","MessageTemplateEditorApp","MultiSelect","VenuePageInquiryFormNew","MultiVenueInquiryForm","SearchableInquiryIndex","FeaturedEventTypeField","FeaturedVenuesInventory","EditOrganizationTabs","SpamInquiriesTabs","EditVenueServices","EditVenueTypes","ProfileAnnouncementsEditorApp","CateringSearch","VenueProfileGallery","VenueWishlistButton","VenueProfileLocation","VenueProfileVideoSection","VenueProfileVirtualTourSection","VenueProfileStoriesOfPastEvents","VenueProfileCapacityDetails","VenueProfileCTASection","VenueProfileOtherSpacesInSameLocation","VenueProfileReviewList","VenueProfileServicesAndFacilities","VenueProfileSimilarVenues","VenueProfilePricingSection","VenueProfileAvailabilitySection","VenueProfileBasicInformation","VenueProfileTranslatedDescription","CateringBasicInformation","CateringDetailedInformation","CateringHeading","ProfileImageCarousel","CateringInquiry","CateringServicesAndPricing","CateringMenuList","SupplierProfileServicesAndPricing","SupplierProfileHeading","SupplierProfileContactInformation","SupplierProfileVideo","SupplierProfileInquiry","SupplierProfileContactImage","SupplierProfileBasicInformation","SupplierSearch","LegalNotice","PipedriveIntegrationStatus","BillingDetails","TinField","InvoicesOfDayStates","InvoicingFields","OrganizationInvoices","StripeCustomerStatus","OutcomeFeedback","EditOpeningHours","InquiryRecipientPersonaSelect","components","lazyComponents","frontPageIndex","landingPagesShow","listsShow","reviewsEdit","reviewsNew","buildModuleName","camelCaseController","upcaseAction","findScript","crudAliases","actionEntryPoints","actionFunc","initializer","require","jQuery","SERVER_RENDERER_PUBLIC_PATH","__webpack_public_path__","Button","onClick","submit","otherProps","buttonClassName","classnames","button","preventDefault","tabIndex","errorMessage","reload","sentinelProperty","branches","jsonObject","extract","failure","items","shape","extractKey","extractValue","failureStack","usingFailureStack","withFailureHandler","returnValue","fallback","boolean","mixed","extractValues","amount","moneyExtract","extractedMoney","money","webpackLocales","localizable","defaultFormatMoneyOptions","fm","alwaysShowDecimals","isInteger","formatPrice","isEqual","sitesJSON","allSites","baseDomain","requiredString","base_domain","countryInPath","optionalString","country_in_path","defaultOgImage","default_og_image","defaultSearchBounds","requiredBounds","default_search_bounds","defaultMapCenter","default_map_center","iso31661Alpha2","iso_3166_1_alpha_2","iso31661Alpha3","iso_3166_1_alpha_3","profileTimeZone","profile_time_zone","partnerSupport","extractPartnerSupport","partner_support","salesPerson","extractSalesPerson","sales_person","eInvoiceOperators","extractEInvoiceoperators","e_invoice_operators","mail","phone","team_mail","first_name","south","west","north","east","eInvoiceOperator","maybeString","sites","defaultProperties","Path","getSocialMedia","$os","inferOperatingSystem","propertiesFromTrackedLink","$link","link","linkData","allHaveData","$elements","dataKey","venueAnalyticsProps","dataFromBackend","elements","links","promise","ev","getAttributeNS","trackEvent","track","typedEvent","elementEvent","ctrlKey","shiftKey","metaKey","BOT_MATCHERS","translatedOptions","mediaTypesToMediaQueries","small","middle","medium","large","xlarge","xxlarge","smallDevice","mediaType","mediaQuery","Modernizr","Putki","modules","timer","activeKeys","currentInput","formInputs","mouseWheel","detectWheel","ignoreMap","inputMap","inputTypes","keyMap","pointerMap","eventBuffer","setInput","bufferedEvent","eventKey","pointerType","activeElement","switchInput","keyCode","which","unLogKeys","arrayPos","bindEvents","PointerEvent","MSPointerEvent","onmousewheel","ask","installedModules","moduleId","loaded","hasOwn","classNames","appendClass","parseValue","newClass"],"sourceRoot":""}