UNPKG

@backtrace/browser

Version:
1 lines • 356 kB
{"version":3,"file":"bundle.cjs","sources":["../../sdk-core/lib/bundle.mjs","../src/agentDefinition.ts","../../../node_modules/tslib/tslib.es6.js","../src/BacktraceBrowserRequestHandler.ts","../src/BacktraceApi.ts","../src/BacktraceBrowserSessionProvider.ts","../src/attributes/ApplicationInformationAttributeProvider.ts","../../../node_modules/ua-parser-js/src/ua-parser.js","../src/attributes/UserAgentAttributeProvider.ts","../src/attributes/UserIdentifierAttributeProvider.ts","../src/attributes/WebsiteAttributeProvider.ts","../src/attributes/WindowAttributeProvider.ts","../src/breadcrumbs/DocumentEventSubscriber.ts","../src/breadcrumbs/HistoryEventSubscriber.ts","../src/breadcrumbs/WebRequestEventSubscriber.ts","../src/builder/BacktraceClientBuilder.ts","../src/engineDetector.ts","../src/converters/JavaScriptCoreStackTraceConverter.ts","../src/converters/SpiderMonkeyStackTraceConverter.ts","../src/converters/getStackTraceConverter.ts","../src/BacktraceClient.ts","../src/redux/BacktraceReduxMiddleware.ts"],"sourcesContent":["class BacktraceReportSubmissionResult {\n    message;\n    get result() {\n        return this._result;\n    }\n    status = 'Ok';\n    _result;\n    constructor(statusOrResponse, message) {\n        this.message = message;\n        if (this.isSubmissionResponse(statusOrResponse)) {\n            this.status = statusOrResponse;\n            return;\n        }\n        this._result = statusOrResponse;\n    }\n    static OnLimitReached(target = 'Server') {\n        return new BacktraceReportSubmissionResult('Limit reached', `${target} report limit reached`);\n    }\n    static SdkDisabled() {\n        return new BacktraceReportSubmissionResult('Disabled SDK');\n    }\n    static Unsupported(message) {\n        return new BacktraceReportSubmissionResult('Unsupported', message);\n    }\n    static ReportSkipped() {\n        return new BacktraceReportSubmissionResult('Report skipped');\n    }\n    static OnInternalServerError(message) {\n        return new BacktraceReportSubmissionResult('Server Error', message);\n    }\n    static OnInvalidToken() {\n        return new BacktraceReportSubmissionResult('Invalid token');\n    }\n    static OnUnknownError(message) {\n        return new BacktraceReportSubmissionResult('Unknown', message);\n    }\n    static OnNetworkingError(message) {\n        return new BacktraceReportSubmissionResult('Network Error', message);\n    }\n    static Ok(response) {\n        return new BacktraceReportSubmissionResult(response);\n    }\n    isSubmissionResponse(statusOrResponse) {\n        return typeof statusOrResponse === 'string';\n    }\n}\n\nfunction jsonEscaper() {\n    const ancestors = [];\n    const keys = [];\n    // in TypeScript add \"this: any\" param to avoid compliation errors - as follows\n    //    return function (this: any, field: any, value: any) {\n    return function (key, value) {\n        if (value === null) {\n            return value;\n        }\n        const valueType = typeof value;\n        if (valueType === 'bigint') {\n            return value.toString();\n        }\n        if (valueType !== 'object') {\n            return value;\n        }\n        // `this` is the object that value is contained in,\n        // i.e., its direct parent.\n        while (ancestors.length > 0 && ancestors[ancestors.length - 1] !== this) {\n            ancestors.pop();\n            keys.pop();\n        }\n        if (ancestors.includes(value)) {\n            return `[Circular].${keys.filter((k) => !!k).join('.')}.${key}`;\n        }\n        keys.push(key);\n        ancestors.push(value);\n        return value;\n    };\n}\n\nclass SubmissionUrlInformation {\n    static SUBMIT_PREFIX = 'submit.backtrace.io/';\n    /**\n     * Convert url/token from credentials to JSON submission URL\n     * @param url credentials URL\n     * @param token credentials token\n     * @returns JSON submissionURL\n     */\n    static toJsonReportSubmissionUrl(url, token) {\n        // if the token doesn't exist - use URL\n        if (!token) {\n            return url;\n        }\n        // if the url points to submit, we should always use it without any modifications\n        if (url.includes(this.SUBMIT_PREFIX)) {\n            return url;\n        }\n        // if the URL has token in the URL, the user probably added a token once again\n        // in this case, don't do anything\n        if (url.indexOf(token) !== -1) {\n            return url;\n        }\n        const result = new URL(`/post`, url);\n        result.searchParams.append('format', 'json');\n        result.searchParams.append('token', token);\n        return result.href;\n    }\n    /**\n     * Converts full submission JSON URL to PlCrashReporter submission URL\n     * @param submissionUrl Backtrace Submission URL\n     */\n    static toPlCrashReporterSubmissionUrl(submissionUrl) {\n        return this.changeSubmissionFormat(submissionUrl, 'plcrash');\n    }\n    /**\n     * Converts full submission JSON URL to minidump submission URL\n     * @param submissionUrl Backtrace Submission URL\n     */\n    static toMinidumpSubmissionUrl(submissionUrl) {\n        return this.changeSubmissionFormat(submissionUrl, 'minidump');\n    }\n    static toAttachmentSubmissionUrl(submissionUrl, rxid, attachmentName) {\n        const query = `object=${rxid}&attachment_name=${attachmentName}`;\n        if (submissionUrl.includes('?')) {\n            return (submissionUrl += `&` + query);\n        }\n        return (submissionUrl += '?' + query);\n    }\n    /**\n     * Find the universe based on the submission URL\n     * @param submissionUrl submission URL - full submission URL to Backtrace.\n     * @returns universe name\n     */\n    static findUniverse(submissionUrl) {\n        const submitIndex = submissionUrl.indexOf(this.SUBMIT_PREFIX);\n        if (submitIndex !== -1) {\n            // submit format URL\n            // submit.backtrace.io/universe/token/format\n            // we can expect the universe name just after the hostname\n            const universeStartIndex = submitIndex + this.SUBMIT_PREFIX.length;\n            const endOfUniverseName = submissionUrl.indexOf('/', universeStartIndex);\n            return submissionUrl.substring(universeStartIndex, endOfUniverseName);\n        }\n        // the universe name should be available in the hostname\n        // for example abc.sp.backtrace.io or zyx.in.backtrace.io or foo.backtrace.io\n        const domainIndex = submissionUrl.indexOf('.backtrace.io');\n        if (domainIndex === -1) {\n            return undefined;\n        }\n        const protocolSeparator = '://';\n        let protocolEndIndex = submissionUrl.indexOf(protocolSeparator);\n        if (protocolEndIndex === -1) {\n            protocolEndIndex = 0;\n        }\n        else {\n            protocolEndIndex += protocolSeparator.length;\n        }\n        const hostname = submissionUrl.substring(protocolEndIndex, domainIndex);\n        const endOfUniverseName = hostname.indexOf('.');\n        return endOfUniverseName === -1 ? hostname : hostname.substring(0, endOfUniverseName);\n    }\n    static findToken(submissionUrl) {\n        const submitIndex = submissionUrl.indexOf(this.SUBMIT_PREFIX);\n        if (submitIndex !== -1) {\n            const submissionUrlParts = submissionUrl.split('/');\n            // submit format URL\n            // submit.backtrace.io/universe/token/format\n            // by spliting the submission URL by `/` and dropping the last\n            // part of the URL, the last element on the list is the token.\n            return submissionUrlParts[submissionUrlParts.length - 2] ?? null;\n        }\n        const url = new URL(submissionUrl);\n        return url.searchParams.get('token');\n    }\n    static changeSubmissionFormat(submissionUrl, desiredFormat) {\n        const submitIndex = submissionUrl.indexOf(this.SUBMIT_PREFIX);\n        if (submitIndex !== -1) {\n            const queryParametersIndex = submissionUrl.indexOf('?');\n            const queryParameters = queryParametersIndex === -1 ? '' : submissionUrl.substring(queryParametersIndex);\n            const pathname = submissionUrl.substring(submitIndex + this.SUBMIT_PREFIX.length, queryParametersIndex === -1 ? undefined : queryParametersIndex);\n            const pathParts = pathname.split('/');\n            // path parts are prefixed with '/' character. Expected and valid submit format is:\n            // /universe/token/format\n            // splitting pathname should generate at least 4 elements ('', universe, token, format)\n            // if pathParts length is not equal to 4 then the invalid were passed.\n            const expectedMinimalPathParts = 3;\n            if (pathParts.length < expectedMinimalPathParts) {\n                return submissionUrl;\n            }\n            pathParts[2] = desiredFormat;\n            return (submissionUrl.substring(0, submitIndex + this.SUBMIT_PREFIX.length) +\n                pathParts.join('/') +\n                queryParameters);\n        }\n        else {\n            const url = new URL(submissionUrl);\n            url.searchParams.set('format', desiredFormat);\n            return url.href;\n        }\n    }\n}\n\nclass RequestBacktraceReportSubmission {\n    _requestHandler;\n    _submissionUrl;\n    constructor(options, _requestHandler) {\n        this._requestHandler = _requestHandler;\n        this._submissionUrl = SubmissionUrlInformation.toJsonReportSubmissionUrl(options.url, options.token);\n    }\n    send(data, attachments, abortSignal) {\n        const json = JSON.stringify(data, jsonEscaper());\n        return this._requestHandler.postError(this._submissionUrl, json, attachments, abortSignal);\n    }\n    async sendAttachment(rxid, attachment, abortSignal) {\n        if (!this._requestHandler.postAttachment) {\n            return BacktraceReportSubmissionResult.Unsupported('postAttachment is not implemented');\n        }\n        return await this._requestHandler.postAttachment(SubmissionUrlInformation.toAttachmentSubmissionUrl(this._submissionUrl, rxid, attachment.name), attachment, abortSignal);\n    }\n}\n\nconst DEFAULT_TIMEOUT = 15_000;\n\nclass ConnectionError {\n    /**\n     * Verifies if an Error is a connection error\n     * @param err error\n     * @returns true if the error was caused by ETIMEDOUT or ECONNRESET or ECONNABORTED\n     */\n    static isConnectionError(err) {\n        const error = err;\n        return error.code === 'ETIMEDOUT' || error.code === 'ECONNRESET' || error.code === 'ECONNABORTED';\n    }\n}\n\nclass MetricsUrlInformation {\n    static generateSummedEventsUrl(hostname, submissionUrl, credentialsToken) {\n        const submissionInformation = this.findSubmissionInformation(submissionUrl, credentialsToken);\n        if (!submissionInformation) {\n            return undefined;\n        }\n        return this.generateEventsServiceUrl(hostname, 'summed-events', submissionInformation.universe, submissionInformation.token);\n    }\n    static generateUniqueEventsUrl(hostname, submissionUrl, credentialsToken) {\n        const submissionInformation = this.findSubmissionInformation(submissionUrl, credentialsToken);\n        if (!submissionInformation) {\n            return undefined;\n        }\n        return this.generateEventsServiceUrl(hostname, 'unique-events', submissionInformation.universe, submissionInformation.token);\n    }\n    static generateEventsServiceUrl(hostname, eventServiceName, universe, token) {\n        return new URL(`/api/${eventServiceName}/submit?universe=${universe}&token=${token}`, hostname).toString();\n    }\n    static findSubmissionInformation(submissionUrl, token) {\n        const universe = SubmissionUrlInformation.findUniverse(submissionUrl);\n        if (!universe) {\n            return undefined;\n        }\n        token = token ?? SubmissionUrlInformation.findToken(submissionUrl);\n        if (!token) {\n            return undefined;\n        }\n        return { universe, token };\n    }\n}\n\nclass BacktraceCoreApi {\n    _requestHandler;\n    _summedMetricsSubmissionUrl;\n    _uniqueMetricsSubmissionUrl;\n    _requestBacktraceReportSubmission;\n    constructor(options, _requestHandler) {\n        this._requestHandler = _requestHandler;\n        this._summedMetricsSubmissionUrl = MetricsUrlInformation.generateSummedEventsUrl(options.metrics?.url ?? 'https://events.backtrace.io', options.url, options.token);\n        this._uniqueMetricsSubmissionUrl = MetricsUrlInformation.generateUniqueEventsUrl(options.metrics?.url ?? 'https://events.backtrace.io', options.url, options.token);\n        this._requestBacktraceReportSubmission =\n            options.requestBacktraceReportSubmission ??\n                new RequestBacktraceReportSubmission({\n                    url: options.url,\n                }, this._requestHandler);\n    }\n    sendReport(data, attachments, abortSignal) {\n        return this._requestBacktraceReportSubmission.send(data, attachments, abortSignal);\n    }\n    sendAttachment(rxid, attachment, abortSignal) {\n        return this._requestBacktraceReportSubmission.sendAttachment(rxid, attachment, abortSignal);\n    }\n    sendUniqueMetrics(metrics, abortSignal) {\n        if (!this._uniqueMetricsSubmissionUrl) {\n            throw new Error('Unique metrics URL is not available.');\n        }\n        return this._requestHandler.post(this._uniqueMetricsSubmissionUrl, JSON.stringify(metrics), abortSignal);\n    }\n    sendSummedMetrics(metrics, abortSignal) {\n        if (!this._summedMetricsSubmissionUrl) {\n            throw new Error('Summed metrics URL is not available.');\n        }\n        return this._requestHandler.post(this._summedMetricsSubmissionUrl, JSON.stringify(metrics), abortSignal);\n    }\n}\n\nclass Events {\n    _callbacks = {};\n    on(event, callback) {\n        this.addCallback(event, { callback });\n        return this;\n    }\n    once(event, callback) {\n        this.addCallback(event, { callback, once: true });\n        return this;\n    }\n    off(event, callback) {\n        this.removeCallback(event, callback);\n        return this;\n    }\n    emit(event, ...args) {\n        const callbacks = this._callbacks[event];\n        if (!callbacks || !callbacks.length) {\n            return false;\n        }\n        for (const { callback, once } of [...callbacks]) {\n            try {\n                callback(...args);\n            }\n            catch {\n                // Do nothing\n            }\n            if (once) {\n                this.removeCallback(event, callback);\n            }\n        }\n        return true;\n    }\n    addCallback(event, callback) {\n        const list = this._callbacks[event];\n        if (list) {\n            list.push(callback);\n        }\n        else {\n            this._callbacks[event] = [callback];\n        }\n    }\n    removeCallback(event, callback) {\n        const list = this._callbacks[event];\n        if (!list) {\n            return;\n        }\n        const index = list.findIndex((el) => el.callback === callback);\n        if (index === -1) {\n            return;\n        }\n        list.splice(index, 1);\n        if (!list.length) {\n            delete this._callbacks[event];\n        }\n    }\n}\n\nclass TimeHelper {\n    static now() {\n        return Date.now();\n    }\n    static toTimestampInSec(timestampMs) {\n        return Math.floor(timestampMs / 1000);\n    }\n    static convertSecondsToMilliseconds(timeInSec) {\n        return timeInSec * 1000;\n    }\n}\n\nclass BacktraceReport {\n    data;\n    attributes;\n    attachments;\n    /**\n     * Report classifiers\n     */\n    classifiers = [];\n    /**\n     * Report annotations\n     */\n    annotations = {};\n    /**\n     * Report stack trace\n     */\n    stackTrace = {};\n    /**\n     * Report message\n     */\n    message;\n    /**\n     * Report inner errors\n     */\n    innerReport = [];\n    /**\n     * Report timestamp in ms\n     */\n    timestamp = TimeHelper.now();\n    /**\n     * Sets how many top frames should be skipped.\n     */\n    skipFrames = 0;\n    addStackTrace(name, stack, message = '') {\n        if (typeof stack === 'string') {\n            this.stackTrace[name] = {\n                stack,\n                message,\n            };\n        }\n        else {\n            this.stackTrace[name] = stack;\n        }\n        return this;\n    }\n    constructor(data, attributes = {}, attachments = [], options = {}) {\n        this.data = data;\n        this.attributes = attributes;\n        this.attachments = attachments;\n        this.skipFrames = options?.skipFrames ?? 0;\n        let errorType = 'Exception';\n        if (data instanceof Error) {\n            this.message = this.generateErrorMessage(data.message);\n            this.annotations['error'] = {\n                ...data,\n                message: this.message,\n                name: data.name,\n                stack: data.stack,\n            };\n            this.classifiers = [data.name];\n            this.stackTrace['main'] = {\n                stack: data.stack ?? '',\n                message: this.message,\n            };\n            // Supported in ES2022\n            if (data.cause) {\n                this.innerReport.push(data.cause);\n            }\n        }\n        else {\n            this.message = this.generateErrorMessage(data);\n            this.stackTrace['main'] = {\n                stack: new Error().stack ?? '',\n                message: this.message,\n            };\n            this.classifiers = ['Message'];\n            errorType = 'Message';\n            this.skipFrames += 1;\n        }\n        if (!this.attributes['error.type']) {\n            this.attributes['error.type'] = errorType;\n        }\n        this.attributes['error.message'] = this.message;\n        if (options?.timestamp) {\n            this.timestamp = options.timestamp;\n        }\n        if (options?.classifiers) {\n            this.classifiers.unshift(...options.classifiers);\n        }\n    }\n    generateErrorMessage(data) {\n        return typeof data === 'object' ? JSON.stringify(data, jsonEscaper()) : (data?.toString() ?? '');\n    }\n}\n\nclass AttachmentManager {\n    attachmentEvents;\n    _attachmentProviders = [];\n    constructor() {\n        this.attachmentEvents = new Events();\n    }\n    /**\n     * Adds attachment to manager cache.\n     * @param attachments attachments or attachment returning functions\n     */\n    add(...attachments) {\n        this.addProviders(...attachments.map((a) => typeof a === 'function'\n            ? {\n                type: 'dynamic',\n                get: a,\n            }\n            : {\n                type: 'scoped',\n                get: () => a,\n            }));\n    }\n    /**\n     * Adds `BacktraceAttachmentProvider` to manager cache.\n     * @param attachmentProviders attachment providers\n     */\n    addProviders(...attachmentProviders) {\n        let anyScoped = false;\n        for (const provider of attachmentProviders) {\n            if (provider.type === 'dynamic') {\n                this._attachmentProviders.push(provider);\n            }\n            else {\n                const attachment = provider.get();\n                this._attachmentProviders.push({\n                    type: 'scoped',\n                    get: () => attachment,\n                });\n                anyScoped = true;\n            }\n        }\n        if (anyScoped) {\n            this.attachmentEvents.emit('scoped-attachments-updated', this.get('scoped'));\n        }\n    }\n    /**\n     * Returns scoped, dynamic, or all attachments.\n     * @param type optional type to filter attachments\n     * @returns array of `BacktraceAttachment`\n     */\n    get(type) {\n        const result = [];\n        for (const provider of this._attachmentProviders) {\n            if (type && provider.type !== type) {\n                continue;\n            }\n            const attachment = provider.get();\n            if (!attachment) {\n                continue;\n            }\n            if (Array.isArray(attachment)) {\n                result.push(...attachment);\n            }\n            else {\n                result.push(attachment);\n            }\n        }\n        return result;\n    }\n}\n\nclass ReportDataBuilder {\n    static build(attributes) {\n        const result = { annotations: {}, attributes: {} };\n        if (!attributes) {\n            return result;\n        }\n        for (const attributeKey in attributes) {\n            const attribute = attributes[attributeKey];\n            if (attribute == null) {\n                result.attributes[attributeKey] = attribute;\n                continue;\n            }\n            switch (typeof attribute) {\n                case 'object': {\n                    result.annotations[attributeKey] = attribute;\n                    break;\n                }\n                case 'bigint': {\n                    result.attributes[attributeKey] = attribute.toString();\n                    break;\n                }\n                default: {\n                    result.attributes[attributeKey] = attribute;\n                    break;\n                }\n            }\n        }\n        return result;\n    }\n}\n\nclass AttributeManager {\n    attributeEvents;\n    _attributeProviders = [];\n    constructor(providers) {\n        this.attributeEvents = new Events();\n        for (const provider of providers) {\n            this.addProvider(provider);\n        }\n    }\n    /**\n     * Adds attributes to manager cache\n     * @param attributes attributes object\n     */\n    add(attributes) {\n        if (typeof attributes === 'function') {\n            this.addProvider({ type: 'dynamic', get: attributes });\n        }\n        else {\n            this.addProvider({ type: 'scoped', get: () => attributes });\n        }\n    }\n    /**\n     * Adds attribute provider to the manager\n     * @param attributeProvider\n     * @returns\n     */\n    addProvider(attributeProvider) {\n        if (attributeProvider.type === 'dynamic') {\n            this._attributeProviders.push(attributeProvider);\n            return;\n        }\n        else {\n            const attributes = attributeProvider.get();\n            this._attributeProviders.push({\n                type: 'scoped',\n                get: () => attributes,\n            });\n            this.attributeEvents.emit('scoped-attributes-updated', this.get('scoped'));\n        }\n    }\n    /**\n     * Gets client attributes\n     * @returns Report attribute - client attributes and annotations\n     */\n    get(attributeType) {\n        const result = {\n            annotations: {},\n            attributes: {},\n        };\n        for (const attributeProvider of this._attributeProviders) {\n            if (attributeType && attributeProvider.type != attributeType) {\n                continue;\n            }\n            const providerResult = ReportDataBuilder.build(attributeProvider.get());\n            result.attributes = {\n                ...result.attributes,\n                ...providerResult.attributes,\n            };\n            result.annotations = {\n                ...result.annotations,\n                ...providerResult.annotations,\n            };\n        }\n        return result;\n    }\n}\n\nclass ClientAttributeProvider {\n    _sdkName;\n    _sdkVersion;\n    _sessionId;\n    constructor(_sdkName, _sdkVersion, _sessionId) {\n        this._sdkName = _sdkName;\n        this._sdkVersion = _sdkVersion;\n        this._sessionId = _sessionId;\n    }\n    get type() {\n        return 'scoped';\n    }\n    get() {\n        return {\n            'application.session': this._sessionId,\n            'backtrace.agent': this._sdkName,\n            'backtrace.version': this._sdkVersion,\n        };\n    }\n}\n\nclass UserAttributeProvider {\n    type;\n    _source;\n    constructor(source) {\n        this._source = typeof source === 'function' ? source : () => source;\n        this.type = typeof source === 'function' ? 'dynamic' : 'scoped';\n    }\n    get() {\n        return this._source();\n    }\n}\n\nfunction stringifiedSize(value) {\n    return JSON.stringify(value).length;\n}\nfunction toStringSize(value) {\n    return value.toString().length;\n}\nconst stringSize = (value) => stringifiedSize(value);\nconst numberSize = (toStringSize);\nconst bigintSize = (toStringSize);\nconst symbolSize = 0;\nconst functionSize = 0;\nconst booleanSize = (value) => (value ? 4 : 5);\nconst undefinedSize = 0;\nconst nullSize = 'null'.length;\nfunction arraySize(array, replacer) {\n    const bracketLength = 2;\n    const commaLength = array.length - 1;\n    let elementsLength = 0;\n    for (let i = 0; i < array.length; i++) {\n        const element = array[i];\n        switch (typeof element) {\n            case 'function':\n            case 'symbol':\n            case 'undefined':\n                elementsLength += nullSize;\n                break;\n            default:\n                elementsLength += _jsonSize(array, i.toString(), element, replacer);\n        }\n    }\n    return bracketLength + commaLength + elementsLength;\n}\nconst objectSize = (obj, replacer) => {\n    const entries = Object.entries(obj);\n    const bracketLength = 2;\n    let entryCount = 0;\n    let entriesLength = 0;\n    for (const [k, v] of entries) {\n        const valueSize = _jsonSize(obj, k, v, replacer);\n        if (valueSize === 0) {\n            continue;\n        }\n        entryCount++;\n        // +1 adds the comma size\n        entriesLength += keySize(k) + valueSize + 1;\n    }\n    // -1 removes previously added last comma size (there is no trailing comma)\n    const commaLength = Math.max(0, entryCount - 1);\n    return bracketLength + commaLength + entriesLength;\n};\nfunction keySize(key) {\n    const QUOTE_SIZE = 2;\n    if (key === null) {\n        return nullSize + QUOTE_SIZE;\n    }\n    else if (key === undefined) {\n        return '\"undefined\"'.length;\n    }\n    switch (typeof key) {\n        case 'string':\n            return stringSize(key);\n        case 'number':\n            return numberSize(key) + QUOTE_SIZE;\n        case 'boolean':\n            return booleanSize(key) + QUOTE_SIZE;\n        case 'symbol':\n            return symbolSize; // key not used in JSON\n        default:\n            return stringSize(key.toString());\n    }\n}\nfunction _jsonSize(parent, key, value, replacer) {\n    if (value && typeof value === 'object' && 'toJSON' in value && typeof value.toJSON === 'function') {\n        value = value.toJSON();\n    }\n    value = replacer ? replacer.call(parent, key, value) : value;\n    if (value === null) {\n        return nullSize;\n    }\n    else if (value === undefined) {\n        return undefinedSize;\n    }\n    if (Array.isArray(value)) {\n        return arraySize(value, replacer);\n    }\n    switch (typeof value) {\n        case 'bigint':\n            return bigintSize(value);\n        case 'boolean':\n            return booleanSize(value);\n        case 'function':\n            return functionSize;\n        case 'number':\n            return numberSize(value);\n        case 'object':\n            return objectSize(value, replacer);\n        case 'string':\n            return stringSize(value);\n        case 'symbol':\n            return symbolSize;\n        case 'undefined':\n            return undefinedSize;\n    }\n    return 0;\n}\n/**\n * Calculates size of the object as it would be serialized into JSON.\n *\n * _Should_ return the same value as `JSON.stringify(value, replacer).length`.\n * This may not be 100% accurate, but should work for our requirements.\n * @param value Value to compute length for.\n * @param replacer A function that transforms the results as in `JSON.stringify`.\n * @returns Final string length.\n */\nfunction jsonSize(value, replacer) {\n    return _jsonSize(undefined, '', value, replacer);\n}\n\nconst REMOVED_PLACEHOLDER = '<removed>';\nfunction limitObjectDepth(obj, depth) {\n    if (!(depth < Infinity)) {\n        return obj;\n    }\n    if (depth < 0) {\n        return REMOVED_PLACEHOLDER;\n    }\n    const limitIfObject = (value) => typeof value === 'object' && value ? limitObjectDepth(value, depth - 1) : value;\n    const result = {};\n    for (const key in obj) {\n        const value = obj[key];\n        if (Array.isArray(value)) {\n            result[key] = value.map(limitIfObject);\n        }\n        else {\n            result[key] = limitIfObject(value);\n        }\n    }\n    return result;\n}\n\nfunction textFormatter() {\n    const defaultFormatter = fallbackFormatter(jsonEscaper());\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-var-requires\n        const util = require('util');\n        return util.format ?? defaultFormatter;\n    }\n    catch {\n        return defaultFormatter;\n    }\n}\nfunction fallbackFormatter(jsonEscapeFunction) {\n    return function fallbackFormatter(...params) {\n        let result = '';\n        for (const param of params) {\n            result += typeof param === 'object' ? JSON.stringify(param, jsonEscapeFunction) : param?.toString();\n        }\n        return result;\n    };\n}\n\nvar BreadcrumbLogLevel;\n(function (BreadcrumbLogLevel) {\n    BreadcrumbLogLevel[BreadcrumbLogLevel[\"Verbose\"] = 1] = \"Verbose\";\n    BreadcrumbLogLevel[BreadcrumbLogLevel[\"Debug\"] = 2] = \"Debug\";\n    BreadcrumbLogLevel[BreadcrumbLogLevel[\"Info\"] = 4] = \"Info\";\n    BreadcrumbLogLevel[BreadcrumbLogLevel[\"Warning\"] = 8] = \"Warning\";\n    BreadcrumbLogLevel[BreadcrumbLogLevel[\"Error\"] = 16] = \"Error\";\n})(BreadcrumbLogLevel || (BreadcrumbLogLevel = {}));\nconst defaultBreadcrumbsLogLevel = (1 << 5) - 1;\n\nvar BreadcrumbType;\n(function (BreadcrumbType) {\n    BreadcrumbType[BreadcrumbType[\"Manual\"] = 1] = \"Manual\";\n    BreadcrumbType[BreadcrumbType[\"Log\"] = 2] = \"Log\";\n    BreadcrumbType[BreadcrumbType[\"Navigation\"] = 4] = \"Navigation\";\n    BreadcrumbType[BreadcrumbType[\"Http\"] = 8] = \"Http\";\n    BreadcrumbType[BreadcrumbType[\"System\"] = 16] = \"System\";\n    BreadcrumbType[BreadcrumbType[\"User\"] = 32] = \"User\";\n    BreadcrumbType[BreadcrumbType[\"Configuration\"] = 64] = \"Configuration\";\n})(BreadcrumbType || (BreadcrumbType = {}));\nconst defaultBreadcurmbType = (1 << 7) - 1;\n\nclass ConsoleEventSubscriber {\n    /**\n     * All overriden console events\n     */\n    _events = {};\n    _formatter;\n    start(backtraceBreadcrumbs) {\n        if ((backtraceBreadcrumbs.breadcrumbsType & BreadcrumbType.Log) !== BreadcrumbType.Log) {\n            return;\n        }\n        this._formatter = textFormatter();\n        this.bindToConsoleMethod('log', BreadcrumbLogLevel.Info, backtraceBreadcrumbs);\n        this.bindToConsoleMethod('warn', BreadcrumbLogLevel.Warning, backtraceBreadcrumbs);\n        this.bindToConsoleMethod('error', BreadcrumbLogLevel.Error, backtraceBreadcrumbs);\n        this.bindToConsoleMethod('debug', BreadcrumbLogLevel.Debug, backtraceBreadcrumbs);\n        this.bindToConsoleMethod('trace', BreadcrumbLogLevel.Verbose, backtraceBreadcrumbs);\n    }\n    dispose() {\n        for (const key in this._events) {\n            const consoleMethod = this._events[key];\n            console[key] = consoleMethod;\n        }\n    }\n    bindToConsoleMethod(name, level, backtraceBreadcrumbs) {\n        const originalMethod = console[name];\n        console[name] = (...args) => {\n            originalMethod(...args);\n            const message = this._formatter(...args);\n            backtraceBreadcrumbs.addBreadcrumb(message, level, BreadcrumbType.Log);\n        };\n        this._events[name] = originalMethod;\n    }\n}\n\n/**\n * Constrains `value` to `min` and `max` values, wrapping not matching values around.\n * @param min minimum value to allow\n * @param max maximum value to allow\n * @returns function accepting `value`\n *\n * @example\n * const wrap = wrapped(10, 20);\n * console.log(wrap(15)); // 15\n * console.log(wrap(21)); // 10, wrapped around\n * console.log(wrap(8)); // 18, wrapped around\n */\nfunction wrapped(min, max) {\n    function wrapped(value) {\n        const range = max - min;\n        let newValue;\n        if (value < min) {\n            newValue = max - ((min - value) % range);\n            if (newValue === max) {\n                newValue = min;\n            }\n        }\n        else if (value >= max) {\n            newValue = min + ((value - max) % range);\n            if (newValue === max) {\n                newValue = min;\n            }\n        }\n        else {\n            newValue = value;\n        }\n        return newValue;\n    }\n    return wrapped;\n}\n/**\n * Constrains `value` to `min` and `max` values.\n * @param min minimum value to allow\n * @param max maximum value to allow\n * @returns function accepting `value`\n *\n * @example\n * const clamp = clamped(10, 20);\n * console.log(wrap(15)); // 15\n * console.log(wrap(21)); // 20\n * console.log(wrap(8)); // 10\n */\nfunction clamped(min, max) {\n    function clamped(value) {\n        return Math.max(min, Math.min(value, max));\n    }\n    return clamped;\n}\n\nclass OverwritingArray {\n    capacity;\n    _array;\n    _headConstraint;\n    _lengthConstraint;\n    _head = 0;\n    _length = 0;\n    get head() {\n        return this._head;\n    }\n    set head(value) {\n        this._head = this._headConstraint(value);\n    }\n    get length() {\n        return this._length;\n    }\n    set length(value) {\n        this._length = this._lengthConstraint(value);\n    }\n    get start() {\n        return this._headConstraint(this.head - this.length);\n    }\n    constructor(capacity, items) {\n        this.capacity = capacity;\n        this._array = new Array(capacity);\n        // Head must be always between 0 and capacity.\n        // If lower than 0, it needs to go from the end\n        // If larger than capacity, it needs to go from the start\n        // Wrapping solves this\n        this._headConstraint = wrapped(0, capacity);\n        // Length must be always no less than 0 and no larger than capacity\n        this._lengthConstraint = clamped(0, capacity);\n        if (items) {\n            this.push(...items);\n        }\n    }\n    add(item) {\n        return this.pushOne(item);\n    }\n    push(...items) {\n        for (const item of items) {\n            this.pushOne(item);\n        }\n        return this.length;\n    }\n    pop() {\n        this.head--;\n        const element = this._array[this.head];\n        this._array[this.head] = undefined;\n        this.length--;\n        return element;\n    }\n    shift() {\n        const element = this._array[this.start];\n        this._array[this.start] = undefined;\n        this.length--;\n        return element;\n    }\n    at(index) {\n        return this._array[this.index(index)];\n    }\n    *values() {\n        for (let i = 0; i < this.length; i++) {\n            const index = this.index(i);\n            yield this._array[index];\n        }\n    }\n    *keys() {\n        for (let i = 0; i < this.length; i++) {\n            yield i;\n        }\n    }\n    *entries() {\n        for (let i = 0; i < this.length; i++) {\n            const index = this.index(i);\n            yield [i, this._array[index]];\n        }\n    }\n    [Symbol.iterator]() {\n        return this.values();\n    }\n    pushOne(item) {\n        this._array[this.head] = item;\n        this.head++;\n        this.length++;\n    }\n    index(value) {\n        if (!this.length) {\n            return this._headConstraint(value);\n        }\n        const index = (value % this.length) + this.start;\n        return this._headConstraint(index);\n    }\n}\n\nclass InMemoryBreadcrumbsStorage {\n    _limits;\n    get lastBreadcrumbId() {\n        return this._lastBreadcrumbId;\n    }\n    /**\n     * Breadcrumb name\n     */\n    name = 'bt-breadcrumbs-0';\n    _lastBreadcrumbId = TimeHelper.toTimestampInSec(TimeHelper.now());\n    _breadcrumbs;\n    _breadcrumbSizes;\n    constructor(_limits) {\n        this._limits = _limits;\n        this._breadcrumbs = new OverwritingArray(_limits.maximumBreadcrumbs ?? 100);\n        this._breadcrumbSizes = new OverwritingArray(this._breadcrumbs.capacity);\n    }\n    getAttachments() {\n        return [this];\n    }\n    getAttachmentProviders() {\n        return [\n            {\n                get: () => this,\n                type: 'scoped',\n            },\n        ];\n    }\n    static factory({ limits }) {\n        return new InMemoryBreadcrumbsStorage(limits);\n    }\n    /**\n     * Returns breadcrumbs in the JSON format\n     * @returns Breadcrumbs JSON\n     */\n    get() {\n        return JSON.stringify([...this._breadcrumbs], jsonEscaper());\n    }\n    add(rawBreadcrumb) {\n        this._lastBreadcrumbId++;\n        const id = this._lastBreadcrumbId;\n        const breadcrumb = {\n            id,\n            message: rawBreadcrumb.message,\n            timestamp: TimeHelper.now(),\n            type: BreadcrumbType[rawBreadcrumb.type].toLowerCase(),\n            level: BreadcrumbLogLevel[rawBreadcrumb.level].toLowerCase(),\n        };\n        if (rawBreadcrumb.attributes) {\n            breadcrumb.attributes = rawBreadcrumb.attributes;\n        }\n        this._breadcrumbs.add(breadcrumb);\n        if (this._limits.maximumTotalBreadcrumbsSize) {\n            const size = jsonSize(breadcrumb, jsonEscaper());\n            this._breadcrumbSizes.add(size);\n            let totalSize = this.totalSize();\n            while (totalSize > this._limits.maximumTotalBreadcrumbsSize) {\n                this._breadcrumbs.shift();\n                const removedSize = this._breadcrumbSizes.shift() ?? 0;\n                // We subtract removedSize plus comma in JSON\n                totalSize -= removedSize + 1;\n            }\n        }\n        return id;\n    }\n    totalSize() {\n        let sum = 0;\n        for (const size of this._breadcrumbSizes) {\n            sum += size;\n        }\n        // Sum of:\n        // - all breadcrumbs\n        // - comma count\n        // - brackets\n        return sum + Math.max(0, this._breadcrumbSizes.length - 1) + 2;\n    }\n}\n\nconst BREADCRUMB_ATTRIBUTE_NAME = 'breadcrumbs.lastId';\n/**\n * @returns `undefined` if value is `false`, else `value` if defined, else `defaultValue`\n */\nconst defaultIfNotFalse = (value, defaultValue) => {\n    return value === false ? undefined : value !== undefined ? value : defaultValue;\n};\nclass BreadcrumbsManager {\n    /**\n     * Breadcrumbs type\n     */\n    breadcrumbsType;\n    /**\n     * Breadcrumbs Log level\n     */\n    logLevel;\n    /**\n     * Determines if the breadcrumb manager is enabled.\n     */\n    _enabled = false;\n    _limits;\n    _eventSubscribers = [new ConsoleEventSubscriber()];\n    _interceptor;\n    _storage;\n    constructor(configuration, options) {\n        this._limits = {\n            maximumBreadcrumbs: defaultIfNotFalse(configuration?.maximumBreadcrumbs, 100),\n            maximumAttributesDepth: defaultIfNotFalse(configuration?.maximumAttributesDepth, 2),\n            maximumBreadcrumbMessageLength: defaultIfNotFalse(configuration?.maximumBreadcrumbMessageLength, 255),\n            maximumBreadcrumbSize: defaultIfNotFalse(configuration?.maximumBreadcrumbSize, 64 * 1024),\n            maximumTotalBreadcrumbsSize: defaultIfNotFalse(configuration?.maximumTotalBreadcrumbsSize, 1024 * 1024),\n        };\n        this.breadcrumbsType = configuration?.eventType ?? defaultBreadcurmbType;\n        this.logLevel = configuration?.logLevel ?? defaultBreadcrumbsLogLevel;\n        this._storage = (options?.storage ?? InMemoryBreadcrumbsStorage.factory)({ limits: this._limits });\n        this._interceptor = configuration?.intercept;\n        if (options?.subscribers) {\n            this._eventSubscribers.push(...options.subscribers);\n        }\n    }\n    addEventSubscriber(subscriber) {\n        if (this._enabled) {\n            subscriber.start(this);\n        }\n        this._eventSubscribers.push(subscriber);\n    }\n    setStorage(storage) {\n        if (typeof storage === 'function') {\n            this._storage = storage({ limits: this._limits });\n        }\n        else {\n            this._storage = storage;\n        }\n    }\n    dispose() {\n        this._enabled = false;\n        for (const subscriber of this._eventSubscribers) {\n            subscriber.dispose();\n        }\n    }\n    bind({ client, attachmentManager }) {\n        if (this._storage.getAttachmentProviders) {\n            attachmentManager.addProviders(...this._storage.getAttachmentProviders());\n        }\n        else {\n            attachmentManager.add(...this._storage.getAttachments());\n        }\n        client.addAttribute(() => ({\n            [BREADCRUMB_ATTRIBUTE_NAME]: this._storage.lastBreadcrumbId,\n        }));\n        client.on('before-skip', (report) => this.logReport(report));\n    }\n    initialize() {\n        if (this._enabled) {\n            return;\n        }\n        for (const subscriber of this._eventSubscribers) {\n            subscriber.start(this);\n        }\n        this._enabled = true;\n    }\n    verbose(message, attributes) {\n        return this.log(message, BreadcrumbLogLevel.Verbose, attributes);\n    }\n    debug(message, attributes) {\n        return this.log(message, BreadcrumbLogLevel.Debug, attributes);\n    }\n    info(message, attributes) {\n        return this.log(message, BreadcrumbLogLevel.Info, attributes);\n    }\n    warn(message, attributes) {\n        return this.log(message, BreadcrumbLogLevel.Warning, attributes);\n    }\n    error(message, attributes) {\n        return this.log(message, BreadcrumbLogLevel.Error, attributes);\n    }\n    log(message, level, attributes) {\n        return this.addBreadcrumb(message, level, BreadcrumbType.Manual, attributes);\n    }\n    logReport(report) {\n        const level = report.data instanceof Error ? BreadcrumbLogLevel.Error : BreadcrumbLogLevel.Warning;\n        return this.addBreadcrumb(report.message, level, BreadcrumbType.System);\n    }\n    addBreadcrumb(message, level, type, attributes) {\n        if (!this._enabled) {\n            return false;\n        }\n        let rawBreadcrumb = {\n            message: this.prepareBreadcrumbMessage(message),\n            level,\n            type,\n            attributes,\n        };\n        if (this._interceptor) {\n            const interceptorBreadcrumb = this._interceptor(rawBreadcrumb);\n            if (!interceptorBreadcrumb) {\n                return false;\n            }\n            rawBreadcrumb = interceptorBreadcrumb;\n        }\n        if ((this.logLevel & rawBreadcrumb.level) !== level) {\n            return false;\n        }\n        if ((this.breadcrumbsType & rawBreadcrumb.type) !== type) {\n            return false;\n        }\n        if (this._limits.maximumBreadcrumbMessageLength !== undefined) {\n            rawBreadcrumb.message = rawBreadcrumb.message.substring(0, this._limits.maximumBreadcrumbMessageLength);\n        }\n        let limitedBreadcrumb;\n        if (this._limits.maximumAttributesDepth !== undefined && rawBreadcrumb.attributes) {\n            limitedBreadcrumb = {\n                ...rawBreadcrumb,\n                attributes: limitObjectDepth(rawBreadcrumb.attributes, this._limits.maximumAttributesDepth),\n            };\n        }\n        else {\n            limitedBreadcrumb = rawBreadcrumb;\n        }\n        if (this._limits.maximumBreadcrumbSize !== undefined) {\n            const breadcrumbSize = jsonSize(limitedBreadcrumb, jsonEscaper());\n            if (breadcrumbSize > this._limits.maximumBreadcrumbSize) {\n                // TODO: Trim the breadcrumb\n                return false;\n            }\n        }\n        const id = this._storage.add(limitedBreadcrumb);\n        return id !== undefined;\n    }\n    /**\n     * The expectation is, message should always be defined and passed as string.\n     * However, logger can pass as a message an object or any other unknown type.\n     * To be sure the code won't break, this method ensures the message is always a string\n     * no matter what the logger gives us.\n     * @param message breadcrumb message\n     */\n    prepareBreadcrumbMessage(message) {\n        if (message == null) {\n            return '';\n        }\n        const messageType = typeof message;\n        switch (messageType) {\n            case 'string': {\n                return message;\n            }\n            case 'object': {\n                return JSON.stringify(message, jsonEscaper());\n            }\n            default: {\n                return message.toString();\n            }\n        }\n    }\n}\n\nconst UNKNOWN_FRAME = 'unknown';\nconst ANONYMOUS_FUNCTION = 'anonymous';\n\nclass V8StackTraceConverter {\n    addressSeparator;\n    get engine() {\n        return 'v8';\n    }\n    constructor(addressSeparator = '') {\n        this.addressSeparator = addressSeparator;\n    }\n    convert(stackTrace, message) {\n        const result = [];\n        let stackFrames = stackTrace.split('\\n');\n        const errorHeader = message.split('\\n');\n        // remove error header from stack trace - if the error header exists\n        if (stackFrames[0].indexOf(errorHeader[0]) !== -1) {\n            stackFrames = stackFrames.slice(errorHeader.length);\n        }\n        else {\n            stackFrames = stackFrames.slice(1);\n        }\n        for (const stackFrame of stackFrames) {\n            const normalizedStackFrame = stackFrame.trim();\n            if (!normalizedStackFrame) {\n                continue;\n            }\n            const frame = this.parseFrame(normalizedStackFrame);\n            result.push(frame);\n        }\n        return result;\n    }\n    parseFrame(stackFrame) {\n        const frameSeparator = 'at ';\n        if (!stackFrame.startsWith(frameSeparator)) {\n            return {\n                funcName: stackFrame,\n                library: UNKNOWN_FRAME,\n            };\n        }\n        stackFrame = stackFrame.substring(stackFrame.indexOf(frameSeparator) + frameSeparator.length);\n        const asyncKeyword = 'async ';\n        const sourceCodeSeparator = ' (';\n        let sourceCodeStartIndex = stackFrame.indexOf(sourceCodeSeparator);\n        const anonymousFunction = sourceCodeStartIndex === -1;\n        if (anonymousFunction) {\n            if (stackFrame.startsWith(asyncKeyword)) {\n                stackFrame = stackFrame.substring(asyncKeyword.length);\n            }\n            return {\n                funcName: ANONYMOUS_FUNCTION,\n                ...this.parseSourceCodeInformation(stackFrame),\n            };\n        }\n        let sourceCodeInformation = stackFrame.substring(sourceCodeStartIndex + sourceCodeSeparator.length - 1, stackFrame.length);\n        const anonymousGenericSymbol = '(<anonymous>)';\n        if (sourceCodeInformation.startsWith(anonymousGenericSymbol)) {\n            sourceCodeStartIndex += anonymousGenericSymbol.length + 1;\n            sourceCodeInformation = sourceCodeInformation.substring(anonymousGenericSymbol.length);\n        }\n        if (sourceCodeInformation.startsWith(` ${frameSeparator}`)) {\n            sourceCodeInformation = sourceCodeInformation.substring(frameSeparator.length + 1);\n        }\n        else {\n            sourceCodeInformation = sourceCodeInformation.substring(1, sourceCodeInformation.length - 1);\n        }\n        let functionName = stackFrame.substring(0, sourceCodeStartIndex);\n        if (functionName.startsWith(asyncKeyword)) {\n            functionName = functionName.substring(asyncKeyword.length);\n        }\n        return {\n            funcName: functionName,\n            ...this.parseSourceCodeInformation(sourceCodeInformation),\n        };\n    }\n    parseSourceCodeInformation(sourceCodeInformation) {\n        if (sourceCodeInformation.startsWith('eval')) {\n            return this.extractEvalInformation(sourceCodeInformation);\n        }\n        if (this.addressSeparator && sourceCodeInformation.startsWith(this.addressSeparator)) {\n            sourceCodeInformation = sourceCodeInformation.substring(this.addressSeparator.length).trimStart();\n        }\n        const sourceCodeParts = sourceCodeInformation.split(':');\n        const column = parseInt(sourceCodeParts[sourceCodeParts.length - 1]);\n        const lineNumber = parseInt(sourceCodeParts[sourceCodeParts.length - 2]);\n        const library = sourceCodeParts.slice(0, sourceCodeParts.length - 2).join(':');\n        return {\n            library,\n            column: isNaN(column) ? undefined : column,\n            line: isNaN(lineNumber) ? undefined : lineNumber,\n        };\n    }\n    extractEvalInformation(evalSourceCodeInformation) {\n        const sourceCodeStartSeparatorChar = '(';\n        const sourceCodeEndSeparatorChar = ')';\n        const sourceCodeStart = evalSourceCodeInformation.indexOf(sourceCodeStartSeparatorChar);\n        const sourceCodeEnd = evalSourceCodeInformation.indexOf(sourceCodeEndSeparatorChar);\n        if (sourceCodeStart === -1 || sourceCodeEnd === -1 || sourceCodeStart > sourceCodeEnd) {\n            return {\n                library: UNKNOWN_FRAME,\n            };\n        }\n        const sourceCodeInformation = evalSourceCodeInformation.substring(sourceCodeStart + sourceCodeStartSeparatorChar.length, sourceCodeEnd);\n        return this.parseSourceCodeInformation(sourceCodeInformation);\n    }\n}\n\nclass IdGenerator {\n    static uuid() {\n        const bytes = [...new Array(16)].map(() => Math.floor(Math.random() * 256));\n        bytes[6] = (bytes[6] & 0x0f) | 0x40;\n        bytes[8] = (bytes[8] & 0x3f) | 0x80;\n        return (bytes\n            .slice(0, 4)\n            .map((n) => n.toString(16).padStart(2, '0'))\n            .join('') +\n            '-' +\n            bytes\n                .slice(4, 6)\n                .map((n) => n.toString(16).padStart(2, '0'))\n                .join('') +\n            '-' +\n            bytes\n                .slice(6, 8)\n                .map((n) => n.toString(16).padStart(2, '0'))\n                .join('') +\n            '-' +\n            bytes\n                .slice(8, 10)\n                .map((n) => n.toString(16).padStart(2, '0'))\n                .join('') +\n            '-' +\n            bytes\n                .slice(10, 16)\n                .map((n) => n.toString(16).padStart(2, '0'))\n                .join(''));\n    }\n}\n\nclass BacktraceDataBuilder {\n    _sdkOptions;\n    _stackTraceConverter;\n    _attributeManager;\n    _debugIdProvider;\n    MAIN_THREAD_NAME = 'main';\n    constructor(_sdkOptions, _stackTraceConverter, _attributeManager, _debugIdProvider) {\n        this._sdkOptions = _sdkOptions;\n        this._stackTraceConverter = _stackTraceConverter;\n        this._attributeManager = _attributeManager;\n        this._debugIdProvider = _debugIdProvider;\n    }\n    build(report) {\n        const { annotations, attributes } = this._attributeManager.get();\n        const reportData = ReportDataBuilder.build(report.attributes);\n        const { threads, detectedDebugIdentifier } = this.getThreads(report);\n        const result = {\n            uuid: IdGenerator.uuid(),\n            timestamp: TimeHelper.toTimestampInSec(report.timestamp),\n            agent: this._sdkOptions.agent,\n            agentVersion: this._sdkOptions.agentVersion,\n            lang: this._sdkOptions.langName,\n            langVersion: this._sdkOptions.langVersion,\n            classifiers: report.classifiers,\n            mainThread: this.MAIN_THREAD_NAME,\n            threads,\n            annotations: {\n                ...annotations,\n                ...reportData.annotations,\n                ...report.annotations,\n            },\n            attributes: {\n                ...attributes,\n                ...reportData.attributes,\n            },\n        };\n        if (detectedDebugIdentifier) {\n            result.symbolication = 'sourcemap';\n        }\n        return result;\n    }\n    getThreads(report) {\n        const threads = {};\n        let detectedDebugIdentifier = false;\n        for (const [name, traceInfo] of Object.entries(report.stackTrace)) {\n            let stackFrames;\n            if (Array.isArray(traceInfo)) {\n                stackFrames = traceInfo;\n            }\n            else {\n                const { message, stack } = traceInfo;\n                stackFrames = this._stackTraceConverter.convert(stack, message);\n            }\n            if (name === this.MAIN_THREAD_NAME && report.skipFrames > 0) {\n                stackFrames.splice(0, report.skipFrames);\n            }\n            for (const frame of stackFrames) {\n                const debugIdentifier = this._debugIdProvider.getDebugId(frame.library);\n                if (!debugIdentifier) {\n                    continue;\n                }\n                detectedDebugIdentifier = true;\n                frame.debug_identifier = debugIdentifier;\n            }\n            threads[name] = {\n                fault: name === this.MAIN_THREAD_NAME,\n                name,\n                stack: stackFrames,\n            };\n        }\n        return {\n            threads,\n            detectedDebugIdentifier,\n        };\n    }\n}\n\nclass AbortError extends Error {\n    constructor(message) {\n        super(message ?? 'Operation cancelled.');\n    }\n}\n\n// Required for polyfills to have the same name as the original implementations\nfunction getGlobal(key) {\n    return typeof window !== 'undefined'\n        ? window[key]\n        : typeof global !== 'undefined'\n            ? global[key]\n            : typeof self !== 'undefined'\n                ? self[key]\n                : undefined;\n}\nconst OriginalAbortController = getGlobal('AbortController');\n\n/**\n * Copied and repurposed from https://github.com/mo/abortcontroller-polyfill/blob/master/src/abortcontroller.js\n */\nclass Emitter {\n    _listeners = {};\n    _events = new Events();\n    addEventListener(type, listener, options) {\n        if (!(type in this._listeners)) {\n            this._listeners[type] = [];\n        }\n        const callback = (ev) => {\n            if (typeof listener === 'object') {\n                return listener.handleEvent.call(this, ev);\n            }\n            else {\n                return listener.call(this, ev);\n            }\n        };\n        const { once, signal } = (typeof options === 'object' ? options : {});\n        if (once) {\n            this._events.once(type, callback);\n        }\n        else {\n            this._events.on(type, callback);\n        }\n        if (signal) {\n            const removeFn = () => this.removeEventListener(type, listener);\n            signal.addEventListener(type, removeFn, { once: true });\n        }\n        this._listeners[type].push({ callback, listener, options });\n    }\n    removeEventListener(type, listener) {\n        if (!(type in this._listeners)) {\n            return;\n        }\n        const allListeners = this._listeners[type];\n        const listeners = allListeners.filter((l) => l.listener === listener);\n        for (const elem of listeners) {\n            this._events.off(type, elem.callback);\n            const index = allListeners.indexOf(elem);\n            allListeners.splice(index, 1);\n        }\n    }\n    dispatchEvent(event) {\n        this._events.emit(event.type, event);\n        return !event.defaultPrevented;\n    }\n}\n/**\n * Copied and repurposed from https://github.com/mo/abortcontroller-polyfill/blob/master/src/abortcontroller.js\n */\nclass AbortSignal extends Emitter {\n    aborted = false;\n    onabort = null;\n    reason;\n    constructor() {\n        super();\n        // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n        // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n        Object.defineProperty(this, 'aborted', { writable: true, configurable: true, enumerable: false });\n        Object.defineProperty(this, 'onabort', { writable: true, configurable: true, enumerable: false });\n        Object.defineProperty(this, 'reason', { writable: true, configurable: true, enumerable: false });\n    }\n    toString() {\n        return '[object AbortSignal]';\n    }\n    throwIfAborted() {\n        if (this.aborted) {\n            throw this.reason;\n        }\n    }\n    dispatchEvent(event) {\n        if (event.type === 'abort') {\n            this.aborted = true;\n            if (typeof this.onabort === 'function') {\n                this.onabort.call(this, event);\n            }\n        }\n        return super.dispatchEvent(event);\n    }\n    any(signals) {\n        return anySignal(...signals);\n    }\n}\n/**\n * Copied and repurposed from https://github.com/mo/abortcontroller-polyfill/blob/master/src/abortcontroller.js\n */\nclass AbortController {\n    signal;\n    constructor() {\n        // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n        // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n        this.signal = new AbortSignal();\n        Object.defineProperty(this, 'signal', { configurable: true, enumerable: false });\n    }\n    abort(reason) {\n        let event;\n        try {\n            event = new Event('abort');\n        }\n        catch (e) {\n            if (typeof document !== 'undefined') {\n                const ie8Document = document;\n                if (!ie8Document.createEvent && ie8Document.createEventObject) {\n                    // For Internet Explorer 8:\n                    event = ie8Document.createEventObject();\n                    event.type = 'abort';\n                }\n                else {\n                    // For Internet Explorer 11:\n                    event = document.createEvent('Event');\n                    event.initEvent('abort', false, false);\n                }\n            }\n            else {\n                // Fallback where document isn't available:\n                event = {\n                    type: 'abort',\n                    bubbles: false,\n                    cancelable: false,\n                };\n            }\n        }\n        let signalReason = reason;\n        if (signalReason === undefined) {\n            if (typeof document === 'undefined') {\n                signalReason = new AbortError('This operation was aborted');\n            }\n            else {\n                try {\n                    signalReason = new DOMException('signal is aborted without reason');\n                }\n                catch (err) {\n                    // IE 11 does not support calling the DOMException constructor, use a\n                    // regular error object on it instead.\n                    signalReason = new AbortError('This operation was aborted');\n                }\n            }\n        }\n        this.signal.reason = signalReason;\n        this.signal.dispatchEvent(event);\n    }\n    toString() {\n        return '[object AbortController]';\n    }\n}\n/**\n * Copied and repurposed from https://github.com/mo/abortcontroller-polyfill/blob/master/src/abortcontroller.js\n */\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n    // These are necessary to make sure that we get correct output for:\n    // Object.prototype.toString.call(new AbortController())\n    AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n    AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n}\n/**\n * Creates a new abort controller.\n *\n * If the AbortController is not available, a polyfill is used.\n * @returns\n */\nfunction createAbortController() {\n    if (OriginalAbortController) {\n        return new OriginalAbortController();\n    }\n    else {\n        return new AbortController();\n    }\n}\nfunction anySignal(...signals) {\n    const controller = createAbortController();\n    function cleanup() {\n        // Cleanup\n        for (const signal of signals) {\n            if (signal) {\n                signal.removeEventListener('abort', onAbort);\n            }\n        }\n    }\n    function onAbort() {\n        controller.abort();\n        cleanup();\n    }\n    for (const signal of signals) {\n        if (!signal) {\n            continue;\n        }\n        if (signal.aborted) {\n            onAbort();\n            break;\n        }\n        signal.addEventListener('abort', onAbort);\n    }\n    controller.signal.dispose = cleanup;\n    return controller.signal;\n}\n\n/**\n * Due to the event loop, NodeJS application might not exit\n * due to some background work that the SDK delegates to setIntervals.\n * Thanks to this helper we can cancell interval in NodeJS process.\n * @param interval setInterval interval\n */\nfunction unrefInterval(interval) {\n    if (!interval || typeof interval === 'number') {\n        return;\n    }\n    interval.unref();\n}\n\nclass BacktraceDatabaseContext {\n    bucketCount;\n    _records;\n    _recordBuckets = {};\n    constructor(bucketCount = 3) {\n        this.bucketCount = bucketCount;\n        this._records = [];\n        this._recordBuckets = {};\n    }\n    find(predicate) {\n        return this._records.find(predicate);\n    }\n    add(record) {\n        if (this._recordBuckets[record.id] !== undefined) {\n            this._recordBuckets[record.id] = 0;\n            return;\n        }\n        this._records.push(record);\n        this._recordBuckets[record.id] = 0;\n    }\n    get() {\n        return this._records.map((r) => ({ ...r }));\n    }\n    getBucket(index) {\n        const bucket = [];\n        for (const record of this._records) {\n            if (this._recordBuckets[record.id] === index) {\n                bucket.push(record);\n            }\n        }\n        return bucket;\n    }\n    count() {\n        return this._records.length;\n    }\n    countByType() {\n        return this._records.reduce((total, current) => {\n            total[current.type]++;\n            return total;\n        }, {});\n    }\n    remove(recordOrId) {\n        const id = typeof recordOrId === 'string' ? recordOrId : recordOrId.id;\n        const index = this._records.findIndex((r) => r.id === id);\n        if (index === -1) {\n            return;\n        }\n        this._records.splice(index, 1);\n        delete this._recordBuckets[id];\n    }\n    increaseBucket(bucketStart) {\n        for (const [id, bucket] of Object.entries(this._recordBuckets)) {\n            if (bucket < bucketStart) {\n                continue;\n            }\n            const newBucket = bucket + 1;\n            if (newBucket >= this.bucketCount) {\n                this.remove(id);\n            }\n            this._recordBuckets[id] = newBucket;\n        }\n    }\n    load(records) {\n        for (const record of records) {\n            this.add(record);\n        }\n    }\n    dropOverLimits(limits) {\n        const remaining = { ...limits };\n        const dropped = [];\n        for (let i = this._records.length - 1; i >= 0; i--) {\n            const record = this._records[i];\n            if (remaining[record.type] === 0) {\n                this.remove(record);\n                dropped.push(record);\n            }\n            else {\n                remaining[record.type]--;\n            }\n        }\n        return dropped;\n    }\n}\n\nclass BacktraceDatabase extends Events {\n    _options;\n    _storageProvider;\n    _requestHandler;\n    _sessionFiles;\n    /**\n     * Determines if the database is enabled.\n     */\n    get enabled() {\n        return this._enabled;\n    }\n    /**\n     * Abort controller to cancel asynchronous database operations when\n     * the database is being disabled by the user.\n     */\n    _abortController = createAbortController();\n    _databaseRecordContext;\n    _storageProviders = [];\n    _recordLimits;\n    _retryInterval;\n    _intervalId;\n    _enabled = false;\n    constructor(_options, _storageProvider, _requestHandler, _sessionFiles) {\n        super();\n        this._options = _options;\n        this._storageProvider = _storageProvider;\n        this._requestHandler = _requestHandler;\n        this._sessionFiles = _sessionFiles;\n        this._databaseRecordContext = new BacktraceDatabaseContext(this._options?.maximumRetries);\n        this._recordLimits = {\n            report: this._options?.maximumNumberOfRecords ?? 8,\n            attachment: this._options?.maximumNumberOfAttachmentRecords ?? 10,\n        };\n        this._retryInterval = this._options?.retryInterval ?? 60_000;\n    }\n    /**\n     * Starts database integration.\n     * @returns true if the database started successfully. Otherwise false.\n     */\n    initialize() {\n        if (this._enabled) {\n            return this._enabled;\n        }\n        if (this._options?.enable === false) {\n            return false;\n        }\n        const startResult = this._storageProvider.start();\n        if (!startResult) {\n            return false;\n        }\n        const lockId = this._sessionFiles?.lockPreviousSessions();\n        this.loadReports()\n            .then(() => {\n            this.setupDatabaseAutoSend();\n        })\n            .finally(() => lockId && this._sessionFiles?.unlockPreviousSessions(lockId));\n        this._enabled = true;\n        return true;\n    }\n    bind({ client }) {\n        if (this._enabled) {\n            return;\n        }\n        if (this._options?.enable === false) {\n            return;\n        }\n        client.on('before-send', (_, data, attachments) => {\n            const record = this.add(data, attachments);\n            if (!record || record.locked) {\n                return undefined;\n            }\n            record.locked = true;\n        });\n        client.on('after-send', (_, data, __, submissionResult) => {\n            const record = this._databaseRecordContext.find((record) => record.type === 'report' && record.data.uuid === data.uuid);\n            if (!record) {\n                return;\n            }\n            record.locked = false;\n            if (submissionResult.status === 'Ok') {\n                this.remove(record);\n                this._sessionFiles?.unlockPreviousSessions(record.id);\n            }\n        });\n    }\n    /**\n     * Adds backtrace data to the database\n     * @param backtraceData diagnostic data object\n     * @param attachments attachments\n     * @returns record if database is enabled. Otherwise undefined.\n     */\n    add(backtraceData, attachments) {\n        if (!this._enabled) {\n            return undefined;\n        }\n        const sessionId = backtraceData.attributes?.['application.session'];\n        const record = {\n            type: 'report',\n            data: backtraceData,\n            timestamp: TimeHelper.now(),\n            id: IdGenerator.uuid(),\n            locked: false,\n            attachments: attachments,\n            sessionId: typeof sessionId === 'string' ? sessionId : undefined,\n        };\n        this.prepareDatabase([record]);\n        const saveResult = this._storageProvider.add(record);\n        if (!saveResult) {\n            return undefined;\n        }\n        this._databaseRecordContext.add(record);\n        this.lockSessionWithRecord(record);\n        this.emit('added', record);\n        return record;\n    }\n    /**\n     * Adds Bactrace attachment to the database\n     * @param backtraceData diagnostic data object\n     * @param attachment the attachment to add\n     * @param sessionId session ID to use\n     * @returns record if database is enabled. Otherwise undefined.\n     */\n    addAttachment(rxid, attachment, sessionId) {\n        if (!this._enabled) {\n            return undefined;\n        }\n        const record = {\n            type: 'attachment',\n            timestamp: TimeHelper.now(),\n            id: IdGenerator.uuid(),\n            rxid,\n            locked: false,\n            attachment,\n            sessionId,\n        };\n        this.prepareDatabase([record]);\n        const saveResult = this._storageProvider.add(record);\n        if (!saveResult) {\n            return undefined;\n        }\n        this._databaseRecordContext.add(record);\n        this.lockSessionWithRecord(record);\n        this.emit('added', record);\n        return record;\n    }\n    /**\n     * Returns stored references to Backtrace records\n     * @returns available records in the database\n     */\n    get() {\n        return this._databaseRecordContext.get();\n    }\n    /**\n     * @returns Returns number of records stored in the Database\n     */\n    count() {\n        return this._databaseRecordContext.count();\n    }\n    /**\n     * @returns Returns number of records by type stored in the Database\n     */\n    countByType() {\n        return this._databaseRecordContext.countByType();\n    }\n    /**\n     * Disables database integration. After running the dispose method, you cannot\n     * execute any database operations.\n     */\n    dispose() {\n        this._enabled = false;\n        clearInterval(this._intervalId);\n        this._abortController.abort();\n    }\n    /**\n     * Removes the database record/records\n     * @param recordOrRecords database records\n     */\n    remove(recordOrRecords) {\n        if (!this._enabled) {\n            return;\n        }\n        const records = Array.isArray(recordOrRecords) ? recordOrRecords : [recordOrRecords];\n        for (const record of records) {\n            this._databaseRecordContext.remove(record);\n            this._storageProvider.delete(record);\n            this._sessionFiles?.unlockPreviousSessions(record.id);\n            this.emit('removed', record);\n        }\n    }\n    addStorageProvider(storageProvider) {\n        if (this._enabled) {\n            throw new Error('Cannot add storage provider after the database has been enabled.');\n        }\n        this._storageProviders.push(storageProvider);\n    }\n    /**\n     * Sends all records available in the database to Backtrace and removes them\n     * no matter if the submission process was successful or not.\n     * @param abortSignal optional abort signal to cancel sending requests\n     */\n    async flush(abortSignal) {\n        const start = TimeHelper.now();\n        await this.send(abortSignal);\n        const records = this.get().filter((n) => n.timestamp <= start);\n        for (const record of records) {\n            if (abortSignal?.aborted) {\n                return;\n            }\n            this.remove(record);\n        }\n    }\n    /**\n     * Sends all records available in the database to Backtrace.\n     * @param abortSignal optional abort signal to cancel sending requests\n     */\n    async send(abortSignal) {\n        for (let bucketIndex = 0; bucketIndex < this._databaseRecordContext.bucketCount; bucketIndex++) {\n            // make a copy of records to not update the array after each remove\n            const records = [...this._databaseRecordContext.getBucket(bucketIndex)];\n            const signal = anySignal(abortSignal, this._abortController.signal);\n            try {\n                for (const record of records) {\n                    if (!this.enabled) {\n                        return;\n                    }\n                    if (record.locked) {\n                        continue;\n                    }\n                    try {\n                        record.locked = true;\n                        this.emit('before-send', record);\n                        const result = record.type === 'report'\n                            ? await this._requestHandler.send(record.data, record.attachments, signal)\n                            : await this._requestHandler.sendAttachment(record.rxid, record.attachment, signal);\n                        this.emit('after-send', record, result);\n                        if (result.status === 'Ok' ||\n                            result.status === 'Unsupported' ||\n                            result.status === 'Report skipped') {\n                            this.remove(record);\n                            continue;\n                        }\n                        this._databaseRecordContext.increaseBucket(bucketIndex);\n                        return;\n                    }\n                    finally {\n                        record.locked = false;\n                    }\n                }\n            }\n            finally {\n                signal.dispose();\n            }\n        }\n    }\n    /**\n     * Prepare database to insert records\n     * @param forRecords records for which to update the database\n     */\n    prepareDatabase(forRecords) {\n        const dropLimits = { ...this._recordLimits };\n        for (const record of forRecords) {\n            dropLimits[record.type]--;\n        }\n        const dropped = this._databaseRecordContext.dropOverLimits(dropLimits);\n        this.remove(dropped);\n    }\n    async loadReports() {\n        const records = await this._storageProvider.get();\n        // limit only non-attachment records\n        const countByType = {\n            attachment: 0,\n            report: 0,\n        };\n        const recordsToAdd = [];\n        const recordsToRemove = [];\n        for (const record of records) {\n            if (countByType[record.type] >= this._recordLimits[record.type]) {\n                recordsToRemove.push(record);\n            }\n            else {\n                recordsToAdd.push(record);\n                countByType[record.type]++;\n            }\n        }\n        // delete old records before adding them to the database\n        if (recordsToRemove.length) {\n            this.remove(recordsToRemove);\n        }\n        this.prepareDatabase(recordsToAdd);\n        this._databaseRecordContext.load(recordsToAdd);\n        for (const record of recordsToAdd) {\n            this.lockSessionWithRecord(record);\n            this.emit('added', record);\n        }\n    }\n    async setupDatabaseAutoSend() {\n        if (!this._enabled) {\n            return;\n        }\n        if (this._options?.autoSend === false) {\n            return;\n        }\n        const sendDatabaseReports = async () => {\n            await this.send();\n        };\n        this._intervalId = setInterval(sendDatabaseReports, this._retryInterval);\n        unrefInterval(this._intervalId);\n        await this.send();\n    }\n    lockSessionWithRecord(record) {\n        if (!this._sessionFiles) {\n            return;\n        }\n        const sessionId = record.sessionId;\n        if (typeof sessionId !== 'string') {\n            this._sessionFiles.lockPreviousSessions(record.id);\n            return;\n        }\n        const session = this._sessionFiles.getSessionWithId(sessionId);\n        session?.lock(record.id);\n    }\n}\n\nfunction isFileAttachment(attachment) {\n    return 'filePath' in attachment && typeof attachment.filePath === 'string';\n}\n\nclass AttachmentBacktraceDatabaseFileRecord {\n    type = 'attachment';\n    id;\n    rxid;\n    timestamp;\n    attachment;\n    sessionId;\n    locked;\n    constructor(record) {\n        this.attachment = record.attachment;\n        this.id = record.id;\n        this.timestamp = record.timestamp;\n        this.rxid = record.rxid;\n        this.sessionId = record.sessionId;\n        // make sure the database record stored in the database directory\n        // is never locked. By doing this, we want to be sure once we load\n        // the record once again, the record will be available for future usage\n        this.locked = false;\n    }\n    static fromRecord(record) {\n        return new AttachmentBacktraceDatabaseFileRecord(record);\n    }\n    static fromJson(json, fileSystem) {\n        try {\n            const record = typeof json === 'string' ? JSON.parse(json) : json;\n            if (!isFileAttachment(record.attachment)) {\n                return undefined;\n            }\n            if (!fileSystem.existsSync(record.attachment.filePath)) {\n                return undefined;\n            }\n            const attachment = fileSystem.createAttachment(record.attachment.filePath, record.attachment.name);\n            return new AttachmentBacktraceDatabaseFileRecord({\n                ...record,\n                attachment,\n            });\n        }\n        catch {\n            return undefined;\n        }\n    }\n}\n\nclass ReportBacktraceDatabaseFileRecord {\n    attachments;\n    type = 'report';\n    data;\n    id;\n    timestamp;\n    sessionId;\n    locked;\n    constructor(record, attachments) {\n        this.attachments = attachments;\n        this.data = record.data;\n        this.id = record.id;\n        this.timestamp = record.timestamp;\n        this.sessionId = record.sessionId;\n        // make sure the database record stored in the database directory\n        // is never locked. By doing this, we want to be sure once we load\n        // the record once again, the record will be available for future usage\n        this.locked = false;\n    }\n    static fromRecord(record) {\n        return new ReportBacktraceDatabaseFileRecord(record, record.attachments.filter(isFileAttachment));\n    }\n    static fromJson(json, fileSystem) {\n        try {\n            const record = typeof json === 'string' ? JSON.parse(json) : json;\n            const attachments = record.attachments\n                ? record.attachments\n                    .filter(isFileAttachment)\n                    .map((n) => fileSystem.createAttachment(n.filePath, n.name))\n                : [];\n            return new ReportBacktraceDatabaseFileRecord(record, attachments);\n        }\n        catch {\n            return undefined;\n        }\n    }\n}\n\nconst BacktraceDatabaseFileRecord = {\n    fromRecord(record) {\n        switch (record.type) {\n            case 'attachment':\n                return AttachmentBacktraceDatabaseFileRecord.fromRecord(record);\n            case 'report':\n                return ReportBacktraceDatabaseFileRecord.fromRecord(record);\n            default:\n                throw new Error('unknown record type');\n        }\n    },\n    fromJson(json, fileSystem) {\n        try {\n            const record = JSON.parse(json);\n            switch (record.type) {\n                case 'attachment':\n                    return AttachmentBacktraceDatabaseFileRecord.fromJson(record, fileSystem);\n                case 'report':\n                    return ReportBacktraceDatabaseFileRecord.fromJson(record, fileSystem);\n                default:\n                    return undefined;\n            }\n        }\n        catch {\n            return undefined;\n        }\n    },\n};\n\nclass BacktraceDatabaseFileStorageProvider {\n    _fileSystem;\n    _path;\n    _enabled = true;\n    RECORD_SUFFIX = '-record.json';\n    constructor(_fileSystem, _path) {\n        this._fileSystem = _fileSystem;\n        this._path = _path;\n    }\n    /**\n     * Create a provider if provided options are valid\n     * @param options database configuration\n     * @returns database file storage provider\n     */\n    static createIfValid(fileSystem, options) {\n        if (!options) {\n            return undefined;\n        }\n        if (!options.enable) {\n            return undefined;\n        }\n        if (options.enable && !options.path) {\n            throw new Error('Missing mandatory path to the database. Please define the database.path option in the configuration.');\n        }\n        return new BacktraceDatabaseFileStorageProvider(fileSystem, options.path);\n    }\n    start() {\n        // make sure by mistake we don't create anything or start any operation\n        if (this._enabled === false) {\n            return false;\n        }\n        return true;\n    }\n    delete(record) {\n        const recordPath = this.getRecordPath(record.id);\n        return this.unlinkRecord(recordPath);\n    }\n    add(record) {\n        const recordPath = this.getRecordPath(record.id);\n        try {\n            this._fileSystem.writeFileSync(recordPath, JSON.stringify(BacktraceDatabaseFileRecord.fromRecord(record), jsonEscaper()));\n            return true;\n        }\n        catch {\n            return false;\n        }\n    }\n    async get() {\n        const databaseFiles = await this._fileSystem.readDir(this._path);\n        const recordNames = databaseFiles\n            .filter((file) => file.endsWith(this.RECORD_SUFFIX))\n            .map((f) => this._path + '/' + f);\n        const records = [];\n        for (const recordName of recordNames) {\n            try {\n                const recordJson = await this._fileSystem.readFile(recordName);\n                const record = BacktraceDatabaseFileRecord.fromJson(recordJson, this._fileSystem);\n                if (!record) {\n                    await this._fileSystem.unlink(recordName);\n                    continue;\n                }\n                records.push(record);\n            }\n            catch {\n                await this._fileSystem.unlink(recordName);\n            }\n        }\n        return records;\n    }\n    unlinkRecord(recordPath) {\n        if (!this._fileSystem.existsSync(recordPath)) {\n            return false;\n        }\n        try {\n            this._fileSystem.unlinkSync(recordPath);\n            return true;\n        }\n        catch {\n            return false;\n        }\n    }\n    getRecordPath(id) {\n        return this._path + '/' + `${id}${this.RECORD_SUFFIX}`;\n    }\n}\n\nclass MetricsEvent {\n    metricGroupName;\n    metricGroupValue;\n    attributes;\n    id = IdGenerator.uuid();\n    constructor(metricGroupName, metricGroupValue, attributes = {}) {\n        this.metricGroupName = metricGroupName;\n        this.metricGroupValue = metricGroupValue;\n        this.attributes = attributes;\n    }\n    toJSON() {\n        return {\n            timestamp: TimeHelper.toTimestampInSec(TimeHelper.now()),\n            attributes: this.attributes,\n            [this.metricGroupName]: this.metricGroupValue,\n        };\n    }\n}\n\nclass SummedEvent extends MetricsEvent {\n    constructor(metricGroupName, attributes = {}) {\n        super('metric_group', metricGroupName, attributes);\n    }\n}\n\nclass UniqueEvent extends MetricsEvent {\n    constructor(attributes) {\n        super('unique', ['guid'], attributes);\n    }\n}\n\nclass BacktraceMetrics {\n    _options;\n    _sessionProvider;\n    _attributeManager;\n    _summedEventsSubmissionQueue;\n    _uniqueEventsSubmissionQueue;\n    /**\n     * Returns current session id.\n     */\n    get sessionId() {\n        return this._sessionProvider.sessionId;\n    }\n    /**\n     * Default metrics submission interval. The variable defines how often metrics will be sent to metrics system.\n     */\n    DEFAULT_UPDATE_INTERVAL = TimeHelper.convertSecondsToMilliseconds(30 * 60);\n    DEFAULT_SERVER_URL = 'https://events.backtrace.io';\n    metricsHost;\n    _updateInterval;\n    _updateIntervalId;\n    _abortController;\n    constructor(_options, _sessionProvider, _attributeManager, _summedEventsSubmissionQueue, _uniqueEventsSubmissionQueue) {\n        this._options = _options;\n        this._sessionProvider = _sessionProvider;\n        this._attributeManager = _attributeManager;\n        this._summedEventsSubmissionQueue = _summedEventsSubmissionQueue;\n        this._uniqueEventsSubmissionQueue = _uniqueEventsSubmissionQueue;\n        this.metricsHost = this._options.metricsSubmissionUrl ?? this.DEFAULT_SERVER_URL;\n        this._updateInterval = this._options.autoSendInterval ?? this.DEFAULT_UPDATE_INTERVAL;\n        this._abortController = createAbortController();\n    }\n    /**\n     * Starts metrics submission.\n     */\n    initialize() {\n        if (!this._sessionProvider.newSession) {\n            return;\n        }\n        this.addSummedEvent('Application Launches');\n        this.handleAbort(() => this.send(this._abortController.signal));\n        if (this._updateInterval === 0) {\n            return;\n        }\n        this._updateIntervalId = setInterval(() => {\n            this.handleAbort(() => this.send(this._abortController.signal));\n        }, this._updateInterval);\n        unrefInterval(this._updateIntervalId);\n    }\n    /**\n     * Returns total number of events in the submission queue.\n     */\n    count() {\n        return this._summedEventsSubmissionQueue?.total ?? 0 + this._uniqueEventsSubmissionQueue?.total ?? 0;\n    }\n    /**\n     * Add summed event to next Backtrace Metrics request.\n     * @param metricName Summed event name.\n     * @param eventAttributes event attributes.\n     */\n    addSummedEvent(metricName, eventAttributes = {}) {\n        if (!metricName) {\n            return false;\n        }\n        const attributes = this.convertAttributes({\n            ...this._attributeManager.get().attributes,\n            ...ReportDataBuilder.build(eventAttributes ?? {}).attributes,\n        });\n        this._summedEventsSubmissionQueue.add(new SummedEvent(metricName, attributes));\n        return true;\n    }\n    /**\n     * Sends event to the metrics system.\n     */\n    async send(abortSignal) {\n        if (!this._sessionProvider.shouldSend()) {\n            return false;\n        }\n        await Promise.all([this.sendUniqueEvent(abortSignal), this._summedEventsSubmissionQueue.send(abortSignal)]);\n        this._sessionProvider.afterMetricsSubmission();\n        return true;\n    }\n    /**\n     * Cleans up metrics interface.\n     */\n    dispose() {\n        this._abortController.abort();\n        if (this._updateIntervalId) {\n            clearInterval(this._updateIntervalId);\n        }\n        this._uniqueEventsSubmissionQueue.dispose && this._uniqueEventsSubmissionQueue.dispose();\n        this._summedEventsSubmissionQueue.dispose && this._summedEventsSubmissionQueue.dispose();\n    }\n    async sendUniqueEvent(abortSignal) {\n        // always add the same unique event before send.\n        const { attributes } = this._attributeManager.get();\n        this._uniqueEventsSubmissionQueue.add(new UniqueEvent(this.convertAttributes(attributes)));\n        await this._uniqueEventsSubmissionQueue.send(abortSignal);\n    }\n    /**\n     * Event aggregators expecting to retrieve attributes in a string format. They also\n     * don't expect to retrieve null/undefined as attribute values.\n     */\n    convertAttributes(attributes) {\n        return Object.keys(attributes)\n            .filter((n) => attributes[n] != null)\n            .reduce((acc, n) => {\n            acc[n] = attributes[n]?.toString();\n            return acc;\n        }, {});\n    }\n    async handleAbort(fn) {\n        try {\n            await fn();\n            return true;\n        }\n        catch (err) {\n            if (err instanceof AbortError) {\n                return false;\n            }\n            throw err;\n        }\n    }\n}\n\nclass Delay {\n    /**\n     * Promise set timeout wrapper.\n     * @param timeout timeout in ms\n     * @param signal abort signal\n     */\n    static wait(timeout, signal) {\n        return new Promise((resolve, reject) => {\n            // intervalId has to be defined here,\n            // as abortCallback can execute before setTimeout is executed\n            // eslint-disable-next-line prefer-const\n            let intervalId;\n            function abortCallback() {\n                clearTimeout(intervalId);\n                reject(new AbortError());\n            }\n            if (signal?.aborted) {\n                return abortCallback();\n            }\n            intervalId = setTimeout(() => {\n                signal?.removeEventListener('abort', abortCallback);\n                resolve();\n            }, timeout);\n            signal?.addEventListener('abort', abortCallback);\n        });\n    }\n}\n\nclass MetricsSubmissionQueue {\n    _submissionUrl;\n    _eventName;\n    _requestHandler;\n    _metricMetadata;\n    maximumEvents;\n    get total() {\n        return this._events.length;\n    }\n    get submissionUrl() {\n        return this._submissionUrl;\n    }\n    DELAY_BETWEEN_REQUESTS = TimeHelper.convertSecondsToMilliseconds(10);\n    _events = [];\n    _numberOfDroppedRequests = 0;\n    _abortController;\n    MAXIMUM_NUMBER_OF_ATTEMPTS = 3;\n    constructor(_submissionUrl, _eventName, _requestHandler, _metricMetadata, maximumEvents = 50) {\n        this._submissionUrl = _submissionUrl;\n        this._eventName = _eventName;\n        this._requestHandler = _requestHandler;\n        this._metricMetadata = _metricMetadata;\n        this.maximumEvents = maximumEvents;\n        this._abortController = createAbortController();\n    }\n    add(event) {\n        this._events.push(event);\n        if (this.reachedLimit()) {\n            this.send();\n        }\n    }\n    async send(abortSignal) {\n        const eventsToProcess = this._events.splice(0);\n        const signal = anySignal(abortSignal, this._abortController.signal);\n        try {\n            return await this.submit(eventsToProcess, signal);\n        }\n        finally {\n            signal.dispose();\n        }\n    }\n    dispose() {\n        this._abortController.abort();\n    }\n    async submit(events, abortSignal) {\n        for (let attempts = 0; attempts < this.MAXIMUM_NUMBER_OF_ATTEMPTS; attempts++) {\n            const response = await this._requestHandler.post(this._submissionUrl, JSON.stringify({\n                ...this._metricMetadata,\n                [this._eventName]: events,\n                metadata: {\n                    dropped_events: this._numberOfDroppedRequests,\n                },\n            }, jsonEscaper()), abortSignal);\n            if (response.status === 'Ok') {\n                this._numberOfDroppedRequests = 0;\n                return;\n            }\n            this._numberOfDroppedRequests++;\n            await Delay.wait(2 ** attempts * this.DELAY_BETWEEN_REQUESTS, abortSignal);\n        }\n        // if the code reached this line, it means, we couldn't send data to server\n        // we need to try to return events to the queue and try to send it once again later.\n        this.returnEventsIfPossible(events);\n    }\n    returnEventsIfPossible(events) {\n        if (this.maximumEvents < this._events.length + events.length) {\n            return;\n        }\n        // push events to the beginning of the queue\n        this._events.unshift(...events);\n    }\n    reachedLimit() {\n        return this.maximumEvents === this._events.length && this.maximumEvents !== 0;\n    }\n}\n\nclass MetricsBuilder {\n    _options;\n    _sessionProvider;\n    _attributeManager;\n    _requestHandler;\n    /**\n     * Default metrics submission interval. The variable defines how often metrics will be sent to metrics system\n     * By default 30 mins.\n     */\n    DEFAULT_UPDATE_INTERVAL = TimeHelper.convertSecondsToMilliseconds(30 * 60);\n    APPLICATION_VERSION_ATTRIBUTE = 'application.version';\n    APPLICATION_ATTRIBUTE = 'application';\n    constructor(_options, _sessionProvider, _attributeManager, _requestHandler) {\n        this._options = _options;\n        this._sessionProvider = _sessionProvider;\n        this._attributeManager = _attributeManager;\n        this._requestHandler = _requestHandler;\n    }\n    build(uniqueEventsSubmissionQueue, summedEventsSubmissionQueue) {\n        const metricsOptions = {\n            ...this.optionsWithDefaults(),\n            ...(this._options.metrics ?? {}),\n        };\n        if (!metricsOptions.enable) {\n            return undefined;\n        }\n        const applicationInfo = this.verifyAttributeSetup();\n        if (!applicationInfo) {\n            return undefined;\n        }\n        uniqueEventsSubmissionQueue =\n            uniqueEventsSubmissionQueue ??\n                this.createUniqueEventSubmissionQueue(metricsOptions.metricsSubmissionUrl, applicationInfo);\n        if (!uniqueEventsSubmissionQueue) {\n            return undefined;\n        }\n        summedEventsSubmissionQueue =\n            summedEventsSubmissionQueue ??\n                this.createSummedEventSubmissionQueue(metricsOptions.metricsSubmissionUrl, applicationInfo);\n        if (!summedEventsSubmissionQueue) {\n            return undefined;\n        }\n        return new BacktraceMetrics(metricsOptions, this._sessionProvider, this._attributeManager, summedEventsSubmissionQueue, uniqueEventsSubmissionQueue);\n    }\n    verifyAttributeSetup() {\n        const { attributes } = this._attributeManager.get();\n        const application = attributes[this.APPLICATION_ATTRIBUTE];\n        const applicationVersion = attributes[this.APPLICATION_VERSION_ATTRIBUTE];\n        if (!application || !applicationVersion) {\n            return undefined;\n        }\n        return { application, applicationVersion };\n    }\n    createUniqueEventSubmissionQueue(metricsHost, applicationInfo) {\n        const uniqueEventsSubmissionUrl = MetricsUrlInformation.generateUniqueEventsUrl(metricsHost, this._options.url, this._options.token);\n        if (!uniqueEventsSubmissionUrl) {\n            return undefined;\n        }\n        return new MetricsSubmissionQueue(uniqueEventsSubmissionUrl, 'unique_events', this._requestHandler, {\n            [this.APPLICATION_ATTRIBUTE]: applicationInfo.application,\n            appversion: applicationInfo.applicationVersion,\n        }, this._options?.metrics?.size);\n    }\n    createSummedEventSubmissionQueue(metricsHost, applicationInfo) {\n        const summedEventsSubmissionUrl = MetricsUrlInformation.generateSummedEventsUrl(metricsHost, this._options.url, this._options.token);\n        if (!summedEventsSubmissionUrl) {\n            return undefined;\n        }\n        return new MetricsSubmissionQueue(summedEventsSubmissionUrl, 'summed_events', this._requestHandler, {\n            [this.APPLICATION_ATTRIBUTE]: applicationInfo.application,\n            appversion: applicationInfo.applicationVersion,\n        }, this._options?.metrics?.size);\n    }\n    optionsWithDefaults() {\n        return {\n            enable: true,\n            autoSendInterval: this.DEFAULT_UPDATE_INTERVAL,\n            metricsSubmissionUrl: 'https://events.backtrace.io',\n            size: 50,\n        };\n    }\n}\n\nclass SingleSessionProvider {\n    newSession = true;\n    sessionId = IdGenerator.uuid();\n    _lastActive = 0;\n    get lastActive() {\n        return this._lastActive;\n    }\n    afterMetricsSubmission() {\n        this._lastActive = TimeHelper.now();\n    }\n    /**\n     * Allow to alway send metrics - in the single session there is no reason\n     * to skip sending metrics.\n     */\n    shouldSend() {\n        return true;\n    }\n}\n\nclass RateLimitWatcher {\n    /**\n     * Time the single report can stay in the queue in ms.\n     */\n    MAXIMUM_TIME_IN_QUEUE = 60 * 1000;\n    _reportPerMin;\n    _watcherEnable;\n    _reportQueue = [];\n    get enabled() {\n        return this._watcherEnable;\n    }\n    constructor(reportPerMin) {\n        if (reportPerMin == null) {\n            reportPerMin = 0;\n        }\n        if (reportPerMin < 0) {\n            throw new Error('ReportPerMinute argument must be greater or equal to zero');\n        }\n        this._reportPerMin = reportPerMin;\n        this._watcherEnable = reportPerMin > 0;\n    }\n    skipReport() {\n        const time = TimeHelper.now();\n        if (!this._watcherEnable) {\n            return false;\n        }\n        this.clear(time);\n        if (this._reportQueue.length >= this._reportPerMin) {\n            return true;\n        }\n        this._reportQueue.push(time);\n        return false;\n    }\n    clear(time) {\n        if (this._reportQueue.length === 0) {\n            return;\n        }\n        // we don't have anything to remove\n        if (time - this._reportQueue[0] < this.MAXIMUM_TIME_IN_QUEUE) {\n            return;\n        }\n        for (let queueIndex = this._reportQueue.length; queueIndex != 0; queueIndex--) {\n            if (time - this._reportQueue[queueIndex - 1] > this.MAXIMUM_TIME_IN_QUEUE) {\n                this._reportQueue = this._reportQueue.slice(queueIndex);\n                return;\n            }\n        }\n    }\n}\n\nclass BacktraceCoreClient extends Events {\n    /**\n     * Backtrace client instance\n     */\n    static _instance;\n    /**\n     * Determines if the client is enabled.\n     */\n    get enabled() {\n        return this._enabled;\n    }\n    /**\n     * Current session id\n     */\n    get sessionId() {\n        return this._sessionProvider.sessionId;\n    }\n    /**\n     * Backtrace SDK name\n     */\n    get agent() {\n        return this._sdkOptions.agent;\n    }\n    /**\n     * Backtrace SDK version\n     */\n    get agentVersion() {\n        return this._sdkOptions.agentVersion;\n    }\n    /**\n     * Available cached client attributes\n     */\n    get attributes() {\n        return this.attributeManager.get().attributes;\n    }\n    /**\n     * Available cached client annotatations\n     */\n    get annotations() {\n        return this.attributeManager.get().annotations;\n    }\n    get metrics() {\n        return this._modules.get(BacktraceMetrics);\n    }\n    get breadcrumbs() {\n        return this._modules.get(BreadcrumbsManager);\n    }\n    get database() {\n        return this._modules.get(BacktraceDatabase);\n    }\n    /**\n     * Client cached attachments\n     */\n    get attachments() {\n        return this.attachmentManager.get();\n    }\n    /**\n     * Modules used by the client\n     */\n    get modules() {\n        return this._modules;\n    }\n    get sessionFiles() {\n        return this._modules.get(SessionFiles);\n    }\n    options;\n    attributeManager;\n    attachmentManager;\n    fileSystem;\n    _modules = new Map();\n    _dataBuilder;\n    _reportSubmission;\n    _rateLimitWatcher;\n    _sessionProvider;\n    _sdkOptions;\n    _requestHandler;\n    _enabled = false;\n    constructor(setup) {\n        super();\n        this.options = setup.options;\n        this.fileSystem = setup.fileSystem;\n        this._sdkOptions = setup.sdkOptions;\n        this._sessionProvider = setup.sessionProvider ?? new SingleSessionProvider();\n        this._reportSubmission =\n            setup.reportSubmission ?? new RequestBacktraceReportSubmission(this.options, setup.requestHandler);\n        this._rateLimitWatcher = new RateLimitWatcher(this.options.rateLimit);\n        this._requestHandler = setup.requestHandler;\n        const attributeProviders = [\n            new ClientAttributeProvider(this.agent, this.agentVersion, this._sessionProvider.sessionId),\n        ];\n        if (setup.attributeProviders) {\n            attributeProviders.push(...setup.attributeProviders);\n        }\n        if (this.options.userAttributes) {\n            attributeProviders.push(new UserAttributeProvider(this.options.userAttributes));\n        }\n        this.attributeManager = new AttributeManager(attributeProviders);\n        this.attachmentManager = new AttachmentManager();\n        if (this.options.attachments) {\n            this.attachmentManager.add(...this.options.attachments);\n        }\n        const stackTraceConverter = setup.stackTraceConverter ?? new V8StackTraceConverter();\n        this._dataBuilder = new BacktraceDataBuilder(this._sdkOptions, stackTraceConverter, this.attributeManager, new DebugIdProvider(stackTraceConverter, setup.debugIdMapProvider));\n        if (this.options?.database?.enable === true && setup.fileSystem) {\n            const provider = BacktraceDatabaseFileStorageProvider.createIfValid(setup.fileSystem, this.options.database);\n            if (this.fileSystem) {\n                const sessionFiles = new SessionFiles(this.fileSystem, this.options.database.path, this.sessionId, this.options.database.maximumOldSessions ?? 1);\n                this._modules.set(SessionFiles, sessionFiles);\n            }\n            if (provider) {\n                const database = new BacktraceDatabase(this.options.database, provider, this._reportSubmission, this.sessionFiles);\n                this._modules.set(BacktraceDatabase, database);\n            }\n        }\n        const metrics = new MetricsBuilder(this.options, this._sessionProvider, this.attributeManager, setup.requestHandler).build(setup.uniqueMetricsQueue, setup.summedMetricsQueue);\n        if (metrics) {\n            this._modules.set(BacktraceMetrics, metrics);\n        }\n        if (this.options.breadcrumbs?.enable !== false) {\n            const breadcrumbsManager = new BreadcrumbsManager(this.options?.breadcrumbs, setup.breadcrumbsSetup);\n            this._modules.set(BreadcrumbsManager, breadcrumbsManager);\n        }\n        if (setup.modules) {\n            for (const module of setup.modules) {\n                this.addModule(module);\n            }\n        }\n    }\n    initialize() {\n        this.validateAttributes();\n        if (this.fileSystem && this.options.database?.createDatabaseDirectory) {\n            if (!this.options.database.path) {\n                throw new Error('Missing mandatory path to the database. Please define the database.path option in the configuration.');\n            }\n            this.fileSystem.createDirSync(this.options.database?.path);\n        }\n        for (const module of this._modules.values()) {\n            if (module.bind) {\n                module.bind(this.getModuleBindData());\n            }\n            if (module.initialize) {\n                module.initialize();\n            }\n        }\n        this.sessionFiles?.clearPreviousSessions();\n        this._enabled = true;\n        BacktraceCoreClient._instance = this;\n    }\n    addAttribute(attributes) {\n        this.attributeManager.add(attributes);\n    }\n    addAttachment(...attachments) {\n        this.attachmentManager.add(...attachments);\n    }\n    // This function CANNOT be an async function due to possible async state machine stack frame inclusion, which breaks the skip stacks\n    send(data, reportAttributesOrAbortSignal, reportAttachments = [], abortSignal) {\n        if (!this._enabled) {\n            return Promise.resolve(BacktraceReportSubmissionResult.SdkDisabled());\n        }\n        if (this._rateLimitWatcher.skipReport()) {\n            return Promise.resolve(BacktraceReportSubmissionResult.OnLimitReached('Client'));\n        }\n        // If data is BacktraceReport, we know that the second argument should be only AbortSignal\n        const reportAttributes = !this.isReport(data)\n            ? reportAttributesOrAbortSignal\n            : undefined;\n        // If data is BacktraceReport, we know that the second argument should be only AbortSignal\n        abortSignal = !this.isReport(data) ? abortSignal : reportAttributesOrAbortSignal;\n        const report = this.isReport(data)\n            ? data\n            : new BacktraceReport(data, reportAttributes, [], {\n                skipFrames: this.skipFrameOnMessage(data),\n            });\n        this.emit('before-skip', report);\n        if (this.options.skipReport && this.options.skipReport(report)) {\n            return Promise.resolve(BacktraceReportSubmissionResult.ReportSkipped());\n        }\n        const backtraceData = this.generateSubmissionData(report);\n        if (!backtraceData) {\n            return Promise.resolve(BacktraceReportSubmissionResult.ReportSkipped());\n        }\n        const submissionAttachments = this.generateSubmissionAttachments(report, reportAttachments);\n        this.emit('before-send', report, backtraceData, submissionAttachments);\n        return this._reportSubmission\n            .send(backtraceData, submissionAttachments, abortSignal)\n            .then((submissionResult) => {\n            this.emit('after-send', report, backtraceData, submissionAttachments, submissionResult);\n            return submissionResult;\n        });\n    }\n    /**\n     * Disposes the client and all client callbacks\n     */\n    dispose() {\n        this._enabled = false;\n        for (const module of this._modules.values()) {\n            if (module.dispose) {\n                module.dispose();\n            }\n        }\n        BacktraceCoreClient.destroy();\n    }\n    addModule(typeOrModule, module) {\n        let type;\n        if (typeof typeOrModule === 'function') {\n            type = typeOrModule;\n        }\n        else {\n            module = typeOrModule;\n            type = Object.getPrototypeOf(module);\n        }\n        if (!module) {\n            throw new Error('Module implementation is required.');\n        }\n        this._modules.set(type, module);\n        if (this._enabled) {\n            module.bind && module.bind(this.getModuleBindData());\n            module.initialize && module.initialize();\n        }\n    }\n    generateSubmissionData(report) {\n        const backtraceData = this._dataBuilder.build(report);\n        if (!this.options.beforeSend) {\n            return backtraceData;\n        }\n        return this.options.beforeSend(backtraceData);\n    }\n    generateSubmissionAttachments(report, reportAttachments) {\n        return [...this.attachmentManager.get(), ...(report.attachments ?? []), ...(reportAttachments ?? [])];\n    }\n    skipFrameOnMessage(data) {\n        return typeof data === 'string' ? 1 : 0;\n    }\n    isReport(data) {\n        return data instanceof BacktraceReport;\n    }\n    getModuleBindData() {\n        return {\n            client: this,\n            options: this.options,\n            attributeManager: this.attributeManager,\n            attachmentManager: this.attachmentManager,\n            reportSubmission: this._reportSubmission,\n            requestHandler: this._requestHandler,\n            database: this.database,\n            sessionFiles: this.sessionFiles,\n            fileSystem: this.fileSystem,\n        };\n    }\n    static destroy() {\n        this._instance = undefined;\n    }\n    validateAttributes() {\n        function validateApplicationAndVersion(attributes) {\n            if (!attributes['application'] || !attributes['application.version']) {\n                return 'application and application.version attributes must be defined.';\n            }\n        }\n        // Validate scoped attributes first. If they return no errors, there is no point\n        // in checking all attributes, which resolving of may be slower.\n        const scoped = this.attributeManager.get('scoped');\n        const scopedError = validateApplicationAndVersion(scoped.attributes);\n        if (!scopedError) {\n            return;\n        }\n        const allAttributes = this.attributeManager.get();\n        const error = validateApplicationAndVersion(allAttributes.attributes);\n        if (!error) {\n            return;\n        }\n        throw new Error(error);\n    }\n}\n\nclass BacktraceCoreClientBuilder {\n    clientSetup;\n    constructor(clientSetup) {\n        this.clientSetup = clientSetup;\n    }\n    addAttributeProvider(provider) {\n        if (!this.clientSetup.attributeProviders) {\n            this.clientSetup.attributeProviders = [provider];\n        }\n        else {\n            this.clientSetup.attributeProviders.push(provider);\n        }\n        return this;\n    }\n    useBreadcrumbSubscriber(breadcrumbSubscriber) {\n        if (!this.clientSetup.breadcrumbsSetup) {\n            this.clientSetup.breadcrumbsSetup = {};\n        }\n        if (!this.clientSetup.breadcrumbsSetup.subscribers) {\n            this.clientSetup.breadcrumbsSetup.subscribers = [breadcrumbSubscriber];\n        }\n        else {\n            this.clientSetup.breadcrumbsSetup.subscribers.push(breadcrumbSubscriber);\n        }\n        return this;\n    }\n    useBreadcrumbsStorage(storage) {\n        if (!this.clientSetup.breadcrumbsSetup) {\n            this.clientSetup.breadcrumbsSetup = {};\n        }\n        if (typeof storage === 'function') {\n            this.clientSetup.breadcrumbsSetup.storage = storage;\n        }\n        else {\n            this.clientSetup.breadcrumbsSetup.storage = () => storage;\n        }\n        return this;\n    }\n    useSessionProvider(sessionProvider) {\n        this.clientSetup.sessionProvider = sessionProvider;\n        return this;\n    }\n    useRequestHandler(handler) {\n        this.clientSetup.requestHandler = handler;\n        return this;\n    }\n    useStackTraceConverter(stackTraceConverter) {\n        this.clientSetup.stackTraceConverter = stackTraceConverter;\n        return this;\n    }\n    useFileSystem(fileSystem) {\n        this.clientSetup.fileSystem = fileSystem;\n        return this;\n    }\n    useReportSubmission(reportSubmission) {\n        this.clientSetup.reportSubmission = reportSubmission;\n        return this;\n    }\n    useSummedMetricsQueue(queue) {\n        this.clientSetup.summedMetricsQueue = queue;\n        return this;\n    }\n    useUniqueMetricsQueue(queue) {\n        this.clientSetup.uniqueMetricsQueue = queue;\n        return this;\n    }\n    useModule(module) {\n        if (!this.clientSetup.modules) {\n            this.clientSetup.modules = [module];\n        }\n        else {\n            this.clientSetup.modules.push(module);\n        }\n        return this;\n    }\n}\n\nclass BacktraceStringAttachment {\n    name;\n    data;\n    constructor(name, data) {\n        this.name = name;\n        this.data = data;\n    }\n    get() {\n        return this.data;\n    }\n}\n\nclass BacktraceUint8ArrayAttachment {\n    name;\n    data;\n    constructor(name, data) {\n        this.name = name;\n        this.data = data;\n    }\n    get() {\n        return new Blob([this.data.buffer]);\n    }\n}\n\nconst ATTRIBUTE_FILE_NAME = 'bt-attributes';\nclass FileAttributeManager {\n    _fileSystem;\n    _fileName;\n    _attributeManager;\n    constructor(_fileSystem, _fileName) {\n        this._fileSystem = _fileSystem;\n        this._fileName = _fileName;\n    }\n    static create(fileSystem) {\n        return new FileAttributeManager(fileSystem);\n    }\n    static createFromSession(sessionFiles, fileSystem) {\n        const fileName = sessionFiles.getFileName(ATTRIBUTE_FILE_NAME);\n        return new FileAttributeManager(fileSystem, fileName);\n    }\n    initialize() {\n        this.saveAttributes();\n    }\n    bind({ attributeManager, sessionFiles }) {\n        if (this._fileName) {\n            throw new Error('This instance is already bound.');\n        }\n        if (!sessionFiles) {\n            return;\n        }\n        this._fileName = sessionFiles.getFileName(ATTRIBUTE_FILE_NAME);\n        this._attributeManager = attributeManager;\n        attributeManager.attributeEvents.on('scoped-attributes-updated', () => this.saveAttributes());\n    }\n    dispose() {\n        this._fileName = undefined;\n    }\n    async get() {\n        if (!this._fileName) {\n            return {};\n        }\n        try {\n            const content = await this._fileSystem.readFile(this._fileName);\n            return JSON.parse(content);\n        }\n        catch {\n            return {};\n        }\n    }\n    async saveAttributes() {\n        if (!this._fileName || !this._attributeManager) {\n            return;\n        }\n        const reportData = this._attributeManager.get('scoped');\n        await this._fileSystem.writeFile(this._fileName, JSON.stringify(reportData.attributes, jsonEscaper()));\n    }\n}\n\nconst SESSION_MARKER_PREFIX = 'bt-session';\nconst isDefined = (t) => !!t;\nclass SessionFiles {\n    _fileSystem;\n    _directory;\n    sessionId;\n    _maxPreviousLockedSessions;\n    timestamp;\n    _lockable;\n    marker;\n    _events = new Events();\n    _escapedSessionId;\n    _locks = new Set();\n    _previousSession;\n    _cleared = false;\n    constructor(_fileSystem, _directory, sessionId, _maxPreviousLockedSessions = 1, timestamp = Date.now(), _lockable = true) {\n        this._fileSystem = _fileSystem;\n        this._directory = _directory;\n        this.sessionId = sessionId;\n        this._maxPreviousLockedSessions = _maxPreviousLockedSessions;\n        this.timestamp = timestamp;\n        this._lockable = _lockable;\n        this._escapedSessionId = this.escapeFileName(sessionId);\n        this.marker = this.getFileName(SESSION_MARKER_PREFIX);\n    }\n    initialize() {\n        this.createSessionMarker();\n    }\n    getPreviousSession() {\n        if (this._previousSession) {\n            return this._previousSession;\n        }\n        const directoryFiles = this.readDirectoryFiles();\n        if (!directoryFiles.length) {\n            return undefined;\n        }\n        const sessionMarkers = directoryFiles\n            .filter((f) => f.startsWith(SESSION_MARKER_PREFIX))\n            .map((f) => this.getFileSession(f))\n            .filter(isDefined)\n            .sort((a, b) => b.timestamp - a.timestamp);\n        const currentSessionMarker = sessionMarkers.find((s) => s.sessionId === this.sessionId);\n        const lastSessionMarker = currentSessionMarker\n            ? sessionMarkers.filter(({ timestamp }) => currentSessionMarker.timestamp > timestamp)[0]\n            : sessionMarkers[0];\n        if (!lastSessionMarker) {\n            return undefined;\n        }\n        return (this._previousSession = new SessionFiles(this._fileSystem, this._directory, lastSessionMarker.sessionId, this._maxPreviousLockedSessions - 1, lastSessionMarker.timestamp, this._maxPreviousLockedSessions > 0));\n    }\n    getSessionWithId(sessionId) {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        let session = this;\n        while (session && session.sessionId !== sessionId) {\n            session = session.getPreviousSession();\n        }\n        return session;\n    }\n    getPreviousSessions(count = Infinity) {\n        const result = [];\n        let current = this.getPreviousSession();\n        while (current && count > 0) {\n            result.push(current);\n            count--;\n            current = current.getPreviousSession();\n        }\n        return result;\n    }\n    lockPreviousSessions(lockId) {\n        lockId = lockId ?? IdGenerator.uuid();\n        for (const session of this.getPreviousSessions(this._maxPreviousLockedSessions)) {\n            session.lock(lockId);\n        }\n        return lockId;\n    }\n    unlockPreviousSessions(lockId) {\n        for (const session of this.getPreviousSessions(this._maxPreviousLockedSessions)) {\n            session.unlock(lockId);\n        }\n    }\n    clearPreviousSessions() {\n        for (const session of this.getPreviousSessions()) {\n            session.clearSession();\n        }\n    }\n    getFileName(prefix) {\n        this.throwIfCleared();\n        return this._directory + '/' + `${this.escapeFileName(prefix)}_${this._escapedSessionId}_${this.timestamp}`;\n    }\n    getSessionFiles() {\n        this.throwIfCleared();\n        const files = this.readDirectoryFiles();\n        return files\n            .map((file) => this.getFileSession(file))\n            .filter(isDefined)\n            .filter(({ sessionId }) => sessionId === this.sessionId)\n            .map(({ file }) => this._directory + '/' + file);\n    }\n    clearSession() {\n        if (this._locks.size > 0) {\n            this._events.once('unlocked', () => this.clearSession());\n            return;\n        }\n        if (this._cleared) {\n            return;\n        }\n        try {\n            const sessionFiles = this.getSessionFiles();\n            for (const file of sessionFiles) {\n                this._fileSystem.unlinkSync(file);\n            }\n        }\n        catch {\n            // Don't propagate errors\n        }\n        finally {\n            this._cleared = true;\n        }\n    }\n    lock(lockId) {\n        if (this._cleared || !this._lockable) {\n            return;\n        }\n        lockId = lockId ?? IdGenerator.uuid();\n        this._locks.add(lockId);\n        return lockId;\n    }\n    unlock(lockId) {\n        this._locks.delete(lockId);\n        if (this._locks.size === 0) {\n            this._events.emit('unlocked');\n        }\n    }\n    getFileSession(file) {\n        const [escapedSessionId, rawTimestamp] = this.splitByOneChar(file, '_').slice(-2);\n        const timestamp = parseInt(rawTimestamp);\n        if (isNaN(timestamp)) {\n            return undefined;\n        }\n        return { file, escapedSessionId, timestamp, sessionId: this.unescapeFileName(escapedSessionId) };\n    }\n    readDirectoryFiles() {\n        try {\n            return this._fileSystem.readDirSync(this._directory);\n        }\n        catch {\n            return [];\n        }\n    }\n    createSessionMarker() {\n        this._fileSystem.writeFileSync(this.marker, '');\n    }\n    escapeFileName(name) {\n        return name.replace(/_/g, '__');\n    }\n    unescapeFileName(name) {\n        return name.replace(/__/g, '_');\n    }\n    splitByOneChar(str, char) {\n        const result = [];\n        let start = 0;\n        let index = str.indexOf(char);\n        while (index !== -1) {\n            if (str[index + 1] === char) {\n                index = str.indexOf(char, index + 2);\n            }\n            else {\n                result.push(str.substring(start, index));\n                start = index + 1;\n                index = str.indexOf(char, start);\n            }\n        }\n        result.push(str.substring(start));\n        return result;\n    }\n    throwIfCleared() {\n        if (this._cleared) {\n            throw new Error('This session files are cleared.');\n        }\n    }\n}\n\nconst SOURCE_DEBUG_ID_VARIABLE = '_btDebugIds';\nclass DebugIdProvider {\n    _stackTraceConverter;\n    _debugIdMapProvider;\n    _fileDebugIds;\n    constructor(_stackTraceConverter, _debugIdMapProvider) {\n        this._stackTraceConverter = _stackTraceConverter;\n        this._debugIdMapProvider = _debugIdMapProvider;\n        this._fileDebugIds = this.loadDebugIds();\n    }\n    getDebugId(file) {\n        const debugId = this._fileDebugIds[file];\n        if (debugId) {\n            return debugId;\n        }\n        // in case of dynamic require - lazy load dynamically debug ids\n        this._fileDebugIds = this.loadDebugIds();\n        return this._fileDebugIds[file];\n    }\n    loadDebugIds() {\n        const debugIdMap = this._debugIdMapProvider?.getDebugIdMap();\n        if (!debugIdMap) {\n            return {};\n        }\n        const message = new Error().message;\n        const result = {};\n        for (const [rawStack, debugId] of Object.entries(debugIdMap)) {\n            const frames = this._stackTraceConverter.convert(rawStack, message);\n            if (!frames.length) {\n                continue;\n            }\n            // The first frame will have the file's path\n            const frame = frames[0];\n            result[frame.library] = debugId;\n        }\n        return result;\n    }\n}\n\nclass VariableDebugIdMapProvider {\n    _variable;\n    constructor(_variable) {\n        this._variable = _variable;\n    }\n    getDebugIdMap() {\n        return this._variable[SOURCE_DEBUG_ID_VARIABLE] ?? {};\n    }\n}\n\nexport { ANONYMOUS_FUNCTION, AttachmentManager, BacktraceCoreApi, BacktraceCoreClient, BacktraceCoreClientBuilder, BacktraceDatabase, BacktraceReport, BacktraceReportSubmissionResult, BacktraceStringAttachment, BacktraceUint8ArrayAttachment, BreadcrumbLogLevel, BreadcrumbType, BreadcrumbsManager, ConnectionError, DEFAULT_TIMEOUT, DebugIdProvider, FileAttributeManager, IdGenerator, OverwritingArray, RequestBacktraceReportSubmission, SOURCE_DEBUG_ID_VARIABLE, SessionFiles, SingleSessionProvider, SubmissionUrlInformation, SummedEvent, TimeHelper, UNKNOWN_FRAME, V8StackTraceConverter, VariableDebugIdMapProvider, anySignal, defaultBreadcrumbsLogLevel, defaultBreadcurmbType, jsonEscaper };\n//# sourceMappingURL=bundle.mjs.map\n",null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.unshift(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.unshift(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n    function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n    if (value !== null && value !== void 0) {\r\n        if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n        var dispose, inner;\r\n        if (async) {\r\n            if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n            dispose = value[Symbol.asyncDispose];\r\n        }\r\n        if (dispose === void 0) {\r\n            if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n            dispose = value[Symbol.dispose];\r\n            if (async) inner = dispose;\r\n        }\r\n        if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n        if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n        env.stack.push({ value: value, dispose: dispose, async: async });\r\n    }\r\n    else if (async) {\r\n        env.stack.push({ async: true });\r\n    }\r\n    return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n    function fail(e) {\r\n        env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n        env.hasError = true;\r\n    }\r\n    var r, s = 0;\r\n    function next() {\r\n        while (r = env.stack.pop()) {\r\n            try {\r\n                if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n                if (r.dispose) {\r\n                    var result = r.dispose.call(r.value);\r\n                    if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n                }\r\n                else s |= 1;\r\n            }\r\n            catch (e) {\r\n                fail(e);\r\n            }\r\n        }\r\n        if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n        if (env.hasError) throw env.error;\r\n    }\r\n    return next();\r\n}\r\n\r\nexport default {\r\n    __extends: __extends,\r\n    __assign: __assign,\r\n    __rest: __rest,\r\n    __decorate: __decorate,\r\n    __param: __param,\r\n    __metadata: __metadata,\r\n    __awaiter: __awaiter,\r\n    __generator: __generator,\r\n    __createBinding: __createBinding,\r\n    __exportStar: __exportStar,\r\n    __values: __values,\r\n    __read: __read,\r\n    __spread: __spread,\r\n    __spreadArrays: __spreadArrays,\r\n    __spreadArray: __spreadArray,\r\n    __await: __await,\r\n    __asyncGenerator: __asyncGenerator,\r\n    __asyncDelegator: __asyncDelegator,\r\n    __asyncValues: __asyncValues,\r\n    __makeTemplateObject: __makeTemplateObject,\r\n    __importStar: __importStar,\r\n    __importDefault: __importDefault,\r\n    __classPrivateFieldGet: __classPrivateFieldGet,\r\n    __classPrivateFieldSet: __classPrivateFieldSet,\r\n    __classPrivateFieldIn: __classPrivateFieldIn,\r\n    __addDisposableResource: __addDisposableResource,\r\n    __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,"/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.38\n   Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n   MIT License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://faisalman.github.io/ua-parser-js\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '1.0.38',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded',\n        UA_MAX_LENGTH = 500;\n\n    var AMAZON  = 'Amazon',\n        APPLE   = 'Apple',\n        ASUS    = 'ASUS',\n        BLACKBERRY = 'BlackBerry',\n        BROWSER = 'Browser',\n        CHROME  = 'Chrome',\n        EDGE    = 'Edge',\n        FIREFOX = 'Firefox',\n        GOOGLE  = 'Google',\n        HUAWEI  = 'Huawei',\n        LG      = 'LG',\n        MICROSOFT = 'Microsoft',\n        MOTOROLA  = 'Motorola',\n        OPERA   = 'Opera',\n        SAMSUNG = 'Samsung',\n        SHARP   = 'Sharp',\n        SONY    = 'Sony',\n        XIAOMI  = 'Xiaomi',\n        ZEBRA   = 'Zebra',\n        FACEBOOK    = 'Facebook',\n        CHROMIUM_OS = 'Chromium OS',\n        MAC_OS  = 'Mac OS';\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n        },\n        lowerize = function (str) {\n            return str.toLowerCase();\n        },\n        majorize = function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n        },\n        trim = function (str, len) {\n            if (typeof(str) === STR_TYPE) {\n                str = str.replace(/^\\s\\s*/, EMPTY);\n                return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n            }\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length === 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length === 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    // Safari < 3.0\n    var oldSafariMap = {\n            '1.0'   : '/8',\n            '1.2'   : '/1',\n            '1.3'   : '/3',\n            '2.0'   : '/412',\n            '2.0.2' : '/416',\n            '2.0.3' : '/417',\n            '2.0.4' : '/419',\n            '?'     : '/'\n        },\n        windowsVersionMap = {\n            'ME'        : '4.90',\n            'NT 3.11'   : 'NT3.51',\n            'NT 4.0'    : 'NT4.0',\n            '2000'      : 'NT 5.0',\n            'XP'        : ['NT 5.1', 'NT 5.2'],\n            'Vista'     : 'NT 6.0',\n            '7'         : 'NT 6.1',\n            '8'         : 'NT 6.2',\n            '8.1'       : 'NT 6.3',\n            '10'        : ['NT 6.4', 'NT 10.0'],\n            'RT'        : 'ARM'\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var regexes = {\n\n        browser : [[\n\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, 'Chrome']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       // Microsoft Edge\n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,      // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n            // Trident based\n            /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i,             // Avant/IEMobile/SlimBrowser\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Webkit/KHTML based                                               // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n                                                                                // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n            /(heytap|ovi)browser\\/([\\d\\.]+)/i,                                  // Heytap/Ovi\n            /(weibo)__([\\d\\.]+)/i                                               // Weibo\n            ], [NAME, VERSION], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UC'+BROWSER]], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            /\\bopt\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n            /fxios\\/([-\\w\\.]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, FIREFOX]], [\n            /\\bqihu|(qi?ho?o?|360)browser/i                                     // 360\n            ], [[NAME, '360 ' + BROWSER]], [\n            /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [                    // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /(comodo_dragon)\\/([\\w\\.]+)/i                                       // Comodo Dragon\n            ], [[NAME, /_/g, ' '], VERSION], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, 'Sogou Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, 'Sogou Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i                        // QQBrowser/2345 Browser\n            ], [NAME, VERSION], [\n            /(lbbrowser)/i,                                                     // LieBao Browser\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION], [\n            /(Klarna)\\/([\\w\\.]+)/i,                                             // Klarna Shopping Browser for iOS & Android\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i                     // Chromium/Instagram/Snapchat\n            ], [NAME, VERSION], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA']], [\n            /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i                        // TikTok\n            ], [VERSION, [NAME, 'TikTok']], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i                      // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n            /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i                // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,                         // Mozilla\n\n            // Other\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n            /(links) \\(([\\w\\.]+)/i,                                             // Links\n            /panasonic;(viera)/i                                                // Panasonic Viera\n            ], [NAME, VERSION], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /master.|lts./, \"\"]]\n        ],\n\n        cpu : [[\n\n            /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i                     // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\n            ], [[ARCHITECTURE, lowerize]], [\n\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i                                 // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i                                   // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /windows (ce|mobile); ppc;/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i                            // PowerPC\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, lowerize]]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]([-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i                          // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\((ipad);[-\\w\\),; ]+apple/i,                                       // iPad\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n            /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,                  // Xiaomi POCO\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n            /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,                   // Xiaomi Redmi\n            /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,        // Xiaomi Redmi 'numeric' models\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n            /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i,                     // Redmi Pad\n            /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i                        // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n            /\\b(opd2\\d{3}a?) bui/i\n            ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n            // Vivo\n            /vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ](\\w*)/i,\n            /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+)/i,\n            /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n            // Nokia\n            /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n            /nokia[-_ ]?([-\\w\\.]*)/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n            // Google\n            /(pixel c)\\b/i                                                      // Google Pixel C\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n            /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i                         // Google Pixel\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n            // Sony\n            /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // OnePlus\n            / (kb2005|in20[12]5|be20[12][59])\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,                             // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /\\(bb10; (\\w+)/i                                                    // BlackBerry 10\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(asus)-?(\\w+)/i,                                                   // Asus\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(lenovo)[-_ ]?([-\\w]+)/i,                                          // Lenovo\n            /(jolla)/i,                                                         // Jolla\n            /(oppo) ?([\\w ]+) bui/i                                             // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(archos) (gamepad2?)/i,                                            // Archos\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(nook)[\\w ]+build\\/(\\w+)/i,                                        // Nook\n            /(dell) (strea[kpr\\d ]*[\\dko])/i,                                   // Dell Streak\n            /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,                                  // Le Pan Tablets\n            /(trinity)[- ]*(t\\d{3}) bui/i,                                      // Trinity Tablets\n            /(gigaset)[- ]+(q\\w{1,9}) bui/i,                                    // Gigaset Tablets\n            /(vodafone) ([\\w ]+)(?:\\)| bui)/i                                   // Vodafone\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /(u304aa)/i                                                         // AT&T\n            ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n            /\\bsie-(\\w*)/i                                                      // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n            /\\b(rct\\w+) b/i                                                     // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n            /\\b(venue[\\d ]{2,7}) b/i                                            // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n            /\\b(q(?:mv|ta)\\w+) b/i                                              // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n            /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i                       // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n            /\\b(tm\\d{3}\\w+) b/i\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n            /\\b(k88) b/i                                                        // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n            /\\b(nx\\d{3}j) b/i                                                   // ZTE Nubia\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n            /\\b(gen\\d{3}) b.+49h/i                                              // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n            /\\b(zur\\d{3}) b/i                                                   // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n            /\\b((zeki)?tb.*\\b) b/i                                              // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n            /\\b([yr]\\d{2}) b/i,\n            /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i                                // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n            /\\b(ns-?\\w{0,9}) b/i                                                // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n            /\\b((nxa|next)-?\\w{0,9}) b/i                                        // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n            /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i                  // Voice Xtreme Phones\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n            /\\b(lvtel\\-)?(v1[12]) b/i                                           // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n            /\\b(ph-1) /i                                                        // Essential PH-1\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n            /\\b(v(100md|700na|7011|917g).*\\b) b/i                               // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n            /\\b(trio[-\\w\\. ]+) b/i                                              // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n            /\\btu_(1491) b/i                                                    // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n            /(shield[\\w ]+) b/i                                                 // Nvidia Shield Tablets\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i             // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i        // LG SmartTV\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                              // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mitv-\\w{5}) bui/i                                                 // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n            /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i                   // SmartTV from Unidentified Vendors\n            ], [[TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) ([wids3utch]+)/i                                        // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n            /droid.+; (shield) bui/i                                            // Nvidia\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n            /(playstation [345portablevi]+)/i                                   // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /((pebble))app/i                                                    // Pebble\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n            /(quest( \\d| pro)?)/i                                               // Oculus Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i    // Android Phones from Unidentified Vendors\n            ], [MODEL, [TYPE, MOBILE]], [\n            /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i       // Android Tablets from Unidentified Vendors\n            ], [MODEL, [TYPE, TABLET]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /(android[-\\w\\. ]{0,9});.+buil/i                                    // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,                           // KHTML/Tasman/Links\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n            /\\b(libweb)/i\n            ], [NAME, VERSION], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /microsoft (windows) (vista|xp)/i                                   // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i             // Windows Phone\n            ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n            /windows nt 6\\.2; (arm)/i,                                        // Windows RT\n            /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n            /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n            ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n            // iOS/macOS\n            /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,              // iOS\n            /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+haiku)/i                             // Mac OS\n            ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i                    // Android-x86/HarmonyOS\n            ], [VERSION, NAME], [                                               // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n            /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n            /(blackberry)\\w*\\/([\\w\\.]*)/i,                                      // Blackberry\n            /(tizen|kaios)[\\/ ]([\\w\\.]+)/i,                                     // Tizen/KaiOS\n            /\\((series40);/i                                                    // Series 40\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i         // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /web0s;.+rt(tv)/i,\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\n            ], [VERSION, [NAME, 'webOS']], [\n            /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google Chromecast\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast\n            ], [VERSION, [NAME, CHROME+'cast']], [\n            /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                  // Chromium OS\n            ], [[NAME, CHROMIUM_OS], VERSION],[\n\n            // Smart TVs\n            /panasonic;(viera)/i,                                               // Panasonic Viera\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) ([wids345portablevuch]+)/i,                 // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /(mint)[\\/\\(\\) ]?(\\w*)/i,                                           // Mint\n            /(mageia|vectorlinux)[; ]/i,                                        // Mageia/VectorLinux\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n            /(hurd|linux) ?([\\w\\.]*)/i,                                         // Hurd/Linux\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) (\\w+)/i                                                    // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\w\\.\\d]*)/i                                             // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,                                  // AIX\n            /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    var UAParser = function (ua, extensions) {\n\n        if (typeof ua === OBJ_TYPE) {\n            extensions = ua;\n            ua = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions).getResult();\n        }\n\n        var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n        var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n        var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n        var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n        var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n        this.getBrowser = function () {\n            var _browser = {};\n            _browser[NAME] = undefined;\n            _browser[VERSION] = undefined;\n            rgxMapper.call(_browser, _ua, _rgxmap.browser);\n            _browser[MAJOR] = majorize(_browser[VERSION]);\n            // Brave-specific detection\n            if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n                _browser[NAME] = 'Brave';\n            }\n            return _browser;\n        };\n        this.getCPU = function () {\n            var _cpu = {};\n            _cpu[ARCHITECTURE] = undefined;\n            rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n            return _cpu;\n        };\n        this.getDevice = function () {\n            var _device = {};\n            _device[VENDOR] = undefined;\n            _device[MODEL] = undefined;\n            _device[TYPE] = undefined;\n            rgxMapper.call(_device, _ua, _rgxmap.device);\n            if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n                _device[TYPE] = MOBILE;\n            }\n            // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n            if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n                _device[MODEL] = 'iPad';\n                _device[TYPE] = TABLET;\n            }\n            return _device;\n        };\n        this.getEngine = function () {\n            var _engine = {};\n            _engine[NAME] = undefined;\n            _engine[VERSION] = undefined;\n            rgxMapper.call(_engine, _ua, _rgxmap.engine);\n            return _engine;\n        };\n        this.getOS = function () {\n            var _os = {};\n            _os[NAME] = undefined;\n            _os[VERSION] = undefined;\n            rgxMapper.call(_os, _ua, _rgxmap.os);\n            if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n                _os[NAME] = _uach.platform  \n                                    .replace(/chrome os/i, CHROMIUM_OS)\n                                    .replace(/macos/i, MAC_OS);           // backward compatibility\n            }\n            return _os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return _ua;\n        };\n        this.setUA = function (ua) {\n            _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n            return this;\n        };\n        this.setUA(_ua);\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    ///////////\n    // Export\n    //////////\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === FUNC_TYPE && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (typeof window !== UNDEF_TYPE) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (ua) {\n            parser.setUA(ua);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["BreadcrumbLogLevel","BreadcrumbType","AbortController","undefined","this","UAParser"],"mappings":"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","x_google_ignoreList":[2,7]}