{"version":3,"file":"static/js/main.24bb82c7.js","mappings":"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","sources":["components/Environment.ts","utils/ApiAssetUtil.ts","utils/AppVersionUtil.ts","utils/AuthUtil.ts","utils/FetchUtil.ts","utils/LazyUtil.ts","utils/LocalStorageUtil.ts","utils/ObjectUtil.ts","../node_modules/@sentry/src/version.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/api.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/helpers.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/src/stack-parsers.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/reactrouter.tsx","../node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/src/baggage.ts","../node_modules/src/browser/types.ts","../node_modules/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/src/browser/web-vitals/lib/initMetric.ts","../node_modules/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/src/browser/web-vitals/lib/observe.ts","../node_modules/src/browser/web-vitals/lib/onHidden.ts","../node_modules/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/src/browser/web-vitals/getLCP.ts","../node_modules/src/browser/metrics/utils.ts","../node_modules/src/browser/metrics/index.ts","../node_modules/src/browser/web-vitals/getCLS.ts","../node_modules/src/browser/web-vitals/getFID.ts","../node_modules/src/browser/request.ts","../node_modules/src/browser/browsertracing.ts","../node_modules/src/browser/router.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/src/browser/backgroundtab.ts","../node_modules/src/index.ts","utils/SentryUtil.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/react/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/src/errors.ts","../node_modules/src/hubextensions.ts","../node_modules/src/idletransaction.ts","../node_modules/src/span.ts","../node_modules/src/transaction.ts","../node_modules/src/utils.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/buildPolyfills/_nullishCoalesce.ts","../node_modules/@sentry/src/instrument.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/decode-uri-component/index.js","../node_modules/gud/index.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/isarray/index.js","../node_modules/object-assign/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/query-string/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","index.tsx"],"sourcesContent":["/**\n * Class uses for determining the current app environment\n */\n\nconst ENV = process.env.REACT_APP_ENV;\n\nexport default class Environment {\n static toString = (): string | undefined => ENV;\n static isProduction = (): boolean => ENV === 'production';\n}","import ApiAsset from \"types/ApiAsset\";\n\nexport default class ApiAssetUtil {\n static TYPE_TO_LABEL: { [key: string]: string } = {\n account: \"Account\",\n custom_field: \"Custom Field\",\n email: \"Email\",\n form: \"Form\",\n form_submission: \"Form Submission\",\n segment: \"Segment\",\n smart_content: \"Smart Content\",\n site: \"Site\",\n user: \"User\",\n visit: \"Visit\",\n visitor: \"Visitor\",\n visitor_attribute: \"Visitor Attribute\",\n webhook: \"Webhook\"\n };\n\n static TYPE_TO_CLIENT_ENDPOINT: { [key: string]: string } = {\n account: \"accounts\",\n custom_field: \"customfields\",\n email: \"emails\",\n form: \"forms\",\n form_submission: \"submissions\",\n segment: \"segments\",\n smart_content: \"smartcontents\",\n site: \"sites\",\n user: \"users\",\n visit: \"visits\",\n visitor: \"visitors\",\n visitor_attribute: \"visitorattributes\"\n };\n\n static CLIENT_ENDPOINT_TO_TYPE: {[key: string]: string} = {\n accounts: \"account\",\n custom_fields: \"custom_field\",\n emails: \"email\",\n forms: \"form\",\n submissions: \"submission\",\n segments: \"segment\",\n smart_contents: \"smart_content\",\n sites: \"site\",\n users: \"user\",\n visits: \"visit\",\n visitors: \"visitor\",\n visitor_attributes: \"visitor_attribute\"\n };\n\n static TYPE_TO_API_ENDPOINT: { [key: string]: string } = {\n account: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"account\"],\n custom_field: \"custom_fields\",\n email: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"email\"],\n form: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"form\"],\n form_submission: \"form_submissions\",\n segment: \"segments\",\n smart_content: \"smart_contents\",\n site: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"site\"],\n user: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"user\"],\n visit: \"visits\",\n visitor: \"visitors\",\n visitor_attribute: \"visitor_attributes\",\n webhook: \"form_webhooks\"\n };\n\n static getLabelFromType(assetType: string): string {\n return this.TYPE_TO_LABEL[assetType];\n };\n\n static getApiEndpointFromType(assetType: string): string {\n return this.TYPE_TO_API_ENDPOINT[assetType];\n };\n\n static getClientEndpointFromType(assetType: string): string {\n return this.TYPE_TO_CLIENT_ENDPOINT[assetType];\n };\n\n static getTypeFromClientEndpoint(assetType: string): string {\n return this.CLIENT_ENDPOINT_TO_TYPE[assetType];\n };\n\n static isNotEmptyAsset(asset: ApiAsset): boolean {\n return asset && !!asset.id;\n };\n}","import * as Sentry from '@sentry/react';\nimport FetchUtil from \"./FetchUtil\";\nimport Environment from \"components/Environment\";\n\nexport default class AppVersionUtil {\n static async verify(): Promise {\n const clientVersion = process.env.REACT_APP_SOURCE_VERSION;\n\n if (!clientVersion) {\n const message = \"Client's version does not seem to be a proper value: \" + clientVersion;\n console.warn(message);\n if (Environment.isProduction()) Sentry.captureException(message);\n\n return;\n }\n\n try {\n const appVersion: string = await FetchUtil.fetchText(`/api/app_version`);\n\n if (!appVersion) {\n const message = \"Failed to retrieve a proper App Version: \" + appVersion;\n console.warn(message);\n if (Environment.isProduction()) Sentry.captureException(message);\n\n return;\n }\n\n if (appVersion !== clientVersion) {\n console.log(\"App version updated. Refreshing the screen.\");\n window.location.reload();\n }\n\n } catch (e) {\n console.error(\"Could not get the app version \", e);\n }\n }\n}","import FetchUtil from './FetchUtil';\nimport queryString from 'query-string';\nimport LocalStorageUtil, {StorageKey} from \"./LocalStorageUtil\";\n\nconst USER_TOKEN_CREATION_ENDPOINT = '/api/user_token';\nconst USER_TOKEN_VERIFICATION_ENDPOINT = '/api/verify_token';\n\ntype TokenReadyCallback = (authToken: string | null) => any;\n\nlet authToken: string | null = null;\nlet isAuthTokenReady: boolean = false;\nconst waitingCallbacks: TokenReadyCallback[] = [];\n\n// If localStorage is available and accessing it doesn't throw any error, authToken can be retrieved at any time\nauthToken = LocalStorageUtil.get(StorageKey.jwt);\nif (authToken)\n isAuthTokenReady = true;\n\nif (!isAuthTokenReady && window.parent) {\n window.addEventListener('message', event => {\n if (event.data && event.data.action === 'authTokenLoaded')\n updateLocalAuthToken(event.data.authToken);\n });\n\n window.parent.postMessage({\n action: 'loadCliveAuthToken'\n }, '*');\n}\n\nfunction updateLocalAuthToken(token?: string | null) {\n isAuthTokenReady = true;\n authToken = token || null;\n waitingCallbacks.forEach((waitingCallback: TokenReadyCallback) => waitingCallback(authToken));\n waitingCallbacks.length = 0;\n}\n\nfunction handleAuthStorage(token: string) {\n updateLocalAuthToken(token);\n\n if (LocalStorageUtil.store(StorageKey.jwt, token)) {\n // After logging in reset current site and account, which could be old settings used by user who was previously using this browser\n LocalStorageUtil.delete(StorageKey.currentSiteId);\n LocalStorageUtil.delete(StorageKey.currentAccountId);\n\n return;\n }\n\n // Fallback when accessing localStorage throws an error or is null/undefined, which can happen in a Cascade iframe when 3rd party cookies are disabled\n if (window.parent)\n window.parent.postMessage({action: 'saveCliveAuthToken', authToken}, '*');\n}\n\nexport function onAuthTokenReady(callback: TokenReadyCallback) {\n if (isAuthTokenReady)\n callback(authToken);\n\n waitingCallbacks.push(callback);\n}\n\nexport function storedAuthTokenExists(): boolean {\n return authToken !== null;\n}\n\nexport function deleteStoredAuthToken(): void {\n updateLocalAuthToken(null);\n\n if (LocalStorageUtil.delete(StorageKey.jwt))\n return;\n\n // Fallback when accessing localStorage throws an error or is null/undefined, which can happen in a Cascade iframe when 3rd party cookies are disabled\n if (window.parent)\n window.parent.postMessage({action: 'deleteCliveAuthToken'}, '*');\n}\n\nexport function getAuthTokenAuthorizationHeader(): { Authorization: string } {\n return {'Authorization': \"Bearer \" + authToken};\n}\n\n/**\n * Attempts to retrieve a new authentication token for the user using his/her username + password and\n * returns a Promise for hooking into a successful login or catching an error.\n * @param username\n * @param password\n * @return Promise\n */\nexport async function getNewAuthToken(username: string, password: string) {\n const request = {\"auth\": {\"email\": username, \"password\": password}};\n\n return FetchUtil.fetchJson(USER_TOKEN_CREATION_ENDPOINT, {\n method: 'POST',\n body: JSON.stringify(request),\n includeAuthToken: false\n })\n .then(json => handleAuthStorage(json.jwt));\n}\n\n/**\n * Determines if the currently stored JWT (if there is one) is still valid.\n * @returns {boolean} returns false if there is no stored JWT or if it is no longer valid and true otherwise.\n */\nexport function verifyAuthTokenIsValid(callbacks) {\n callbacks = callbacks || {};\n if (!storedAuthTokenExists())\n if (callbacks.failure)\n return callbacks.failure();\n\n FetchUtil.fetchJson(USER_TOKEN_VERIFICATION_ENDPOINT, {\n method: 'POST',\n })\n .then(json => {\n if (callbacks.success)\n callbacks.success(json);\n })\n .catch(error => {\n if (callbacks.failure)\n callbacks.failure(error);\n });\n}\n\nexport function checkGoogleLogin(locationSearch, callbacks) {\n const query = queryString.parse(locationSearch);\n\n if (query.error) {\n if (callbacks.failure)\n callbacks.failure();\n }\n\n if (query.jwt) {\n handleAuthStorage(query.jwt);\n\n if (callbacks.success)\n callbacks.success();\n }\n}","import {getAuthTokenAuthorizationHeader} from './AuthUtil';\nimport {hasKeyIgnoreCase} from \"utils/ObjectUtil\";\n\nexport type Json = { [key: string]: any };\n\nexport default class FetchUtil {\n static async fetchJson(url: string, options?: Json): Promise<{ [key: string]: any }> {\n options = prepOptions(options);\n options = setJsonContentTypeIfEmpty(options);\n return await fetch(url, options)\n .then(handleErrorResponse)\n .then(handleJsonResponse);\n }\n\n static async send(url: string, options?: Json): Promise {\n return await fetch(url, prepOptions(options))\n .then(handleErrorResponse);\n }\n\n static async fetchText(url: string, options?: Json): Promise {\n return await fetch(url, prepOptions(options))\n .then(handleErrorResponse)\n .then(handleTextResponse);\n }\n\n static async fetchFile(url: string, options?: Json): Promise {\n const response = await fetch(url, prepOptions(options));\n \n if (!response.ok)\n return Promise.reject(response);\n \n const fileName = getFileNameFromResponse(response);\n const fileType = getFileTypeFromResponse(response);\n const blob = await response.blob();\n return new File([blob], fileName, {type: fileType});\n }\n}\n\nasync function handleErrorResponse(response) {\n if (response.ok) {\n return response;\n }\n\n if (isUnauthorized(response.status))\n return redirectToLogin()\n\n const exceptionToThrow = new Error(response.statusText || response.status);\n\n try {\n exceptionToThrow['response'] = response;\n const jsonError = await response.json();\n\n if (jsonError[\"correct_account_id\"] && window.location.href.indexOf('/accounts/') === -1)\n handleInvalidAccountError(jsonError, exceptionToThrow);\n else if (jsonError[\"error_messages\"])\n exceptionToThrow['errors'] = jsonError[\"error_messages\"];\n } catch (e) {\n throwSystemError(response, e);\n }\n\n throw exceptionToThrow;\n}\n\nfunction isUnauthorized(status) {\n return status === 401\n}\n\nfunction redirectToLogin() {\n window.location.href = \"/\";\n}\n\nfunction handleInvalidAccountError(invalidAccountError, exceptionToThrow) {\n window.location.href = window.location.origin + '/accounts/' + invalidAccountError[\"correct_account_id\"] + window.location.pathname;\n exceptionToThrow['errors'] = false; // This will prevent the error from appearing on the screen while it is reloading\n}\n\nasync function handleJsonResponse(response) {\n try {\n return await response.json();\n } catch (e) {\n // Catch any issues when parsing the response body as JSON.\n throwSystemError(response, e);\n }\n}\n\nasync function handleTextResponse(response) {\n try {\n return await response.text();\n } catch (e) {\n // Catch any issues when parsing the response body as text.\n throwSystemError(response, e);\n }\n}\n\nfunction prepOptions(options?: Json): Json {\n if (!options)\n options = {};\n\n if (!options.credentials)\n options.credentials = 'include';\n\n if (options.includeAuthToken !== false) {\n if (!options.headers)\n options.headers = {};\n options.headers = Object.assign(options.headers, getAuthTokenAuthorizationHeader());\n } else\n options.includeAuthToken = null; // Prevent this option from being included in the request\n\n return options;\n}\n\nfunction getFileNameFromResponse(response) {\n const contentDispositionHeader = response.headers.get('Content-Disposition');\n const filenameRegex = /filename=\"(.*?)\"/;\n const filenameMatch = filenameRegex.exec(contentDispositionHeader);\n\n return filenameMatch ? filenameMatch[1] || '' : '';\n}\n\nfunction throwSystemError(response, e?): void {\n const error = new Error(response.statusText || response.status);\n error['response'] = response;\n error['errors'] = [\"A system error occurred. We have been notified of the problem.\"];\n\n if (e)\n error['errors'].push(e);\n\n throw error;\n}\n\nfunction getFileTypeFromResponse(response) {\n return response.headers.get('Content-Type') || 'text/plain';\n}\n\nfunction setJsonContentTypeIfEmpty(options: Json): Json {\n if (!options.headers)\n options.headers = {};\n\n if (!hasKeyIgnoreCase(options.headers, 'content-type'))\n options.headers['Content-Type'] = 'application/json';\n\n return options;\n}","import {lazy} from 'react';\nimport AppVersionUtil from \"./AppVersionUtil\";\n\nexport const chunk = (lazyComponent : () => Promise | undefined) => {\n return lazy(() => {\n AppVersionUtil.verify();\n const component = lazyComponent();\n\n if (!component) {\n window.location.reload();\n return Promise.resolve();\n }\n\n return component.catch(() => {\n return;\n });\n });\n};","export enum StorageKey {\n jwt = 'jwt',\n currentSiteId = 'currentSiteId',\n currentAccountId = 'currentAccountId'\n}\n\ntype StoreSuccess = boolean;\n\nconst canLocalStorageBeUsed = (): boolean => {\n try {\n if (window.localStorage) {\n window.localStorage.setItem('test', 'test')\n const result: string | null = window.localStorage.getItem('test');\n window.localStorage.removeItem('test');\n return result === 'test';\n }\n } catch (e) {\n }\n return false;\n}\n\n// If Clive is embedded in an iframe, localStorage won't work. Use a fail-safe approach so that accessing localStorage does not prevent the rest of the functionality from working.\nif (!canLocalStorageBeUsed()) {\n Object.defineProperty(window, 'localStorage', {\n value: {\n setItem: (): void => {\n },\n removeItem: (): void => {\n },\n clear: (): void => {\n },\n key: (): void => {\n },\n getItem: (): null => null,\n length: 0,\n disabled: true\n }\n });\n}\n\nexport default class LocalStorageUtil {\n private static isLocalStorageAvailable(): boolean {\n return window.localStorage && window.localStorage.disabled !== true;\n }\n\n public static store(key: StorageKey, value: string | number): StoreSuccess {\n try {\n if (this.isLocalStorageAvailable()) {\n window.localStorage.setItem(key, value + '');\n return true;\n }\n } catch (e) {\n }\n return false\n }\n\n public static get(key: StorageKey): string | null {\n try {\n if (this.isLocalStorageAvailable()) {\n return localStorage.getItem(key);\n }\n } catch (e) {\n }\n return null;\n }\n\n public static delete(key: StorageKey): StoreSuccess {\n try {\n if (this.isLocalStorageAvailable()) {\n localStorage.removeItem(key);\n return true;\n }\n } catch (e) {\n }\n\n return false;\n }\n}","/**\n * Util functions for dealing with object literals\n */\n\n/**\n * Does a deep clone of an object literal\n * @param objectToClone\n */\nexport function deepClone(objectToClone: any): any {\n return JSON.parse(JSON.stringify(objectToClone));\n}\n\nexport function objectsEqual(object1: any, object2: any): boolean {\n // IMPROVEMENT: This will return false if object1 has its properties populated in a different order than object2\n return JSON.stringify(object1) === JSON.stringify(object2);\n}\n\nexport function emptyObject(object: any): boolean {\n for (var key in object) {\n if (object.hasOwnProperty(key))\n return false;\n }\n return true;\n}\n\nexport function hasKeyIgnoreCase(object: any, keyToFind: string): boolean {\n keyToFind = keyToFind.toLowerCase();\n return !!Object.keys(object).find(key => key.toLowerCase() === keyToFind);\n}","export const SDK_VERSION = '7.20.0';\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcess: EventProcessor = (event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n __DEBUG_BUILD__ &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","import { Integration, Options } from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\nimport { addGlobalEventProcessor } from './scope';\n\ndeclare module '@sentry/types' {\n interface Integration {\n isDefaultInstance?: boolean;\n }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = finalIntegrations.findIndex(integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n __DEBUG_BUILD__ && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n","import { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (__DEBUG_BUILD__) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n dsn: DsnComponents,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { ConsoleLevel } from './logger';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public logLevel: ConsoleLevel;\n\n public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nexport function dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!__DEBUG_BUILD__) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","import { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) as Prototype).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n","import {\n Attachment,\n AttachmentItem,\n DataCategory,\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => void,\n): void {\n const envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem: EnvelopeItem) => {\n const envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n","/* eslint-disable max-lines */\nimport {\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n Envelope,\n Event,\n EventDropReason,\n EventHint,\n Integration,\n IntegrationClass,\n Outcome,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n Transport,\n} from '@sentry/types';\nimport {\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { IntegrationIndex, setupIntegrations } from './integration';\nimport { Scope } from './scope';\nimport { updateSession } from './session';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean = false;\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number } = {};\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n __DEBUG_BUILD__ && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n __DEBUG_BUILD__ && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n __DEBUG_BUILD__ && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n __DEBUG_BUILD__ && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (__DEBUG_BUILD__) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason as SentryError;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = event.type === 'transaction';\n const beforeSendProcessorName = isTransaction ? 'beforeSendTransaction' : 'beforeSend';\n const beforeSendProcessor = options[beforeSendProcessorName];\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || !beforeSendProcessor) {\n return prepared;\n }\n\n const beforeSendResult = beforeSendProcessor(prepared, hint);\n return _validateBeforeSendResult(beforeSendResult, beforeSendProcessorName);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError(`\\`${beforeSendProcessorName}\\` returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n changes: [\n ...transactionInfo.changes,\n {\n source,\n // use the same timestamp as the processed event.\n timestamp: processedEvent.timestamp as number,\n propagations: transactionInfo.propagations,\n },\n ],\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): void {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n __DEBUG_BUILD__ && logger.error('Error while sending event:', reason);\n });\n } else {\n __DEBUG_BUILD__ && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: string,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendProcessorName: 'beforeSend' | 'beforeSendTransaction',\n): PromiseLike | Event | null {\n const invalidValueError = `\\`${beforeSendProcessorName}\\` must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`\\`${beforeSendProcessorName}\\` rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n","import { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n GLOBAL_OBJ,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n","/* eslint-disable deprecation/deprecation */\nimport { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Integration } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\nimport { WINDOW } from '../helpers';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\nexport const BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = BREADCRUMB_INTEGRATION_ID;\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n public readonly options: Readonly;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core';\nimport { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getEventDescription, logger, serializeEnvelope } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport { BrowserTransportOptions } from './transports/types';\n\nexport interface BaseBrowserOptions {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n}\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport interface BrowserOptions extends Options, BaseBrowserOptions {}\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint?: EventHint): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | null;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n __DEBUG_BUILD__ && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n __DEBUG_BUILD__ && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('Sending outcomes:', outcomes);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n const isRealNavigator = Object.prototype.toString.call(WINDOW && WINDOW.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof WINDOW.navigator.sendBeacon === 'function';\n // Make sure beacon is not used if user configures custom transport options\n if (hasSendBeacon && !this._options.transportOptions) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = WINDOW.navigator.sendBeacon.bind(WINDOW.navigator);\n sendBeacon(url, serializeEnvelope(envelope));\n } else {\n // If beacon is not supported or if they are using the tunnel option\n // use our regular transport to send client reports to Sentry.\n this._sendEnvelope(envelope);\n }\n } catch (e) {\n __DEBUG_BUILD__ && logger.error(e);\n }\n }\n}\n","import { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n __DEBUG_BUILD__ && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcessor: EventProcessor = currentEvent => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\n/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import { TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import {\n Envelope,\n EnvelopeItem,\n EventDropReason,\n InternalBaseTransportOptions,\n Transport,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport {\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n resolvedSyncPromise,\n SentryError,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): Transport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n __DEBUG_BUILD__ && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n __DEBUG_BUILD__ && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n __DEBUG_BUILD__ && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\nimport { clearCachedFetchImplementation, FetchImpl, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch), a request with `keepalive: true`\n // and a content length of > 64 kibibytes returns a network error. We will therefore only activate the flag when\n // we're below that limit.\n keepalive: request.body.length <= 65536,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n } catch (e) {\n clearCachedFetchImplementation();\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import {\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n Hub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from '@sentry/core';\nimport {\n addInstrumentationHandler,\n logger,\n resolvedSyncPromise,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport { BrowserClient, BrowserClientOptions, BrowserOptions } from './client';\nimport { ReportDialogOptions, WINDOW, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}, hub: Hub = getCurrentHub()): void {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n __DEBUG_BUILD__ && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n __DEBUG_BUILD__ && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n __DEBUG_BUILD__ && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n if (typeof WINDOW.document === 'undefined') {\n __DEBUG_BUILD__ &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","import { WINDOW } from '@sentry/browser';\nimport { Transaction, TransactionSource } from '@sentry/types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nimport { Action, Location, ReactRouterInstrumentation } from './types';\n\n// We need to disable eslint no-explict-any because any is required for the\n// react-router typings.\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype Match = { path: string; url: string; params: Record; isExact: boolean };\n\nexport type RouterHistory = {\n location?: Location;\n listen?(cb: (location: Location, action: Action) => void): void;\n} & Record;\n\nexport type RouteConfig = {\n [propName: string]: any;\n path?: string | string[];\n exact?: boolean;\n component?: JSX.Element;\n routes?: RouteConfig[];\n};\n\ntype MatchPath = (pathname: string, props: string | string[] | any, parent?: Match | null) => Match | null;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nlet activeTransaction: Transaction | undefined;\n\nexport function reactRouterV4Instrumentation(\n history: RouterHistory,\n routes?: RouteConfig[],\n matchPath?: MatchPath,\n): ReactRouterInstrumentation {\n return createReactRouterInstrumentation(history, 'react-router-v4', routes, matchPath);\n}\n\nexport function reactRouterV5Instrumentation(\n history: RouterHistory,\n routes?: RouteConfig[],\n matchPath?: MatchPath,\n): ReactRouterInstrumentation {\n return createReactRouterInstrumentation(history, 'react-router-v5', routes, matchPath);\n}\n\nfunction createReactRouterInstrumentation(\n history: RouterHistory,\n name: string,\n allRoutes: RouteConfig[] = [],\n matchPath?: MatchPath,\n): ReactRouterInstrumentation {\n function getInitPathName(): string | undefined {\n if (history && history.location) {\n return history.location.pathname;\n }\n\n if (WINDOW && WINDOW.location) {\n return WINDOW.location.pathname;\n }\n\n return undefined;\n }\n\n /**\n * Normalizes a transaction name. Returns the new name as well as the\n * source of the transaction.\n *\n * @param pathname The initial pathname we normalize\n */\n function normalizeTransactionName(pathname: string): [string, TransactionSource] {\n if (allRoutes.length === 0 || !matchPath) {\n return [pathname, 'url'];\n }\n\n const branches = matchRoutes(allRoutes, pathname, matchPath);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let x = 0; x < branches.length; x++) {\n if (branches[x].match.isExact) {\n return [branches[x].match.path, 'route'];\n }\n }\n\n return [pathname, 'url'];\n }\n\n const tags = {\n 'routing.instrumentation': name,\n };\n\n return (customStartTransaction, startTransactionOnPageLoad = true, startTransactionOnLocationChange = true): void => {\n const initPathName = getInitPathName();\n if (startTransactionOnPageLoad && initPathName) {\n const [name, source] = normalizeTransactionName(initPathName);\n activeTransaction = customStartTransaction({\n name,\n op: 'pageload',\n tags,\n metadata: {\n source,\n },\n });\n }\n\n if (startTransactionOnLocationChange && history.listen) {\n history.listen((location, action) => {\n if (action && (action === 'PUSH' || action === 'POP')) {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n\n const [name, source] = normalizeTransactionName(location.pathname);\n activeTransaction = customStartTransaction({\n name,\n op: 'navigation',\n tags,\n metadata: {\n source,\n },\n });\n }\n });\n }\n };\n}\n\n/**\n * Matches a set of routes to a pathname\n * Based on implementation from\n */\nfunction matchRoutes(\n routes: RouteConfig[],\n pathname: string,\n matchPath: MatchPath,\n branch: Array<{ route: RouteConfig; match: Match }> = [],\n): Array<{ route: RouteConfig; match: Match }> {\n routes.some(route => {\n const match = route.path\n ? matchPath(pathname, route)\n : branch.length\n ? branch[branch.length - 1].match // use parent match\n : computeRootMatch(pathname); // use default \"root\" match\n\n if (match) {\n branch.push({ route, match });\n\n if (route.routes) {\n matchRoutes(route.routes, pathname, matchPath, branch);\n }\n }\n\n return !!match;\n });\n\n return branch;\n}\n\nfunction computeRootMatch(pathname: string): Match {\n return { path: '/', url: '/', params: {}, isExact: pathname === '/' };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nexport function withSentryRouting

, R extends React.ComponentType

>(Route: R): R {\n const componentDisplayName = (Route as any).displayName || (Route as any).name;\n\n const WrappedRoute: React.FC

= (props: P) => {\n if (activeTransaction && props && props.computedMatch && props.computedMatch.isExact) {\n activeTransaction.setName(props.computedMatch.path, 'route');\n }\n\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return ;\n };\n\n WrappedRoute.displayName = `sentryRoute(${componentDisplayName})`;\n hoistNonReactStatics(WrappedRoute, Route);\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return WrappedRoute;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n","import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n\n if (!traceparent || !matches) {\n // empty string or no matches is invalid traceparent data\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n","import { DynamicSamplingContext } from '@sentry/types';\n\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject: Readonly> = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext: Partial,\n): string | undefined {\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce>((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n callback: ReportCallback,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n let delta: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry: { [key: string]: number | string } = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n }\n }\n return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n const navEntry = getNavigationEntry();\n let navigationType: Metric['navigationType'] = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n paint: PerformancePaintTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n resource: PerformanceResourceTiming[];\n longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) as PerformanceObserverInit,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { LCPMetric, ReportCallback, ReportOpts } from './types';\n\nconst reportedMetricIDs: Record = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called any time a new `largest-contentful-paint`\n * performance entry is dispatched, or once the final value of the metric has\n * been determined.\n */\nexport const onLCP = (onReport: ReportCallback, opts: ReportOpts = {}): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const handleEntries = (entries: LCPMetric['entries']): void => {\n const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() as LCPMetric['entries']);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n","import { Span, SpanContext } from '@sentry/types';\n\nimport { Transaction } from '../../transaction';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n","/* eslint-disable max-lines */\nimport { Measurements } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, htmlTreeAsString, logger } from '@sentry/utils';\n\nimport { IdleTransaction } from '../../idletransaction';\nimport { Transaction } from '../../transaction';\nimport { getActiveTransaction, msToSec } from '../../utils';\nimport { WINDOW } from '../types';\nimport { onCLS } from '../web-vitals/getCLS';\nimport { onFID } from '../web-vitals/getFID';\nimport { onLCP } from '../web-vitals/getLCP';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport { observe } from '../web-vitals/lib/observe';\nimport { NavigatorDeviceMemory, NavigatorNetworkInformation } from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals\n */\nexport function startTrackingWebVitals(reportAllChanges: boolean = false): void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/**\n * Start tracking long tasks.\n */\nexport function startTrackingLongTasks(): void {\n const entryHandler = (entries: PerformanceEntry[]): void => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() as IdleTransaction | undefined;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): void {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry as LayoutShift;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges: boolean): void {\n onLCP(\n metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry as LargestContentfulPaint;\n },\n { reportAllChanges },\n );\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): void {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nexport function addPerformanceEntries(transaction: Transaction): void {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp: number | undefined;\n let requestStartTimestamp: number | undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry: Record) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name as string).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n __DEBUG_BUILD__ &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nexport function _addMeasureSpans(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction: Transaction, entry: Record, timeOrigin: number): void {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description ?? event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction: Transaction, entry: Record, timeOrigin: number): void {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceName: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: Record = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n const navigator = WINDOW.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\n if (_lcpEntry) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { CLSMetric, ReportCallback, ReportOpts } from './types';\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onCLS = (onReport: ReportCallback, opts: ReportOpts = {}): void => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries: LayoutShift[]): void => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n onHidden(() => {\n handleEntries(po.takeRecords() as CLSMetric['entries']);\n report(true);\n });\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { FIDMetric, PerformanceEventTiming, ReportCallback, ReportOpts } from './types';\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nexport const onFID = (onReport: ReportCallback, opts: ReportOpts = {}): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntry = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries: FIDMetric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() as FIDMetric['entries']);\n po.disconnect();\n }, true);\n }\n};\n","/* eslint-disable max-lines */\nimport type { DynamicSamplingContext, Span } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n BAGGAGE_HEADER_NAME,\n dynamicSamplingContextToSentryBaggageHeader,\n isInstanceOf,\n stringMatchesSomePattern,\n} from '@sentry/utils';\n\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\n\n// TODO (v8): Remove `tracingOrigins`\nexport const DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\nexport const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * @deprecated Will be removed in v8.\n * Use `shouldCreateSpanForRequest` to control span creation and `tracePropagationTargets` to control\n * trace header attachment.\n */\n tracingOrigins: Array;\n\n /**\n * List of strings and/or regexes used to determine which outgoing requests will have `sentry-trace` and `baggage`\n * headers attached.\n *\n * Default: ['localhost', /^\\//] {@see DEFAULT_TRACE_PROPAGATION_TARGETS}\n */\n tracePropagationTargets: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * Default: (url: string) => true\n */\n shouldCreateSpanForRequest?(url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[]; // the arguments passed to the fetch call itself\n fetchData?: {\n method: string;\n url: string;\n // span_id\n __span?: string;\n };\n\n // TODO Should this be unknown instead? If we vendor types, make it a Response\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response?: any;\n error?: unknown;\n\n startTimestamp: number;\n endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n xhr?: {\n __sentry_xhr__?: {\n method: string;\n url: string;\n status_code: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record;\n };\n __sentry_xhr_span_id__?: string;\n setRequestHeader?: (key: string, val: string) => void;\n getRequestHeader?: (key: string) => string;\n __sentry_own_request__?: boolean;\n };\n startTimestamp: number;\n endTimestamp?: number;\n}\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n append: (key: string, value: string) => void;\n get: (key: string) => string;\n };\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n // eslint-disable-next-line deprecation/deprecation\n const { traceFetch, traceXHR, tracingOrigins, tracePropagationTargets, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_: string) => true;\n\n const shouldAttachHeaders = (url: string): boolean =>\n stringMatchesSomePattern(url, tracingOrigins) || stringMatchesSomePattern(url, tracePropagationTargets);\n\n const spans: Record = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeaders, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeaders, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n handlerData: FetchData,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): void {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request: string | Request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options: { [key: string]: any } = handlerData.args[1];\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n options.headers = addTracingHeadersToFetchRequest(\n request,\n activeTransaction.getDynamicSamplingContext(),\n span,\n options,\n );\n\n activeTransaction.metadata.propagations += 1;\n }\n }\n}\n\nfunction addTracingHeadersToFetchRequest(\n request: string | Request,\n dynamicSamplingContext: Partial,\n span: Span,\n options: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | Request['headers'];\n },\n): PolymorphicRequestHeaders {\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n const sentryTraceHeader = span.toTraceparent();\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request as Request).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers as Headers);\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended miultiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders: string[] = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers as Exclude),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n handlerData: XHRData,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): void {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader && shouldAttachHeaders(handlerData.xhr.__sentry_xhr__.url)) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n const dynamicSamplingContext = activeTransaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n handlerData.xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n activeTransaction.metadata.propagations += 1;\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n","/* eslint-disable max-lines */\nimport { Hub } from '@sentry/core';\nimport { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types';\nimport { baggageHeaderToDynamicSamplingContext, getDomElement, logger } from '@sentry/utils';\n\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_FINAL_TIMEOUT, DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceEntries, startTrackingLongTasks, startTrackingWebVitals } from './metrics';\nimport {\n defaultRequestInstrumentationOptions,\n instrumentOutgoingRequests,\n RequestInstrumentationOptions,\n} from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nimport { WINDOW } from './types';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n * by a moment where there are no in-progress spans.\n *\n * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n * will be finished.\n * Time is in ms.\n *\n * Default: 30000\n */\n finalTimeout: number;\n\n /**\n * The heartbeat interval. If no new spans are started or open spans are finished within 3 heartbeats,\n * the transaction will be finished.\n * Time is in ms.\n *\n * Default: 5000\n */\n heartbeatInterval: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{ _reportAllChanges: boolean }>;\n\n /**\n * _experiments allows the user to send options to define how this integration works.\n *\n * Default: undefined\n */\n _experiments?: Partial<{ enableLongTask: boolean }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n heartbeatInterval: DEFAULT_HEARTBEAT_INTERVAL,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n _experiments: { enableLongTask: true },\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nexport class BrowserTracing implements Integration {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string = BROWSER_TRACING_INTEGRATION_ID;\n\n private _getCurrentHub?: () => Hub;\n\n public constructor(_options?: Partial) {\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n if (this.options._experiments?.enableLongTask) {\n startTrackingLongTasks();\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context: TransactionContext) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n if (!this._getCurrentHub) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTraceMetaTagValue = isPageloadTransaction ? getMetaContent('sentry-trace') : null;\n const baggageMetaTagValue = isPageloadTransaction ? getMetaContent('baggage') : null;\n\n const traceParentData = sentryTraceMetaTagValue ? extractTraceparentData(sentryTraceMetaTagValue) : undefined;\n const dynamicSamplingContext = baggageMetaTagValue\n ? baggageHeaderToDynamicSamplingContext(baggageMetaTagValue)\n : undefined;\n\n const expandedContext: TransactionContext = {\n ...context,\n ...traceParentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceParentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n __DEBUG_BUILD__ &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction as Transaction;\n }\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : null;\n}\n","import { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { WINDOW } from './types';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\n if (!WINDOW || !WINDOW.location) {\n __DEBUG_BUILD__ && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl: string | undefined = WINDOW.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n","import { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n","import { logger } from '@sentry/utils';\n\nimport { IdleTransaction } from '../idletransaction';\nimport { SpanStatusType } from '../span';\nimport { getActiveTransaction } from '../utils';\nimport { WINDOW } from './types';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType: SpanStatusType = 'cancelled';\n\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n __DEBUG_BUILD__ &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\n\nexport type { RequestInstrumentationOptions } from './browser';\nexport type { SpanStatusType } from './span';\n\nexport { Integrations };\n\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing, BROWSER_TRACING_INTEGRATION_ID } from './browser';\n\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport { instrumentOutgoingRequests, defaultRequestInstrumentationOptions } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n\nexport { addExtensionMethods };\n\nexport {\n extractTraceparentData,\n getActiveTransaction,\n hasTracingEnabled,\n stripUrlQueryAndFragment,\n TRACEPARENT_REGEXP,\n} from './utils';\n","import * as Sentry from \"@sentry/react\";\nimport {Integrations} from \"@sentry/tracing\";\n\nimport Account from \"types/Account\";\nimport User from \"types/User\";\nimport Environment from \"components/Environment\";\nimport ApiAssetUtil from \"utils/ApiAssetUtil\";\nimport {History} from 'history';\n\n/**\n * Sentry related utility functions\n */\nexport default class SentryUtil {\n private static sentryInitialized: boolean = false;\n\n static init(history: History) {\n if (Environment.isProduction()) {\n Sentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n integrations: [\n new Integrations.BrowserTracing({\n // Can also use reactRouterV3Instrumentation or reactRouterV4Instrumentation\n routingInstrumentation: Sentry.reactRouterV5Instrumentation(history),\n }),\n ],\n environment: Environment.toString(),\n release: process.env.REACT_APP_HEROKU_SLUG_COMMIT,\n tracesSampleRate: 0,\n });\n\n Sentry.configureScope((scope) => {\n scope.setTag('clive_source', 'client');\n });\n\n this.sentryInitialized = true;\n }\n }\n\n /**\n * Adds context about the user to Sentry when reporting events.\n *\n * @param {User} user - The user associated with the Sentry event\n * @param {Account} account - The account associated with the Sentry event\n */\n static setUserContext(user: User, account: Account) {\n if (!this.sentryInitialized) {\n return;\n }\n\n if (ApiAssetUtil.isNotEmptyAsset(user)) {\n Sentry.setUser({\n id: user.id + \"\",\n email: user.email,\n account_id: ApiAssetUtil.isNotEmptyAsset(account) ? account.id : \"\"\n });\n }\n }\n}\n","import {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Primitive,\n Severity,\n SeverityLevel,\n TransactionContext,\n User,\n} from '@sentry/types';\n\nimport { getCurrentHub, Hub } from './hub';\nimport { Scope } from './scope';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): ReturnType {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): ReturnType {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event, hint?: EventHint): ReturnType {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): ReturnType {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): ReturnType {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): ReturnType {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): ReturnType {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): ReturnType {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): ReturnType {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n GLOBAL_OBJ,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n public shouldSendDefaultPii(): boolean {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _withClient(callback: (client: Client, scope: Scope | undefined) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n __DEBUG_BUILD__ && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport {\n arrayify,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isPlainObject,\n isThenable,\n logger,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getAttachments(): Attachment[] {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n __DEBUG_BUILD__ &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n __DEBUG_BUILD__ && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n","import { getMainCarrier, Hub } from '@sentry/core';\nimport {\n ClientOptions,\n CustomSamplingContext,\n Integration,\n IntegrationClass,\n Options,\n SamplingContext,\n TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n __DEBUG_BUILD__ && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n __DEBUG_BUILD__ &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n): IdleTransaction {\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","/* eslint-disable max-lines */\nimport { Hub } from '@sentry/core';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { Span, SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\nexport const DEFAULT_FINAL_TIMEOUT = 30000;\nexport const DEFAULT_HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = DEFAULT_FINAL_TIMEOUT,\n private readonly _heartbeatInterval: number = DEFAULT_HEARTBEAT_INTERVAL,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n __DEBUG_BUILD__ && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n __DEBUG_BUILD__ && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n __DEBUG_BUILD__ && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n __DEBUG_BUILD__ && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n private _cancelIdleTimeout(): void {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n private _startIdleTimeout(endTimestamp?: Parameters[0]): void {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this._cancelIdleTimeout();\n __DEBUG_BUILD__ && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n __DEBUG_BUILD__ && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n __DEBUG_BUILD__ && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub: Hub): void {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n","/* eslint-disable max-lines */\nimport { Instrumenter, Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatusType | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n */\n public instrumenter: Instrumenter = 'sentry';\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if (__DEBUG_BUILD__ && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n if (\n __DEBUG_BUILD__ &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(spanContext: SpanContext): this {\n this.data = spanContext.data ?? {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId ?? this.spanId;\n this.startTimestamp = spanContext.startTimestamp ?? this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags ?? {};\n this.traceId = spanContext.traceId ?? this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n status?: string;\n tags?: { [key: string]: Primitive };\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n","import { getCurrentHub, Hub } from '@sentry/core';\nimport {\n Context,\n Contexts,\n DynamicSamplingContext,\n Event,\n Measurements,\n MeasurementUnit,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds } from '@sentry/utils';\n\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n public metadata: TransactionMetadata;\n\n /**\n * The reference to the current hub.\n */\n public readonly _hub: Hub;\n\n private _name: string;\n\n private _measurements: Measurements = {};\n\n private _contexts: Contexts = {};\n\n private _trimEnd?: boolean;\n\n private _frozenDynamicSamplingContext: Readonly> | undefined = undefined;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n changes: [],\n propagations: 0,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n public get name(): string {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n public set name(newName: string) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n // `source` could change without the name changing if we discover that an unparameterized route is actually\n // parameterized by virtue of having no parameters in its path\n if (name !== this.name || source !== this.metadata.source) {\n this.metadata.changes.push({\n // log previous source\n source: this.metadata.source,\n timestamp: timestampInSeconds(),\n propagations: this.metadata.propagations,\n });\n }\n\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n public setMetadata(newMetadata: Partial): void {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): string | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n __DEBUG_BUILD__ && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n __DEBUG_BUILD__ && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n const client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction: Event = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n changes: metadata.changes,\n propagations: metadata.propagations,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name ?? '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n public getDynamicSamplingContext(): Readonly> {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub: Hub = this._hub || getCurrentHub();\n const client = hub && hub.getClient();\n\n if (!client) return {};\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n const maybeSampleRate = this.metadata.sampleRate;\n const sample_rate = maybeSampleRate !== undefined ? maybeSampleRate.toString() : undefined;\n\n const scope = hub.getScope();\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const source = this.metadata.source;\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const transaction = source && source !== 'url' ? this.name : undefined;\n\n const dsc = dropUndefinedKeys({\n environment,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n });\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n}\n","import { getCurrentHub, Hub } from '@sentry/core';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\n}\n","/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n __DEBUG_BUILD__ && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalSingleton, GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] as const;\nexport type ConsoleLevel = typeof CONSOLE_LEVELS[number];\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const originalConsole = GLOBAL_OBJ.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in originalConsole && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (__DEBUG_BUILD__) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (__DEBUG_BUILD__) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n const getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import { StackFrame, StackLineParser, StackLineParserFn, StackParser } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\ntype GetModuleFn = (filename: string | undefined) => string | undefined;\n\n// eslint-disable-next-line complexity\nfunction node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n // eslint-disable-next-line complexity\n return (line: string) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n // eslint-disable-next-line no-plusplus\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n const filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].substr(7) : lineMatch[2];\n const isNative = lineMatch[5] === 'native';\n const isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n const in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: getModule?.(filename),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","import { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { dynamicRequire, isNodeEnv } from './node';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;dthis.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"\"+b+\"\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;dGe||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:cb&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{bb?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):bc&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:cb&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||da&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,du?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;uu?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;md?e:d);Ih.current=null;d=void 0;1c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;hg&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1=v)t=0;else if(-1===t||v component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&eb?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTimeU&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(ba.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2 {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RouterContext from \"./RouterContext\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8),S=bb?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n 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 return _extends.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"76\":\"my-account-plan\",\"372\":\"visitors\",\"783\":\"sites\",\"1014\":\"visitor-attribute-view\",\"1305\":\"webhook-editor\",\"1566\":\"account-editor\",\"1652\":\"segment-editor\",\"1990\":\"form-view\",\"2007\":\"segment-view\",\"2143\":\"app\",\"2316\":\"integrations-view\",\"2394\":\"webhooks\",\"2542\":\"smart-content-view\",\"2667\":\"smart-contents\",\"2681\":\"users\",\"2939\":\"user-view\",\"3103\":\"smart-content-version-view\",\"3557\":\"form-notifications\",\"3664\":\"account-plans\",\"3693\":\"account-plans-view\",\"3790\":\"forms\",\"4289\":\"visitor-attribute\",\"4358\":\"visitor-view\",\"4589\":\"email-editor\",\"4714\":\"user-editor\",\"4813\":\"segments\",\"5640\":\"account-view\",\"5720\":\"form-editor\",\"6022\":\"email-view\",\"6203\":\"smart-content-editor\",\"6585\":\"visitor-attribute-editor\",\"6836\":\"site-editor\",\"7046\":\"custom-field-editor\",\"7156\":\"form-submission-file-download\",\"7233\":\"site-view\",\"7809\":\"emails\",\"8273\":\"form-submission-view\",\"8300\":\"visit-view\",\"8494\":\"user-account\",\"8518\":\"account-email-domains\",\"8562\":\"accounts\",\"8658\":\"site-selector\",\"8918\":\"app-embed\",\"9079\":\"geolocation-visitor-attribute-view\",\"9435\":\"custom-field-view\",\"9596\":\"custom-fields\",\"9966\":\"dashboard\"}[chunkId] || chunkId) + \".\" + {\"76\":\"8d700be2\",\"224\":\"8340c8a5\",\"372\":\"d24c91f2\",\"487\":\"b8ff5040\",\"783\":\"65eb0981\",\"1014\":\"e8581e7d\",\"1117\":\"b73d71df\",\"1197\":\"171199a0\",\"1305\":\"ef62187f\",\"1393\":\"60e18bf1\",\"1566\":\"126b2d5a\",\"1616\":\"d9035cbb\",\"1625\":\"a9f2070e\",\"1652\":\"58e5b76b\",\"1772\":\"2ac0015e\",\"1990\":\"afe9e487\",\"2007\":\"cddc8248\",\"2143\":\"0bc1d1e7\",\"2290\":\"252f05b6\",\"2316\":\"13af7d5a\",\"2394\":\"cff12257\",\"2542\":\"04973b23\",\"2667\":\"6b96af46\",\"2681\":\"a0efbba2\",\"2805\":\"0c8538a9\",\"2939\":\"c285c660\",\"3103\":\"c8940ff5\",\"3336\":\"37111d25\",\"3557\":\"b85f5d42\",\"3664\":\"0d2ddbdb\",\"3693\":\"2aa4b0b9\",\"3790\":\"e634c5d4\",\"3906\":\"0f5891e7\",\"4166\":\"65698e44\",\"4289\":\"3ea5375a\",\"4358\":\"802eb2ea\",\"4461\":\"bfb8c00c\",\"4589\":\"52543d29\",\"4714\":\"49ee478b\",\"4813\":\"0e4498da\",\"4839\":\"ee20f88a\",\"5015\":\"cc1434c4\",\"5035\":\"61052d0c\",\"5566\":\"541b9774\",\"5604\":\"497266cd\",\"5640\":\"657ffb43\",\"5688\":\"cbcf7e6d\",\"5710\":\"20f83e99\",\"5720\":\"7541573d\",\"5757\":\"f7c1acf9\",\"6022\":\"d1b3801b\",\"6191\":\"5ce48462\",\"6203\":\"e48e54f1\",\"6585\":\"71b1cb70\",\"6836\":\"fc6cc2dc\",\"6924\":\"f2411525\",\"6947\":\"8496e94a\",\"7046\":\"b2ad18e3\",\"7098\":\"a6600b5c\",\"7156\":\"ae773162\",\"7233\":\"ac0f9eb5\",\"7329\":\"5b2143aa\",\"7501\":\"b9056ef7\",\"7570\":\"2af402db\",\"7592\":\"90a5f37d\",\"7809\":\"b82f935f\",\"7811\":\"87b3e843\",\"8273\":\"7dda776d\",\"8300\":\"6d5c9582\",\"8494\":\"f19ce8ca\",\"8518\":\"e9f44f06\",\"8562\":\"3dd733e5\",\"8658\":\"e806a3bc\",\"8671\":\"33d3dd5e\",\"8723\":\"0bbed369\",\"8734\":\"79d8881c\",\"8762\":\"c089cdae\",\"8918\":\"f0a4395e\",\"9079\":\"0131ec76\",\"9435\":\"d872cc13\",\"9595\":\"d90c4d34\",\"9596\":\"7798a7ad\",\"9966\":\"9efd16ef\",\"9988\":\"4dda02cc\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"2143\":\"app\",\"8918\":\"app-embed\"}[chunkId] + \".\" + {\"2143\":\"a73a04e3\",\"8918\":\"072ee8bf\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"clive-client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"2143\":1,\"8918\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkclive_client\"] = self[\"webpackChunkclive_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import React, {Suspense} from 'react';\nimport ReactDOM from 'react-dom';\nimport {Router} from 'react-router-dom';\nimport {createBrowserHistory, History} from 'history';\nimport {chunk} from \"utils/LazyUtil\";\nimport SentryUtil from \"utils/SentryUtil\";\n\nconst EmbeddedApp = chunk(() => import(/* webpackChunkName: \"app-embed\" */ \"./EmbeddedApp\"));\nconst App = chunk(() => import(/* webpackChunkName: \"app\" */\"./App\"));\n\n// import registerServiceWorker from './registerServiceWorker';\nconst history: History = createBrowserHistory();\n\nSentryUtil.init(history);\n\nif (window.location.href.indexOf('http://') === 0)\n window.location.href = window.location.href.replace('http://', 'https://');\nelse if (window.location.pathname.indexOf('/embed') === 0)\n ReactDOM.render((}>), document.getElementById('root'));\nelse\n ReactDOM.render((}>), document.getElementById('root'));\n// registerServiceWorker();\n"],"names":["ENV","process","Environment","toString","isProduction","ApiAssetUtil","assetType","this","TYPE_TO_LABEL","TYPE_TO_API_ENDPOINT","TYPE_TO_CLIENT_ENDPOINT","CLIENT_ENDPOINT_TO_TYPE","asset","id","account","custom_field","email","form","form_submission","segment","smart_content","site","user","visit","visitor","visitor_attribute","webhook","accounts","custom_fields","emails","forms","submissions","segments","smart_contents","sites","users","visits","visitors","visitor_attributes","AppVersionUtil","clientVersion","message","console","warn","Sentry","FetchUtil","appVersion","log","window","location","reload","error","USER_TOKEN_CREATION_ENDPOINT","authToken","isAuthTokenReady","waitingCallbacks","updateLocalAuthToken","token","forEach","waitingCallback","length","handleAuthStorage","LocalStorageUtil","StorageKey","parent","postMessage","action","onAuthTokenReady","callback","push","storedAuthTokenExists","deleteStoredAuthToken","getAuthTokenAuthorizationHeader","getNewAuthToken","username","password","request","method","body","JSON","stringify","includeAuthToken","then","json","jwt","verifyAuthTokenIsValid","callbacks","failure","success","catch","checkGoogleLogin","locationSearch","query","queryString","addEventListener","event","data","url","options","setJsonContentTypeIfEmpty","prepOptions","fetch","handleErrorResponse","handleJsonResponse","handleTextResponse","response","ok","Promise","reject","fileName","getFileNameFromResponse","fileType","getFileTypeFromResponse","blob","File","type","isUnauthorized","status","redirectToLogin","exceptionToThrow","Error","statusText","jsonError","href","indexOf","handleInvalidAccountError","throwSystemError","invalidAccountError","origin","pathname","text","credentials","headers","Object","assign","contentDispositionHeader","get","filenameMatch","exec","e","hasKeyIgnoreCase","chunk","lazyComponent","lazy","component","resolve","localStorage","setItem","result","getItem","removeItem","canLocalStorageBeUsed","defineProperty","value","clear","key","disabled","isLocalStorageAvailable","deepClone","objectToClone","parse","objectsEqual","object1","object2","object","keyToFind","toLowerCase","keys","find","InboundFilters","internalOptions","clientOptions","allowUrls","denyUrls","ignoreErrors","DEFAULT_IGNORE_ERRORS","ignoreInternal","logger","getEventDescription","eventProcess","addGlobalEventProcessor","_getEventFilterUrl","frames","FunctionToString","originalFunctionToString","Function","args","defaultIntegrations","integration","integrations","integrationsByName","debugInstance","finalIntegrations","clientClass","scope","hub","getBaseApiEndpoint","dsn","_getIngestEndpoint","_encodedAuth","sentry_key","sentry_version","sdkInfo","sentry_client","tunnelOrOptions","_construct","Parent","Class","isNativeReflectConstruct","Reflect","construct","bind","a","apply","instance","setPrototypeOf","prototype","arguments","_wrapNativeSuper","_cache","Map","undefined","fn","call","TypeError","has","set","Wrapper","getPrototypeOf","constructor","create","enumerable","writable","configurable","SentryError","path","pass","port","projectId","protocol","publicKey","host","dsnFromComponents","components","lastPath","requiredComponents","validateDsn","inner","ERROR","depth","maxSize","maxProperties","memo","memoize","unmemoize","normalized","numAdded","stringifyValue","jsonSize","items","envelope","envelopeItems","encodeUTF8","input","envHeaders","parts","itemHeaders","payload","append","stringifiedPayload","buffers","merged","offset","attachment","textEncoder","dropUndefinedKeys","filename","content_type","attachment_type","buffer","session","sessions","transaction","client_report","user_report","name","version","metadata","tunnel","enhanceEventWithSdkInfo","event_id","sent_at","sdk","dynamicSamplingContext","trace","BaseClient","recordDroppedEvent","eventId","level","hint","promisedEvent","updateSession","init","integrationIndex","installedIntegrations","env","createAttachmentEnvelopeItem","errored","exceptions","crashed","errors","clearInterval","ticked","normalizeDepth","normalizeMaxBreadth","timestamp","finalScope","breadcrumbs","b","contexts","extra","span","release","dist","maxValueLength","exception","sampleRate","beforeSendResult","beforeSendProcessorName","processedEvent","transactionInfo","source","changes","propagations","__sentry__","originalException","reason","category","quantity","ex","values","stackParser","extractMessage","attachStacktrace","syntheticException","isUnhandledRejection","addExceptionTypeValue","extractExceptionKeysForMessage","__serialized__","addExceptionMechanism","synthetic","stacktrace","ignoreOnError","setTimeout","before","ignoreNextOnError","withScope","captureException","sentryWrapped","markFunctionWrapped","addNonEnumerableProperty","relative","Breadcrumbs","dom","history","sentry","xhr","addInstrumentationHandler","keyAttrs","target","htmlTreeAsString","getCurrentHub","global","_consoleBreadcrumb","handlerData","breadcrumb","_xhrBreadcrumb","status_code","_fetchBreadcrumb","_historyBreadcrumb","parsedFrom","to","from","BrowserClient","packages","WINDOW","breadcrumbIntegration","discarded_events","sendBeacon","createFrame","func","function","in_app","frame","extractSafariExtensionDetails","isSafariExtension","TryCatch","XMLHttpRequest","eventTarget","requestAnimationFrame","setInterval","fill","_wrapTimeFunction","original","mechanism","handled","_wrapRAF","wrap","handler","_wrapXHR","originalSend","xmlHttpRequestProps","wrapOptions","_wrapEventTarget","eventName","proto","originalRemoveEventListener","GlobalHandlers","onerror","onunhandledrejection","globalHandlerLog","installFunc","_installGlobalOnErrorHandler","line","column","msg","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","eventFromUnknownInput","addMechanismAndCapture","_installGlobalOnUnhandledRejectionHandler","_eventFromRejectionWithPrimitive","ev0sf","colno","lineno","getHubAndOptions","LinkedErrors","parser","limit","stack","Dedupe","currentEvent","eventProcessor","_isSameStacktrace","frameA","_isSameFingerprint","_getExceptionFromEvent","_getFramesFromEvent","HttpContext","referrer","userAgent","Referer","$","add","remove","drain","clearTimeout","limits","statusCode","now","rateLimitHeader","retryAfter","categories","updatedRateLimits","makeRequest","forEachEnvelopeItem","filteredEnvelopeItems","rateLimits","recordEnvelopeLoss","send","flush","sandbox","document","fetchImpl","cachedFetchImpl","nativeFetch","referrerPolicy","keepalive","clearCachedFetchImplementation","startSessionOnHub","ignoreDuration","startSessionTracking","transport","initAndBind","browserInit","routes","matchPath","createReactRouterInstrumentation","allRoutes","activeTransaction","op","tags","matchRoutes","branch","computeRootMatch","route","match","params","isExact","objectKey","objectValue","dscKey","dscValue","acc","baggageHeaderToObject","baggageHeader","split","map","reduce","metric","reportAllChanges","delta","prevValue","performance","entryType","startTime","navigationEntry","getNavigationEntryFromPerformanceTiming","navigationType","rating","entries","opts","po","buffered","cb","removeEventListener","firstHiddenTime","onHidden","ctx","startTimestamp","getBrowserPerformanceAPI","_trackCLS","sessionValue","sessionEntries","entry","report","handleEntries","onCLS","_measurements","unit","_clsEntry","_trackLCP","reportedMetricIDs","once","capture","onLCP","_lcpEntry","_trackFID","onFID","performanceEntries","_addPerformanceNavigationTiming","_startChild","description","endTimestamp","_addRequest","_addNavigationSpans","responseStartTimestamp","requestStartTimestamp","duration","timeOrigin","_addMeasureSpans","resourceName","_addResourceSpans","_performanceCursor","_trackNavigator","measurementName","_tagMetricInfo","eventEnd","traceFetch","traceXHR","tracingOrigins","tracePropagationTargets","defaultRequestInstrumentationOptions","_options","shouldCreateSpanForRequest","stringMatchesSomePattern","shouldCreateSpan","shouldAttachHeaders","spans","newHeaders","newBaggageHeaders","baggage","fetchCallback","xhrCallback","idleTimeout","finalTimeout","heartbeatInterval","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","_experiments","enableLongTask","BrowserTracing","DEFAULT_BROWSER_TRACING_OPTIONS","startTrackingWebVitals","i","lastAccessLHS","observe","instrumentRouting","statusType","instrumentOutgoingRequests","beforeNavigate","parentSampled","traceId","parentSpanId","baggageObject","currBaggageObject","baggageHeaderToDynamicSamplingContext","context","traceParentData","trimEnd","sampled","finalContext","idleTransaction","addPerformanceEntries","Boolean","__SENTRY_TRACING__","addExtensionMethods","SentryUtil","Integrations","environment","tracesSampleRate","setTag","sentryInitialized","account_id","captureContext","Hub","top","client","beforeBreadcrumb","maxBreadcrumbs","consoleSandbox","mergedBreadcrumb","makeMain","closeSession","GLOBAL_OBJ","extensions","setHubOnCarrier","registry","hasHubOnCarrier","carrier","__SENTRY__","Scope","extras","processors","index","processor","newScope","getGlobalEventProcessors","sid","started","toJSON","did","attrs","ip_address","user_agent","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","concat","targetStatics","sourceStatics","descriptor","errorCallback","traceHeaders","sample","samplingContext","rate","Number","_startTransaction","transactionContext","customSamplingContext","transactionInstrumenter","configInstrumenter","onScope","_addTracingExtensions","mongodb","mongoose","mysql","pg","filter","_autoloadDatabaseIntegrations","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","SpanRecorder","IdleTransaction","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","clearActiveTransaction","Transaction","Span","spanContext","childSpan","logMessage","sampledString","spanId","parent_span_id","span_id","trace_id","start_timestamp","spanMetadata","sdkProcessingMetadata","transaction_info","public_key","user_segment","sample_rate","SpanClass","maybeOptions","nextStr","out","len","currentElem","_htmlElementAsString","el","keyAttrPairs","className","classes","attr","instrument","instrumented","CONSOLE_LEVELS","triggerHandlers","originalConsoleMethod","instrumentConsole","listener","refCount","handlerForType","originalAddEventListener","instrumentDOM","xhrInfo","onreadystatechangeHandler","readyStateArgs","instrumentXHR","fetchData","instrumentFetch","lastHref","instrumentHistory","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","handlers","getFetchMethod","getFetchUrl","shouldShortcircuitPreviousDebounce","previous","shouldSkipDOMEvent","makeDOMEventHandler","lastCapturedEvent","debounceTimerID","isBuiltin","wat","originalConsole","wrappedLevels","makeLogger","enable","enabled","disable","crypto","getFirstException","firstException","mod","cwd","wrapped","join","getOwnProperties","currentTarget","newObj","serializeEventTarget","obj","extractedProps","_dropUndefinedKeys","memoizationMap","returnValue","inputValue","parsers","sortedParsers","localStack","slice","reverse","output","pattern","requireExactStringMatch","testString","patterns","doc","States","SyncPromise","executor","onfulfilled","onrejected","isRejected","val","onfinally","cachedHandlers","nowSeconds","platformPerformance","dateTimestampSource","Math","threshold","_browserPerformanceTimeOriginMode","isGlobalObj","singleMatcher","RegExp","multiMatcher","decodeComponents","decodeURIComponent","err","left","right","Array","decode","tokens","encodedURI","replace","replaceMap","customDecodeURIComponent","isAbsolute","charAt","spliceOne","list","k","n","pop","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","substr","valueOf","valueEqual","isArray","every","item","aValue","bValue","addLeadingSlash","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","search","hash","createLocation","state","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","createElement","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","props","invariant","globalHistory","canUseHistory","ua","navigator","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","random","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","splice","canGo","ReactIs","arr","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","toObject","test1","String","test2","fromCharCode","test3","letter","shouldUseNative","symbols","s","isarray","pathToRegexp","compile","str","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","defaultDelimiter","delimiter","m","escaped","next","group","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","c","charCodeAt","toUpperCase","matches","flags","encode","pretty","encodeURIComponent","j","test","attachKeys","re","sensitive","strict","end","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","number","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","strictUriEncode","objectAssign","decodeComponent","keysSorter","sort","extract","queryStart","formatter","arrayFormat","accumulator","parserForArrayFormat","ret","trim","param","shift","encoderForArrayFormat","val2","x","parseUrl","aa","r","ba","d","f","g","h","l","framesToPop","ca","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","va","wa","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","Da","Ea","Fa","Ga","Ha","parentNode","tag","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","style","animation","transition","Xa","Ya","Za","$a","ab","bb","db","eb","textContent","fb","gb","y","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","ib","eventPool","jb","destructor","hb","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","extend","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","keyCode","vb","detail","wb","zb","locale","which","xb","ctrlKey","altKey","metaKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","color","date","datetime","month","range","tel","time","week","Mb","nodeName","Nb","srcElement","correspondingUseElement","nodeType","Ob","setAttribute","Pb","Rb","_valueTracker","getValue","setValue","stopTracking","Qb","Sb","checked","Tb","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","current","Ub","z","Symbol","for","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","iterator","hc","ic","$$typeof","_status","_result","jc","_debugOwner","_debugSource","lineNumber","kc","lc","mc","nc","C","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","D","rc","sc","tc","pc","isNaN","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","initialValue","controlled","xc","yc","zc","Ac","ownerDocument","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","detachEvent","Kc","Lc","attachEvent","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","view","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","dd","ed","effectTag","fd","hd","child","sibling","gd","animationName","elapsedTime","pseudoElement","jd","clipboardData","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","od","pd","dataTransfer","qd","touches","targetTouches","changedTouches","rd","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","E","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","firstChild","Ld","nextSibling","Md","contains","compareDocumentPosition","Nd","HTMLIFrameElement","contentWindow","Od","contentEditable","Qd","focusedElem","selectionRange","documentElement","start","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Rd","Sd","select","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","children","Children","Zd","ae","selected","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","ge","he","ie","je","namespaceURI","innerHTML","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","me","ne","oe","setProperty","pe","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","track","wbr","qe","is","se","blur","te","ue","ve","we","autoFocus","xe","__html","ye","ze","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","F","G","He","H","I","Ie","Je","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","J","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","ref","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","mode","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","K","Ve","isReactComponent","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","L","jf","Component","refs","kf","baseState","tf","isMounted","_reactInternalFiber","enqueueSetState","lf","nf","mf","of","pf","qf","enqueueReplaceState","rf","enqueueForceUpdate","sf","uf","shouldComponentUpdate","isPureReactComponent","vf","M","updater","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","yf","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","zf","Af","_owner","_stringRef","Bf","Cf","p","t","A","v","q","u","B","w","delete","R","done","Df","Ef","Ff","N","Gf","Hf","If","Jf","tagName","Kf","Lf","Mf","Vf","Wf","Xf","O","P","Yf","Q","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","lastRenderedReducer","dispatch","qg","lastRenderedState","eagerReducer","eagerState","rg","destroy","deps","sg","tg","ug","vg","wg","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","Uf","Pf","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","ReactCurrentOwner","S","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","Qg","Rg","pendingContext","Sg","timedOutAt","fallback","Tg","Ug","_ctor","default","hf","We","hydrate","hidden","_context","_calculateChangedBits","first","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","_currentValue","Zg","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","nh","oh","onClick","onclick","ph","WeakSet","qh","rh","sh","th","vh","componentWillUnmount","wh","xh","yh","insertBefore","_reactRootContainer","zh","wasMultiple","multiple","Ce","display","uh","Ah","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","T","Lh","U","Mh","Nh","V","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Wh","W","Xh","X","Yh","Zh","pendingCommitExpirationTime","ef","Pd","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","size","createElementNS","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","hi","ii","ji","ki","li","Y","mi","ni","oi","Z","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Ai","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","hasAttribute","Ri","Ti","querySelectorAll","commit","unmount","createBatch","Vi","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","bundleType","rendererPackageName","Wi","Xi","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","MAX_SIGNED_31_BIT_INT","createEventEmitter","on","off","newValue","changedBits","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","gud","Provider","_Component","_this","emitter","_inheritsLoose","_proto","nextProps","oldValue","Consumer","_Component2","_this2","onUpdate","_proto2","createNamedContext","createContext","Router","_isMounted","_pendingLocation","staticContext","RouterContext","Lifecycle","onMount","prevProps","onUnmount","cache","cacheCount","generatePath","generator","compilePath","Redirect","computedMatch","self","matched","cacheKey","pathCache","regexp","Route","createURL","staticHandler","methodName","noop","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","__self","__source","jsx","jsxs","forceUpdate","keyPrefix","count","escape","ReactCurrentBatchConfig","suspense","IsSomeRendererActing","toArray","only","PureComponent","cloneElement","_currentValue2","_threadCount","createFactory","createRef","forwardRef","isValidElement","priorityLevel","cancelAnimationFrame","_schedMock","MessageChannel","port2","port1","onmessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","condition","_arrayLikeToArray","arr2","_arrayWithHoles","_assertThisInitialized","ReferenceError","asyncGeneratorStep","gen","_throw","arg","info","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_createForOfIteratorHelper","o","allowArrayLike","it","_e","normalCompletion","didErr","step","_e2","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_defineProperty","_superPropBase","property","_get","receiver","desc","_getPrototypeOf","__proto__","_inherits","subClass","superClass","_isNativeReflectConstruct","sham","Proxy","_iterableToArray","iter","_nonIterableRest","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceSymbolKeys","_objectWithoutPropertiesLoose","sourceKeys","_possibleConstructorReturn","_regeneratorRuntime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","prev","stop","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_setPrototypeOf","_slicedToArray","arrayWithHoles","_i","_s","_x","_r","_arr","_n","_d","unsupportedIterableToArray","nonIterableRest","_toConsumableArray","arrayLikeToArray","iterableToArray","_toPropertyKey","prim","toPrimitive","_typeof","_unsupportedIterableToArray","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","definition","chunkId","all","promises","miniCssF","globalThis","hmd","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","charset","src","onScriptComplete","onload","doneFns","head","nmd","paths","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","code","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","EmbeddedApp","App","ReactDOM","getElementById"],"sourceRoot":""}