@affogatosoftware/recorder 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.iife.js","sources":["../../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/common/utils.js","../../node_modules/axios/lib/platform/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/helpers/throttle.js","../../node_modules/axios/lib/helpers/progressEventReducer.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/helpers/resolveConfig.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/helpers/composeSignals.js","../../node_modules/axios/lib/helpers/trackStream.js","../../node_modules/axios/lib/adapters/fetch.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../node_modules/axios/index.js","../../src/requests.ts","../../src/logger.ts","../../src/recorder/sessionRecorder.ts","../../src/recorder/eventRecorder.ts","../../src/recorder/errorRecorder.ts","../../src/recorder/networkRecorder.ts","../../node_modules/ua-parser-js/src/main/ua-parser.mjs","../../src/recorder/recorder.ts"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\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\nfunction __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}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n \n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request, fetchOptions);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.11.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import axios, {type AxiosInstance, type AxiosRequestConfig} from \"axios\";\n\nconst api: AxiosInstance = axios.create({\n baseURL: import.meta.env.DEV\n ? \"http://localhost:8080\"\n : \"https://scryspell.com\",\n withCredentials: true,\n});\n\nexport const get = <T = unknown>(\n url: string,\n config?: AxiosRequestConfig\n) => api.get<T>(url, config);\n\nexport const post = <T = unknown>(\n url: string,\n data?: unknown,\n config?: AxiosRequestConfig\n) => api.post<T>(url, data, config);\n\nexport const del = <T = unknown>(\n url: string,\n config?: AxiosRequestConfig\n) => api.delete<T>(url, config);\n\n\nexport const put = <T = unknown>(\n url: string,\n data?: unknown,\n config?: AxiosRequestConfig\n) => api.put<T>(url, data, config);\n\nexport const patch = <T = unknown>(\n url: string,\n data?: unknown,\n config?: AxiosRequestConfig\n) => api.patch<T>(url, data, config);\n\nexport const postForm = <T = unknown>(\n url: string,\n data: unknown,\n config?: AxiosRequestConfig\n) => api.postForm<T>(url, data, config);","export const logger = {\n info: (...args: any[]) => {\n console.log(\"info\", ...args);\n },\n warn: (...args: any[]) => {\n console.log(\"warn\", ...args);\n },\n error: (...args: any[]) => {\n console.log(\"error\", ...args);\n }\n}","import {record} from \"rrweb\";\nimport {patch} from \"../requests\";\nimport {logger} from \"../logger\";\nimport type {recordOptions} from \"rrweb/typings/types\";\nimport {type RecorderSettings} from \"./recorder\";\nimport type {eventWithTime, listenerHandler} from \"@rrweb/types\";\n\n\nexport interface SessionBuffer {\n data: any[];\n}\n\nexport class SessionRecorder {\n private capturedSessionId: string | null = null;\n private buffer: SessionBuffer;\n private stopFn: listenerHandler | undefined;\n private readonly flushIntervalMs: number;\n private flushTimer: NodeJS.Timeout | undefined;\n\n constructor(private recorderSettings: RecorderSettings) {\n this.buffer = {\n data: []\n };\n\n this.flushIntervalMs = 2000; // 2 * 1000\n }\n\n public setCapturedSessionId(id: string) {\n this.capturedSessionId = id;\n}\n\n public start = () => {\n if (Object.assign === undefined) {\n return;\n }\n this.buffer = {\n data: []\n };\n const recordOptions: recordOptions<eventWithTime> = {\n emit: (event) => {\n this.buffer.data.push(event);\n },\n blockClass: \"scry-block\"\n };\n\n const maskFn = (input: string) => input.replaceAll(/\\S/g, \"*\");\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n recordOptions.maskTextFn = maskFn;\n recordOptions.maskTextSelector = \"*\";\n recordOptions.maskAllInputs = true;\n recordOptions.maskInputFn = maskFn;\n break;\n case \"input-and-textarea\":\n recordOptions.maskAllInputs = true;\n break;\n case \"input-password-or-email-and-textarea\":\n recordOptions.maskInputOptions = {\n password: true,\n email: true,\n textarea: true\n };\n break;\n default:\n recordOptions.maskTextFn = maskFn;\n recordOptions.maskTextSelector = \"*\";\n recordOptions.maskAllInputs = true;\n recordOptions.maskInputFn = maskFn;\n }\n\n this.stopFn = record(recordOptions);\n this.scheduleFlush();\n };\n\n // separate method for scheduling flush\n private scheduleFlush = () => {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n }\n this.flushTimer = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n // preserve data on flush failure\n private flush = async () => {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n\n if (this.capturedSessionId && this.buffer.data.length > 0) {\n try {\n let response = await patch(`public/captured-sessions/${this.capturedSessionId}/recording`, this.buffer, { withCredentials: false });\n\n if (response.status >= 400) {\n logger.error(`status ${response.status} when trying to save session recording data.`);\n logger.error(response.data);\n } else {\n // clear buffer only if response was successful\n this.clearAllBufferData();\n }\n } catch (error) {\n logger.error(\"Error flushing session data:\", error);\n // TODO add a failure count that will eventually stop, so we don't store a ton of data and hog client memory.\n // do not clear the buffer, so we retry next time\n }\n }\n\n this.scheduleFlush();\n };\n\n public stop = () => {\n if (this.stopFn) {\n this.stopFn();\n }\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n };\n\n private clearAllBufferData = () => {\n this.buffer.data = [];\n };\n}\n","import {logger} from \"../logger\";\nimport {post} from \"../requests\";\nimport {type RecorderSettings} from \"./recorder\";\nimport {assertNever} from \"../utils\";\n\nexport interface InteractionEvent {\n eventType: string | \"click\" | \"keydown\" | \"page_view\" | \"change\" | \"submit\";\n tagName?: string | null;\n timestamp: number;\n host: string;\n path: string;\n text: string | null;\n domContext?: JsonNode[];\n queryParams?: [string, string][];\n}\n\nexport interface ClickEvent extends InteractionEvent {\n eventType: \"click\";\n}\n\nexport interface KeyEvent extends InteractionEvent {\n eventType: \"keydown\";\n key: string;\n}\n\nexport interface JsonNode {\n tag: string;\n attrs: Record<string, string>;\n}\n\nexport class EventRecorder {\n private eventsBuffer: InteractionEvent[] = [];\n private isRunning = false;\n private tagsToCapture = new Set<string>([\"button\", \"a\", \"select\", \"textarea\", \"input\"]);\n private queryParamsAllowed = new Set<string>([\n \"utm_source\",\n \"source\",\n \"ref\",\n \"utm_medium\",\n \"medium\",\n \"utm_campaign\",\n \"campaign\",\n \"utm_content\",\n \"content\",\n \"utm_term\",\n \"term\"\n ]);\n\n // private piiAttribute = \"data-pii\";\n private readonly flushIntervalMs = 2000;\n private capturedSessionId: string | undefined;\n private flushTimerId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private window: Window, private recorderSettings: RecorderSettings) {}\n\n public start = () => {\n if (this.isRunning) {\n return;\n }\n this.isRunning = true;\n this.eventsBuffer = [];\n\n const originalPushState = this.window.history.pushState.bind(this.window.history);\n this.window.history.pushState = (data: any, unused: string, url?: string | URL | null) => {\n let urlString = \"\";\n if (url instanceof URL) {\n urlString = url.toString();\n } else if (url) {\n urlString = url;\n } else {\n urlString = \"\";\n }\n\n this.handlePageView(urlString);\n return originalPushState(data, unused, url);\n }\n\n this.window.addEventListener(\"pageshow\", (e) => {\n try {\n this.handlePageView(this.window.location.pathname);\n } catch (error) {\n logger.error(\"Failed to capture URL change event\", error);\n }\n });\n this.window.addEventListener(\"change\", this.handler);\n this.window.addEventListener(\"click\", this.handler);\n this.window.addEventListener(\"keydown\", this.handler);\n\n this.scheduleFlush();\n };\n\n private scheduleFlush = () => {\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n }\n this.flushTimerId = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n private flush = async () => {\n if (this.eventsBuffer.length > 0 && this.capturedSessionId) {\n try {\n const response = await post(`/public/captured-sessions/${this.capturedSessionId}/ui-events`, this.eventsBuffer, { withCredentials: false });\n if (response.status !== 201) {\n logger.error(\"Failed to save ui events\", response.data);\n }\n this.eventsBuffer = [];\n } catch (error) {\n logger.error(\"Failed to save ui events\", error);\n this.eventsBuffer = [];\n }\n }\n this.scheduleFlush();\n };\n\n private handlePageView = (path: string) => {\n if (!this.isRunning) {\n return;\n }\n try {\n const timestamp = Date.now();\n\n const isPathAbsolute = path.charAt(0) === \"/\";\n if (!isPathAbsolute) {\n path = this.window.location.pathname + \"/\" + path;\n }\n\n const url = new URL(this.window.location.protocol + \"//\" + this.window.location.host + path + this.window.location.search);\n\n const sanitizedUrlString = this.sanitizeUrlParams(url.toString(), this.queryParamsAllowed);\n const sanitizedUrl = new URL(sanitizedUrlString);\n const searchParamsArray = Array.from(sanitizedUrl.searchParams);\n\n const interactionEvent = {\n eventType: \"page_view\",\n timestamp,\n text: path,\n host: sanitizedUrl.hostname,\n path,\n\n } as InteractionEvent\n\n if (searchParamsArray.length > 0) {\n interactionEvent.queryParams = searchParamsArray;\n }\n\n this.eventsBuffer.push(interactionEvent);\n\n } catch (error) {\n logger.error(\"Failed to capture URL change event\", error);\n }\n };\n\n private sanitizeUrlParams = (url: string, paramsAllowed: Set<string>) => {\n try {\n const urlObj = new URL(url);\n for (const key of urlObj.searchParams.keys()) {\n if (!paramsAllowed.has(key.toLowerCase())) {\n urlObj.searchParams.set(key, \"$redacted\");\n }\n }\n\n return urlObj.toString();\n } catch (e) {\n logger.error(\"Failed to sanitize URL params\", e);\n return url;\n }\n\n }\n\n private handler = (e: Event) => {\n if (!this.isRunning) {\n return;\n }\n try {\n const eventType = e.type;\n const target = e.target as HTMLElement | null;\n const tagName = target?.tagName.toLowerCase();\n\n if (!(tagName && this.tagsToCapture.has(tagName))) {\n return;\n }\n\n const url = new URL(this.window.location.href);\n const host = url.hostname;\n const path = url.pathname;\n const timestamp = Date.now();\n const domContext = this.captureDomContext(target as HTMLElement);\n\n switch (e.type) {\n case \"click\":\n const clickEvent = this.handleClick(target, tagName, timestamp, host, path);\n this.eventsBuffer.push(clickEvent);\n break;\n case \"keydown\":\n const keyEvent = this.handleKeyDown(e, tagName, target, timestamp, host, path);\n this.eventsBuffer.push(keyEvent);\n break;\n case \"change\":\n const changeEvent = this.handleChange(target, tagName, timestamp, host, path);\n this.eventsBuffer.push(changeEvent);\n break;\n default:\n this.eventsBuffer.push({\n eventType,\n tagName,\n timestamp,\n host,\n path,\n text: null,\n domContext\n });\n }\n } catch (error) {\n logger.error(\"Failed to capture event\", error);\n }\n };\n\n private handleChange(target: HTMLElement | null | HTMLSelectElement,\n tagName: string,\n timestamp: number,\n host: string,\n path: string): InteractionEvent {\n let text: string | null = null;\n if (target instanceof HTMLSelectElement) {\n text = target.options[target.selectedIndex].text;\n }\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n text = null;\n break;\n case \"input-and-textarea\":\n break;\n case \"input-password-or-email-and-textarea\":\n break;\n default:\n text = null;\n }\n\n return {\n eventType: \"change\",\n tagName,\n timestamp,\n text: text === \"\" ? null : text,\n host,\n path,\n domContext: this.captureDomContext(target as HTMLElement)\n };\n }\n\n private handleClick(target: HTMLElement | null | HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement | HTMLAnchorElement | HTMLImageElement,\n tagName: string, timestamp: number, host: string, path: string): ClickEvent {\n let text: string | null = \"\";\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n const labelText = this.findInputOrSelectOrTextAreaLabel(target);\n if (labelText) {\n text = labelText;\n } else if (target.placeholder) {\n text = target.placeholder;\n }\n } else if (target instanceof HTMLSelectElement) {\n const labelText = this.findInputOrSelectOrTextAreaLabel(target);\n if (labelText) {\n text = labelText;\n } else {\n text = target.value + \" (\" + target.options[target.selectedIndex].text + \")\";\n }\n } else if (target instanceof HTMLButtonElement) {\n text = target.innerText;\n } else if (target instanceof HTMLAnchorElement) {\n text = target.href;\n } else if (target instanceof HTMLImageElement) {\n text = target.src;\n }\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n text = null;\n break;\n case \"input-and-textarea\":\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n text = null;\n }\n break;\n case \"input-password-or-email-and-textarea\":\n if (target instanceof HTMLTextAreaElement) {\n text = null;\n } else if (target instanceof HTMLInputElement) {\n if (target.type === \"password\" || target.type === \"email\" || target.type === \"e-mail\") {\n text = null;\n }\n }\n break;\n default:\n text = null;\n }\n\n return {\n eventType: \"click\",\n tagName,\n timestamp,\n text: text === \"\" ? null : text,\n host,\n path,\n domContext: this.captureDomContext(target as HTMLElement)\n };\n }\n\n private handleKeyDown(e: Event,\n tagName: string,\n target: HTMLElement | null | HTMLInputElement | HTMLTextAreaElement,\n timestamp: number,\n host: string, path: string): KeyEvent {\n const kbe = e as KeyboardEvent;\n const key = kbe.key;\n\n let text: string | null = null;\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n const labelText = this.findInputOrSelectOrTextAreaLabel(target);\n if (labelText) {\n text = labelText;\n } else if (target.placeholder) {\n text = target.placeholder;\n }\n }\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n text = null;\n break;\n case \"input-and-textarea\":\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n text = null;\n }\n break;\n case \"input-password-or-email-and-textarea\":\n if (target instanceof HTMLTextAreaElement) {\n text = null;\n } else if (target instanceof HTMLInputElement) {\n if (target.type === \"password\" || target.type === \"email\" || target.type === \"e-mail\") {\n text = null;\n }\n }\n break;\n default:\n text = null;\n }\n\n return {\n eventType: \"keydown\",\n tagName,\n timestamp,\n text,\n key,\n host,\n path,\n domContext: this.captureDomContext(target as HTMLElement)\n }\n }\n\n private findInputOrSelectOrTextAreaLabel = (el: HTMLElement | null): string | null => {\n const allowedTags = new Set([\"input\", \"select\", \"textarea\"]);\n if (!el || !allowedTags.has(el.tagName.toLowerCase())) return null;\n\n /* 1. <label><input|select …></label> (label wraps the control) */\n const wrappingLabel = el.closest(\"label\");\n if (wrappingLabel) {\n // Take only the TEXT_NODEs that are direct children of <label>\n const text = Array.from(wrappingLabel.childNodes)\n .filter(node => node.nodeName.toLowerCase() !== \"select\")\n .map(node => (node.textContent ?? \"\").trim())\n .filter(Boolean) // remove empty strings\n .join(\" \")\n .trim();\n\n if (text) return text;\n }\n\n /* 2. <label for=\"id\">…</label> + <input|select id=\"id\" …> */\n const id = (el as HTMLInputElement).id;\n if (id) {\n const explicitLabel = el.ownerDocument.querySelector<HTMLLabelElement>(\n `label[for=\"${CSS.escape(id)}\"]`\n );\n if (explicitLabel) {\n const text = Array.from(explicitLabel.childNodes)\n .filter(node => node.nodeName.toLowerCase() !== \"select\")\n .map(node => (node.textContent ?? \"\").trim())\n .filter(Boolean)\n .join(\" \")\n .trim();\n\n if (text) return text;\n }\n }\n\n /* 3. Accessibility fall-backs */\n const ariaLabel = el.getAttribute(\"aria-label\");\n if (ariaLabel) return ariaLabel.trim();\n\n const ariaLabelledBy = el.getAttribute(\"aria-labelledby\");\n if (ariaLabelledBy) {\n const ref = el.ownerDocument.getElementById(ariaLabelledBy);\n return ref?.textContent?.trim() || null;\n }\n\n return null;\n }\n\n public stop = () => {\n this.isRunning = false;\n this.window.removeEventListener(\"change\", this.handler);\n this.window.removeEventListener(\"click\", this.handler);\n this.window.removeEventListener(\"keydown\", this.handler);\n\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n this.flushTimerId = null;\n }\n };\n\n private captureDomContext = (targetElement: HTMLElement): JsonNode[] => {\n const context: JsonNode[] = [];\n context.push(this.toJsonNode(targetElement));\n\n let current = targetElement.parentElement;\n while (current != null && context.length < 6) {\n context.push(this.toJsonNode(current));\n current = current.parentElement;\n }\n\n return context;\n }\n\n private toJsonNode = (node: HTMLElement): JsonNode => {\n const attrs: Record<string, string> = {};\n\n // Collect safe attributes only\n [\"id\", \"class\", \"name\", \"type\", \"role\", \"aria-label\"].forEach((key) => {\n const val = node.getAttribute(key);\n if (val) attrs[key] = val;\n });\n\n return {\n tag: node.tagName.toLowerCase(),\n attrs\n };\n }\n\n\n public setCapturedSessionId(uuid: string) {\n this.capturedSessionId = uuid;\n }\n}\n","// Captures console errors, warnings, and uncaught errors/promise rejections\n// Buffers error events and flushes to API endpoint periodically similar to EventRecorder\nimport {logger} from \"../logger\";\nimport {post} from \"../requests\";\n\nexport interface ConsoleError {\n errorType: \"console_error\" | \"console_warn\" | \"uncaught_error\" | \"unhandled_rejection\";\n message: string;\n stack?: string;\n timestamp: number;\n source?: string; // file/line info\n}\n\nexport class ErrorRecorder {\n private errorsBuffer: ConsoleError[] = [];\n private isRunning = false;\n private readonly flushIntervalMs = 2000;\n private capturedSessionId: string | undefined;\n private flushTimerId: ReturnType<typeof setTimeout> | null = null;\n private originalConsoleError: typeof console.error;\n private originalConsoleWarn: typeof console.warn;\n private enabled: boolean;\n\n constructor(private window: Window, consoleErrorSettings?: { enabled: boolean }) {\n this.originalConsoleError = console.error.bind(console);\n this.originalConsoleWarn = console.warn.bind(console);\n this.enabled = consoleErrorSettings?.enabled ?? false; // Default enabled for backwards compatibility\n }\n\n public start = () => {\n if (this.isRunning || !this.enabled) {\n return;\n }\n this.isRunning = true;\n this.errorsBuffer = [];\n\n // Intercept console.error\n console.error = (...args: any[]) => {\n this.captureConsoleError(\"console_error\", args);\n this.originalConsoleError(...args);\n };\n\n // Intercept console.warn\n console.warn = (...args: any[]) => {\n this.captureConsoleError(\"console_warn\", args);\n this.originalConsoleWarn(...args);\n };\n\n // Capture uncaught errors\n this.window.addEventListener(\"error\", this.handleUncaughtError);\n\n // Capture unhandled promise rejections\n this.window.addEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\n\n this.scheduleFlush();\n };\n\n public stop = () => {\n this.isRunning = false;\n\n // Restore original console methods\n console.error = this.originalConsoleError;\n console.warn = this.originalConsoleWarn;\n\n // Remove event listeners\n this.window.removeEventListener(\"error\", this.handleUncaughtError);\n this.window.removeEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\n\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n this.flushTimerId = null;\n }\n };\n\n private captureConsoleError = (errorType: \"console_error\" | \"console_warn\", args: any[]) => {\n if (!this.isRunning) {\n return;\n }\n\n try {\n const message = args.map(arg => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n\n const error: ConsoleError = {\n errorType,\n message,\n timestamp: Date.now()\n };\n\n // Try to extract stack trace if available\n if (args.length > 0 && args[0] instanceof Error) {\n error.stack = args[0].stack;\n }\n\n this.errorsBuffer.push(error);\n } catch (captureError) {\n logger.error(\"Failed to capture console error\", captureError);\n }\n };\n\n private handleUncaughtError = (event: ErrorEvent) => {\n if (!this.isRunning) {\n return;\n }\n\n try {\n const error: ConsoleError = {\n errorType: \"uncaught_error\",\n message: event.message,\n stack: event.error?.stack,\n timestamp: Date.now(),\n source: event.filename ? `${event.filename}:${event.lineno}:${event.colno}` : undefined\n };\n\n this.errorsBuffer.push(error);\n } catch (captureError) {\n logger.error(\"Failed to capture uncaught error\", captureError);\n }\n };\n\n private handleUnhandledRejection = (event: PromiseRejectionEvent) => {\n if (!this.isRunning) {\n return;\n }\n\n try {\n let message: string;\n let stack: string | undefined;\n\n if (event.reason instanceof Error) {\n message = event.reason.message;\n stack = event.reason.stack;\n } else {\n message = String(event.reason);\n }\n\n const error: ConsoleError = {\n errorType: \"unhandled_rejection\",\n message,\n stack,\n timestamp: Date.now()\n };\n\n this.errorsBuffer.push(error);\n } catch (captureError) {\n logger.error(\"Failed to capture unhandled rejection\", captureError);\n }\n };\n\n private scheduleFlush = () => {\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n }\n this.flushTimerId = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n private flush = async () => {\n if (this.errorsBuffer.length > 0 && this.capturedSessionId) {\n try {\n const response = await post(`/public/captured-sessions/${this.capturedSessionId}/console-errors`, this.errorsBuffer, { withCredentials: false });\n this.errorsBuffer = [];\n } catch (error) {\n logger.error(\"Failed to flush console errors\", error);\n this.errorsBuffer = [];\n }\n }\n this.scheduleFlush();\n };\n\n public setCapturedSessionId(uuid: string) {\n this.capturedSessionId = uuid;\n }\n}","import {logger} from \"../logger\";\nimport {post} from \"../requests\";\n\nexport interface NetworkRequest {\n requestId: string;\n type: \"xhr\" | \"fetch\";\n method: string;\n url: string;\n requestHeaders?: Record<string, string>;\n requestBody?: string;\n responseStatus?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n timestamp: number;\n duration?: number;\n error?: string;\n}\n\ninterface NetworkRecorderSettings {\n enabled: boolean;\n maxRequestBodySize: number;\n maxResponseBodySize: number;\n excludeDomains: string[];\n captureHeaders: boolean;\n captureRequestBodies: boolean;\n captureResponseBodies: boolean;\n excludeHeaders: string[];\n requestBodyMaskingFunction?: (body: string) => string;\n}\n\nexport class NetworkRecorder {\n private requestsBuffer: NetworkRequest[] = [];\n private pendingRequests = new Map<string, Partial<NetworkRequest>>();\n private isRunning = false;\n private readonly flushIntervalMs = 2000;\n private capturedSessionId: string | undefined;\n private flushTimerId: ReturnType<typeof setTimeout> | null = null;\n\n // Store original implementations\n private originalFetch: typeof fetch;\n private originalXHROpen: typeof XMLHttpRequest.prototype.open;\n private originalXHRSend: typeof XMLHttpRequest.prototype.send;\n\n // URL sanitization - reuse pattern from EventRecorder\n private queryParamsAllowed = new Set<string>([\n \"utm_source\", \"source\", \"ref\", \"utm_medium\", \"medium\",\n \"utm_campaign\", \"campaign\", \"utm_content\", \"content\", \"utm_term\", \"term\"\n ]);\n\n private networkSettings: NetworkRecorderSettings = {\n enabled: false, // Default disabled\n maxRequestBodySize: 10 * 1024, // 10KB\n maxResponseBodySize: 50 * 1024, // 50KB\n excludeDomains: [],\n captureHeaders: false,\n captureRequestBodies: false,\n captureResponseBodies: true,\n excludeHeaders: []\n };\n\n constructor(private window: Window, settings?: Partial<NetworkRecorderSettings>) {\n this.originalFetch = this.window.fetch.bind(this.window);\n this.originalXHROpen = XMLHttpRequest.prototype.open;\n this.originalXHRSend = XMLHttpRequest.prototype.send;\n \n if (settings) {\n this.networkSettings = { ...this.networkSettings, ...settings };\n }\n }\n\n public start = () => {\n if (this.isRunning || !this.networkSettings.enabled) {\n return;\n }\n this.isRunning = true;\n this.requestsBuffer = [];\n\n this.patchFetch();\n this.patchXHR();\n this.scheduleFlush();\n };\n\n public stop = () => {\n this.isRunning = false;\n\n // Restore original implementations\n this.window.fetch = this.originalFetch;\n XMLHttpRequest.prototype.open = this.originalXHROpen;\n XMLHttpRequest.prototype.send = this.originalXHRSend;\n\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n this.flushTimerId = null;\n }\n };\n\n public setCapturedSessionId(uuid: string) {\n this.capturedSessionId = uuid;\n }\n\n\n private scheduleFlush = () => {\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n }\n this.flushTimerId = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n private flush = async () => {\n if (this.requestsBuffer.length > 0 && this.capturedSessionId) {\n try {\n const response = await post(`/public/captured-sessions/${this.capturedSessionId}/network-requests`, this.requestsBuffer, { withCredentials: false });\n if (response.status !== 201) {\n logger.error(\"Failed to save network requests\", response.data);\n }\n this.requestsBuffer = [];\n } catch (error) {\n logger.error(\"Failed to save network requests\", error);\n this.requestsBuffer = [];\n }\n }\n this.scheduleFlush();\n };\n\n private patchFetch = () => {\n const self = this;\n this.window.fetch = async function(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n const requestId = self.generateRequestId();\n const timestamp = Date.now();\n \n let url = \"\";\n let method = \"GET\";\n let requestHeaders: Record<string, string> = {};\n let requestBody: string | undefined;\n\n // Parse input to extract URL and method\n if (typeof input === \"string\") {\n url = input;\n } else if (input instanceof URL) {\n url = input.toString();\n } else if (input instanceof Request) {\n url = input.url;\n method = input.method;\n if (self.networkSettings.captureHeaders) {\n input.headers.forEach((value, key) => {\n requestHeaders[key] = value;\n });\n }\n if (self.networkSettings.captureRequestBodies && input.body) {\n try {\n const clonedRequest = input.clone();\n requestBody = await clonedRequest.text();\n } catch (e) {\n // Body already consumed, skip\n }\n }\n }\n\n if (init) {\n method = init.method || method;\n if (self.networkSettings.captureHeaders && init.headers) {\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => {\n requestHeaders[key] = value;\n });\n } else if (Array.isArray(init.headers)) {\n init.headers.forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n } else {\n Object.assign(requestHeaders, init.headers);\n }\n }\n if (self.networkSettings.captureRequestBodies && init.body) {\n if (typeof init.body === \"string\") {\n requestBody = init.body;\n } else {\n try {\n requestBody = JSON.stringify(init.body);\n } catch (e) {\n requestBody = \"[Unable to serialize body]\";\n }\n }\n }\n }\n\n if (!self.shouldCaptureRequest(url)) {\n return self.originalFetch(input, init);\n }\n\n const sanitizedUrl = self.sanitizeUrl(url);\n const filteredHeaders = self.filterHeaders(requestHeaders);\n const truncatedBody = self.truncateContent(requestBody, self.networkSettings.maxRequestBodySize);\n\n // Create initial request record\n const networkRequest: Partial<NetworkRequest> = {\n requestId,\n type: \"fetch\",\n method: method.toUpperCase(),\n url: sanitizedUrl,\n requestHeaders: Object.keys(filteredHeaders).length > 0 ? filteredHeaders : undefined,\n requestBody: truncatedBody,\n timestamp\n };\n\n self.pendingRequests.set(requestId, networkRequest);\n\n try {\n const response = await self.originalFetch(input, init);\n const duration = Date.now() - timestamp;\n \n let responseHeaders: Record<string, string> = {};\n let responseBody: string | undefined;\n\n if (self.networkSettings.captureHeaders) {\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n }\n\n if (self.networkSettings.captureResponseBodies) {\n try {\n const clonedResponse = response.clone();\n const text = await clonedResponse.text();\n responseBody = self.truncateContent(text, self.networkSettings.maxResponseBodySize);\n } catch (e) {\n responseBody = \"[Unable to read response body]\";\n }\n }\n\n // Complete the request record\n const completedRequest: NetworkRequest = {\n ...networkRequest as NetworkRequest,\n responseStatus: response.status,\n responseHeaders: Object.keys(responseHeaders).length > 0 ? self.filterHeaders(responseHeaders) : undefined,\n responseBody,\n duration\n };\n\n self.addCompletedRequest(requestId, completedRequest);\n return response;\n\n } catch (error) {\n const duration = Date.now() - timestamp;\n const errorRequest: NetworkRequest = {\n ...networkRequest as NetworkRequest,\n error: error instanceof Error ? error.message : String(error),\n duration\n };\n\n self.addCompletedRequest(requestId, errorRequest);\n throw error;\n }\n };\n };\n\n private patchXHR = () => {\n const self = this;\n \n XMLHttpRequest.prototype.open = function(method: string, url: string | URL, async?: boolean, username?: string | null, password?: string | null) {\n const xhr = this as XMLHttpRequest & { __networkRecorder?: { requestId: string, timestamp: number, method: string, url: string } };\n \n const urlString = typeof url === \"string\" ? url : url.toString();\n \n if (self.shouldCaptureRequest(urlString)) {\n const requestId = self.generateRequestId();\n const timestamp = Date.now();\n \n xhr.__networkRecorder = {\n requestId,\n timestamp,\n method: method.toUpperCase(),\n url: self.sanitizeUrl(urlString)\n };\n }\n \n return self.originalXHROpen.call(this, method, url as string, async ?? true, username, password);\n };\n\n XMLHttpRequest.prototype.send = function(body?: Document | XMLHttpRequestBodyInit | null) {\n const xhr = this as XMLHttpRequest & { __networkRecorder?: { requestId: string, timestamp: number, method: string, url: string } };\n \n if (xhr.__networkRecorder) {\n const { requestId, timestamp, method, url } = xhr.__networkRecorder;\n \n let requestHeaders: Record<string, string> = {};\n let requestBody: string | undefined;\n\n if (self.networkSettings.captureRequestBodies && body) {\n if (typeof body === \"string\") {\n requestBody = body;\n } else {\n try {\n requestBody = JSON.stringify(body);\n } catch (e) {\n requestBody = \"[Unable to serialize body]\";\n }\n }\n }\n\n const networkRequest: Partial<NetworkRequest> = {\n requestId,\n type: \"xhr\",\n method,\n url,\n requestHeaders: Object.keys(requestHeaders).length > 0 ? self.filterHeaders(requestHeaders) : undefined,\n requestBody: self.truncateContent(requestBody, self.networkSettings.maxRequestBodySize),\n timestamp\n };\n\n self.pendingRequests.set(requestId, networkRequest);\n\n // Handle response\n const originalOnReadyStateChange = xhr.onreadystatechange;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n const duration = Date.now() - timestamp;\n let responseHeaders: Record<string, string> = {};\n let responseBody: string | undefined;\n\n if (self.networkSettings.captureHeaders) {\n const headerString = xhr.getAllResponseHeaders();\n if (headerString) {\n headerString.split('\\r\\n').forEach(line => {\n const parts = line.split(': ');\n if (parts.length === 2) {\n responseHeaders[parts[0]] = parts[1];\n }\n });\n }\n }\n\n if (self.networkSettings.captureResponseBodies) {\n try {\n responseBody = self.truncateContent(xhr.responseText, self.networkSettings.maxResponseBodySize);\n } catch (e) {\n responseBody = \"[Unable to read response]\";\n }\n }\n\n const completedRequest: NetworkRequest = {\n ...networkRequest as NetworkRequest,\n responseStatus: xhr.status,\n responseHeaders: Object.keys(responseHeaders).length > 0 ? self.filterHeaders(responseHeaders) : undefined,\n responseBody,\n duration,\n error: xhr.status === 0 ? \"Network error\" : undefined\n };\n\n self.addCompletedRequest(requestId, completedRequest);\n }\n \n if (originalOnReadyStateChange) {\n originalOnReadyStateChange.call(this, new Event('readystatechange'));\n }\n };\n }\n \n return self.originalXHRSend.call(this, body ?? null);\n };\n };\n\n private shouldCaptureRequest(url: string): boolean {\n if (!this.isRunning || !this.networkSettings.enabled) {\n return false;\n }\n\n try {\n const urlObj = new URL(url, this.window.location.href);\n \n // Don't capture requests to our own API endpoints\n if (urlObj.pathname.includes('/public/captured-sessions')) {\n return false;\n }\n\n // Check excluded domains\n if (this.networkSettings.excludeDomains.some(domain => urlObj.hostname.includes(domain))) {\n return false;\n }\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private sanitizeUrl(url: string): string {\n try {\n const urlObj = new URL(url, this.window.location.href);\n \n // Apply same sanitization as EventRecorder\n for (const key of urlObj.searchParams.keys()) {\n if (!this.queryParamsAllowed.has(key.toLowerCase())) {\n urlObj.searchParams.set(key, \"$redacted\");\n }\n }\n \n return urlObj.toString();\n } catch (e) {\n logger.error(\"Failed to sanitize URL\", e);\n return url;\n }\n }\n\n private filterHeaders(headers: Record<string, string>): Record<string, string> {\n const filtered: Record<string, string> = {};\n const defaultSensitiveHeaders = new Set([\n 'authorization', 'cookie', 'x-api-key', 'x-auth-token', \n 'x-csrf-token', 'x-session-token', 'set-cookie'\n ]);\n \n // Combine default sensitive headers with user-specified excluded headers\n const excludedHeaders = new Set([\n ...defaultSensitiveHeaders,\n ...this.networkSettings.excludeHeaders.map(h => h.toLowerCase())\n ]);\n\n for (const [key, value] of Object.entries(headers)) {\n if (excludedHeaders.has(key.toLowerCase())) {\n // Don't record excluded headers\n continue;\n }\n filtered[key] = value;\n }\n\n return filtered;\n }\n\n private truncateContent(content: string | undefined, maxSize: number): string | undefined {\n if (!content) return content;\n \n // Apply masking function if provided\n let processedContent = content;\n if (this.networkSettings.requestBodyMaskingFunction) {\n processedContent = this.networkSettings.requestBodyMaskingFunction(content);\n }\n \n if (processedContent.length > maxSize) {\n return processedContent.substring(0, maxSize) + `... [truncated from ${processedContent.length} chars]`;\n }\n \n return processedContent;\n }\n\n private generateRequestId(): string {\n return `req_${crypto.randomUUID()}`;\n }\n\n private addCompletedRequest(requestId: string, request: NetworkRequest) {\n this.pendingRequests.delete(requestId);\n \n // Only record requests that are errors\n if (this.isErrorRequest(request)) {\n this.requestsBuffer.push(request);\n }\n }\n\n private isErrorRequest(request: NetworkRequest): boolean {\n // Network/fetch errors (error field is populated)\n if (request.error) {\n return true;\n }\n \n // HTTP error status codes (4xx, 5xx)\n if (request.responseStatus && request.responseStatus >= 400) {\n return true;\n }\n \n return false;\n }\n}","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.4\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.4',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\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 if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str2) == lowerize(str1[i])) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\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 if(!ua || !arrays) return;\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 q[1] FUNCTION or REGEX\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n if (q.length > 3) {\n this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n } else {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n }\n } else {\n if (q.length == 3) {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n } else if (q.length > 4) {\n this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n }\n }\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 map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.51': '3.51',\n 'NT 4.0': '4.0',\n '2000' : ['5.0', '5.01'],\n 'XP' : ['5.1', '5.2'],\n 'Vista' : '6.0',\n '7' : '6.1',\n '8' : '6.2',\n '8.1' : '6.3',\n '10' : ['6.4', '10.0'],\n 'NT' : ''\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n },\n\n browserHintsMap = {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Edge WebView2' : 'Microsoft Edge WebView2',\n 'Chrome WebView': 'Android WebView',\n 'Chrome Headless':'HeadlessChrome',\n 'Huawei Browser': 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /webview.+edge\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, EDGE+' WebView']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i \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 /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\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 + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_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' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\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|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\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 /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat/Klarna\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i // Edge WebView2\n ], [VERSION, [NAME, EDGE+' WebView2']], [\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' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\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 // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, 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)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\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 /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?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 /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/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 /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(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)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr]|browser)[-\\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 // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\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 /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\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|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OnePlus\n /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-k]\\w[1m]10)\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\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, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i // Vivo series\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \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 // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [ \n /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|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|watch|webos))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n // Google Pixel\n /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n /(google) (pixelbook( go)?)/i\n ], [VENDOR, MODEL], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= 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 // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( 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 // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : '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 // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // HMD\n /; (n159v)/i\n ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i, // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\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 /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia 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.+; ([c6]+|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 /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i, // Vizio\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [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 /(mi(tv|box)-?\\w+) 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, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i, // Nintendo\n /(retroid) (pocket ([^\\)]+))/i // Retroid Pocket\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n /mobile vr; rv.+firefox/i // Unidentifiable VR device using Firefox Reality / Wolvic\n ], [[TYPE, XR]], [\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 /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i // Unidentifiable embedded device using Windows IoT\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : 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 /droid .+?; ([\\w\\. -]+)( bui|\\))/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 /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\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|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /(windows nt) (6\\.[23]); arm/i // Windows RT\n ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i, // Windows IoT/Mobile/Phone\n // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n ], [NAME, VERSION], [\n /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n /(windows ce)\\/?([\\d\\.]*)/i // Windows CE\n ], [NAME, VERSION], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\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|morphos))/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n /(harmonyos)[\\/ ]?([\\d\\.]*)/i, // HarmonyOS\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\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 /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i, // WebOS\n /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n ], [VERSION, [NAME, 'webOS']], [\n /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [ \n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome 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) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i, // Mint\n /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /\\b(aix)[; ]([1-9\\.]{0,4})/i, // AIX\n /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux/MorphOS\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) ?(r\\d)?/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\d\\.]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i in brands) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && \n !/not.a.brand/i.test(brandName) && \n (!prevName || \n (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n (prevName == EDGE && /WebView2/.test(brandName))\n )) {\n brandName = strMapper(brandName, browserHintsMap);\n prevName = this.get(NAME);\n if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n }\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n // Convert Headers object into a plain object\n if (headers && typeof headers.append === FUNC_TYPE) {\n var kv = {};\n headers.forEach(function (v, k) { kv[k] = v; });\n headers = kv;\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\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 export {UAParser};","import {SessionRecorder} from \"./sessionRecorder\";\nimport {EventRecorder} from \"./eventRecorder\";\nimport {ErrorRecorder} from \"./errorRecorder\";\nimport {NetworkRecorder} from \"./networkRecorder\";\nimport {post, put} from \"../requests\";\nimport {UAParser} from \"ua-parser-js\";\n\nexport class Recorder {\n private sessionRecorder: SessionRecorder;\n private eventRecorder: EventRecorder;\n private errorRecorder: ErrorRecorder;\n private networkRecorder: NetworkRecorder;\n private recorderSettings: RecorderSettings;\n private capturedSessionId: String | null = null;\n private pingIntervalMs = 20000;\n private pingTimeout: NodeJS.Timeout | null = null;\n\n constructor(private window: Window, private publicToken: string, userSettings: Partial<RecorderSettings> = {}) {\n // Default settings\n const defaultSettings: RecorderSettings = {\n maskingLevel: \"all\",\n consoleRecording: { enabled: false },\n networkRecording: {\n enabled: false,\n maxRequestBodySize: 10 * 1024,\n maxResponseBodySize: 50 * 1024,\n excludeDomains: [],\n captureHeaders: true,\n captureRequestBodies: true,\n captureResponseBodies: true,\n excludeHeaders: []\n }\n };\n\n // Merge user settings with defaults\n this.recorderSettings = {\n ...defaultSettings,\n ...userSettings,\n consoleRecording: {\n ...defaultSettings.consoleRecording,\n ...(userSettings.consoleRecording || {})\n },\n networkRecording: {\n ...defaultSettings.networkRecording,\n ...(userSettings.networkRecording || {})\n }\n };\n\n this.sessionRecorder = new SessionRecorder(this.recorderSettings);\n this.eventRecorder = new EventRecorder(window, this.recorderSettings);\n this.errorRecorder = new ErrorRecorder(window, this.recorderSettings.consoleRecording);\n this.networkRecorder = new NetworkRecorder(window, this.recorderSettings.networkRecording);\n\n post(`public/captured-sessions`, { publicToken }, { withCredentials: false })\n .then(response => {\n const id = response.data as string;\n this.capturedSessionId = id;\n this.sessionRecorder.setCapturedSessionId(id);\n this.eventRecorder.setCapturedSessionId(id);\n this.errorRecorder.setCapturedSessionId(id);\n this.networkRecorder.setCapturedSessionId(id);\n this.schedulePing();\n const capturedUserMetadata = this.collectCapturedUserMetadata();\n post(`public/captured-sessions/${this.capturedSessionId}/captured-session/metadata`, capturedUserMetadata, { withCredentials: false });\n })\n .catch(error => {\n console.error(error);\n this.sessionRecorder.stop();\n this.eventRecorder.stop();\n this.errorRecorder.stop();\n this.networkRecorder.stop();\n })\n }\n\n private schedulePing() {\n if (this.pingTimeout) {\n clearTimeout(this.pingTimeout);\n }\n\n this.pingTimeout = setTimeout(this.ping, this.pingIntervalMs);\n }\n\n private ping = async () => {\n await put(`public/captured-sessions/${this.capturedSessionId}/ping`, {}, { withCredentials: false });\n\n this.schedulePing();\n }\n\n /**\n * Start all recorders\n */\n public start() {\n this.sessionRecorder.start();\n this.eventRecorder.start();\n this.errorRecorder.start();\n this.networkRecorder.start();\n }\n\n /**\n * Stop all recorders\n */\n public stop() {\n this.sessionRecorder.stop();\n this.eventRecorder.stop();\n this.errorRecorder.stop();\n this.networkRecorder.stop();\n }\n\n private collectCapturedUserMetadata = (): CapturedUserMetadata => {\n const ua = new UAParser();\n const browserName = ua.getBrowser().name;\n const browserVersion = ua.getBrowser().version;\n const osName = ua.getOS().name;\n const osVersion = ua.getOS().version;\n const deviceType = (ua.getDevice().type ?? \"desktop\" ) as string; // undefined ⇒ desktop\n\n const browserLanguage = navigator.language;\n const browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const referringUrl: string | undefined = document.referrer || undefined;\n let referringDomain;\n try { referringDomain = referringUrl ? new URL(referringUrl).hostname : undefined }\n catch { /* ignore malformed referrer */ }\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const url = new URL(window.location.href);\n const host = window.location.hostname;\n\n const utmSource = url.searchParams.get(\"utm_source\") || url.searchParams.get(\"source\") || url.searchParams.get(\"ref\") || undefined;\n const utmMedium = url.searchParams.get(\"utm_medium\") || url.searchParams.get(\"medium\") || undefined;\n const utmCampaign = url.searchParams.get(\"utm_campaign\") || url.searchParams.get(\"campaign\") || undefined;\n const utmContent = url.searchParams.get(\"utm_content\") || url.searchParams.get(\"content\") || undefined;\n const utmTerm = url.searchParams.get(\"utm_term\") || url.searchParams.get(\"term\") || undefined;\n\n return {\n browserName,\n browserVersion,\n osName,\n osVersion,\n deviceType,\n browserLanguage,\n browserTimeZone,\n referringUrl,\n referringDomain,\n viewportWidth,\n viewportHeight,\n host,\n utmSource,\n utmMedium,\n utmCampaign,\n utmContent,\n utmTerm\n };\n }\n}\n\nexport interface RecorderSettings {\n maskingLevel: \"none\" | \"all\" | \"input-and-textarea\" | \"input-password-or-email-and-textarea\";\n consoleRecording: {\n enabled: boolean;\n };\n networkRecording: {\n enabled: boolean;\n maxRequestBodySize: number;\n maxResponseBodySize: number;\n excludeDomains: string[];\n captureHeaders: boolean;\n captureRequestBodies: boolean;\n captureResponseBodies: boolean;\n excludeHeaders: string[];\n requestBodyMaskingFunction?: (body: string) => string;\n };\n}\n\nexport interface CapturedUserMetadata {\n browserName?: string;\n browserVersion?: string;\n osName?: string;\n osVersion?: string;\n deviceType?: string;\n browserLanguage?: string;\n browserTimeZone?: string;\n referringUrl?: string;\n referringDomain?: string;\n viewportWidth?: number;\n viewportHeight?: number;\n host?: string;\n utmSource?: string;\n utmMedium?: string;\n utmCampaign?: string;\n utmContent?: string;\n utmTerm?: string;\n}"],"names":["NodeType","Mirror","origin","chars","mirror","i","throttle","patch","_a","descriptors","encode","prototype","decodeBase64","createBase64WorkerFactory","createBase64WorkerFactory$1","createBase64WorkerFactory$2","isString","trim","extend","hasOwnProperty","AxiosError","utils","toFormData","platform","isFileList","self","AxiosHeaders","isCancel","CanceledError","mergeConfig","merge","signal","iterator","done","res","adapters","VERSION","validators","validator","Axios","CancelToken","spread","isAxiosError","HttpStatusCode","window","itemType","uaCH","rgxMap","ua"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,79]}
|
|
1
|
+
{"version":3,"file":"recorder.iife.js","sources":["../../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/common/utils.js","../../node_modules/axios/lib/platform/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/helpers/throttle.js","../../node_modules/axios/lib/helpers/progressEventReducer.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/helpers/resolveConfig.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/helpers/composeSignals.js","../../node_modules/axios/lib/helpers/trackStream.js","../../node_modules/axios/lib/adapters/fetch.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../node_modules/axios/index.js","../../src/requests.ts","../../src/logger.ts","../../src/recorder/sessionRecorder.ts","../../src/recorder/eventRecorder.ts","../../src/recorder/errorRecorder.ts","../../src/recorder/networkRecorder.ts","../../node_modules/ua-parser-js/src/main/ua-parser.mjs","../../src/recorder/recorder.ts"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\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\nfunction __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}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n \n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request, fetchOptions);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.11.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import axios, {type AxiosInstance, type AxiosRequestConfig} from \"axios\";\n\nconst api: AxiosInstance = axios.create({\n baseURL: import.meta.env.DEV\n ? \"http://localhost:8080\"\n : \"https://scryspell.com\",\n withCredentials: true,\n});\n\nexport const get = <T = unknown>(\n url: string,\n config?: AxiosRequestConfig\n) => api.get<T>(url, config);\n\nexport const post = <T = unknown>(\n url: string,\n data?: unknown,\n config?: AxiosRequestConfig\n) => api.post<T>(url, data, config);\n\nexport const del = <T = unknown>(\n url: string,\n config?: AxiosRequestConfig\n) => api.delete<T>(url, config);\n\n\nexport const put = <T = unknown>(\n url: string,\n data?: unknown,\n config?: AxiosRequestConfig\n) => api.put<T>(url, data, config);\n\nexport const patch = <T = unknown>(\n url: string,\n data?: unknown,\n config?: AxiosRequestConfig\n) => api.patch<T>(url, data, config);\n\nexport const postForm = <T = unknown>(\n url: string,\n data: unknown,\n config?: AxiosRequestConfig\n) => api.postForm<T>(url, data, config);","export const logger = {\n info: (...args: any[]) => {\n console.log(\"info\", ...args);\n },\n warn: (...args: any[]) => {\n console.log(\"warn\", ...args);\n },\n error: (...args: any[]) => {\n console.log(\"error\", ...args);\n }\n}","import {record} from \"rrweb\";\nimport {patch} from \"../requests\";\nimport {logger} from \"../logger\";\nimport type {recordOptions} from \"rrweb/typings/types\";\nimport {type RecorderSettings} from \"./recorder\";\nimport type {eventWithTime, listenerHandler} from \"@rrweb/types\";\n\n\nexport interface SessionBuffer {\n data: any[];\n}\n\nexport class SessionRecorder {\n private capturedSessionId: string | null = null;\n private buffer: SessionBuffer;\n private stopFn: listenerHandler | undefined;\n private readonly flushIntervalMs: number;\n private flushTimer: NodeJS.Timeout | undefined;\n\n constructor(private recorderSettings: RecorderSettings) {\n this.buffer = {\n data: []\n };\n\n this.flushIntervalMs = 2000; // 2 * 1000\n }\n\n public setCapturedSessionId(id: string) {\n this.capturedSessionId = id;\n}\n\n public start = () => {\n if (Object.assign === undefined) {\n return;\n }\n this.buffer = {\n data: []\n };\n const recordOptions: recordOptions<eventWithTime> = {\n emit: (event) => {\n this.buffer.data.push(event);\n },\n blockClass: \"scry-block\"\n };\n\n const maskFn = (input: string) => input.replaceAll(/\\S/g, \"*\");\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n recordOptions.maskTextFn = maskFn;\n recordOptions.maskTextSelector = \"*\";\n recordOptions.maskAllInputs = true;\n recordOptions.maskInputFn = maskFn;\n break;\n case \"input-and-textarea\":\n recordOptions.maskAllInputs = true;\n break;\n case \"input-password-or-email-and-textarea\":\n recordOptions.maskInputOptions = {\n password: true,\n email: true,\n textarea: true\n };\n break;\n default:\n recordOptions.maskTextFn = maskFn;\n recordOptions.maskTextSelector = \"*\";\n recordOptions.maskAllInputs = true;\n recordOptions.maskInputFn = maskFn;\n }\n\n this.stopFn = record(recordOptions);\n this.scheduleFlush();\n };\n\n // separate method for scheduling flush\n private scheduleFlush = () => {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n }\n this.flushTimer = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n // preserve data on flush failure\n private flush = async () => {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n\n if (this.capturedSessionId && this.buffer.data.length > 0) {\n try {\n let response = await patch(`public/captured-sessions/${this.capturedSessionId}/recording`, this.buffer, { withCredentials: false });\n\n if (response.status >= 400) {\n logger.error(`status ${response.status} when trying to save session recording data.`);\n logger.error(response.data);\n } else {\n // clear buffer only if response was successful\n this.clearAllBufferData();\n }\n } catch (error) {\n logger.error(\"Error flushing session data:\", error);\n // TODO add a failure count that will eventually stop, so we don't store a ton of data and hog client memory.\n // do not clear the buffer, so we retry next time\n }\n }\n\n this.scheduleFlush();\n };\n\n public stop = () => {\n if (this.stopFn) {\n this.stopFn();\n }\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n };\n\n private clearAllBufferData = () => {\n this.buffer.data = [];\n };\n}\n","import {logger} from \"../logger\";\nimport {post} from \"../requests\";\nimport {type RecorderSettings} from \"./recorder\";\nimport {assertNever} from \"../utils\";\n\nexport interface InteractionEvent {\n eventType: string | \"click\" | \"keydown\" | \"page_view\" | \"change\" | \"submit\";\n tagName?: string | null;\n timestamp: number;\n host: string;\n path: string;\n text: string | null;\n domContext?: JsonNode[];\n queryParams?: [string, string][];\n}\n\nexport interface ClickEvent extends InteractionEvent {\n eventType: \"click\";\n}\n\nexport interface KeyEvent extends InteractionEvent {\n eventType: \"keydown\";\n key: string;\n}\n\nexport interface JsonNode {\n tag: string;\n attrs: Record<string, string>;\n}\n\nexport class EventRecorder {\n private eventsBuffer: InteractionEvent[] = [];\n private isRunning = false;\n private tagsToCapture = new Set<string>([\"button\", \"a\", \"select\", \"textarea\", \"input\"]);\n private queryParamsAllowed = new Set<string>([\n \"utm_source\",\n \"source\",\n \"ref\",\n \"utm_medium\",\n \"medium\",\n \"utm_campaign\",\n \"campaign\",\n \"utm_content\",\n \"content\",\n \"utm_term\",\n \"term\"\n ]);\n\n // private piiAttribute = \"data-pii\";\n private readonly flushIntervalMs = 2000;\n private capturedSessionId: string | undefined;\n private flushTimerId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private window: Window, private recorderSettings: RecorderSettings) {}\n\n public start = () => {\n if (this.isRunning) {\n return;\n }\n this.isRunning = true;\n this.eventsBuffer = [];\n\n const originalPushState = this.window.history.pushState.bind(this.window.history);\n this.window.history.pushState = (data: any, unused: string, url?: string | URL | null) => {\n let urlString = \"\";\n if (url instanceof URL) {\n urlString = url.toString();\n } else if (url) {\n urlString = url;\n } else {\n urlString = \"\";\n }\n\n this.handlePageView(urlString);\n return originalPushState(data, unused, url);\n }\n\n this.window.addEventListener(\"pageshow\", (e) => {\n try {\n this.handlePageView(this.window.location.pathname);\n } catch (error) {\n logger.error(\"Failed to capture URL change event\", error);\n }\n });\n this.window.addEventListener(\"change\", this.handler);\n this.window.addEventListener(\"click\", this.handler);\n this.window.addEventListener(\"keydown\", this.handler);\n\n this.scheduleFlush();\n };\n\n private scheduleFlush = () => {\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n }\n this.flushTimerId = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n private flush = async () => {\n if (this.eventsBuffer.length > 0 && this.capturedSessionId) {\n try {\n const response = await post(`/public/captured-sessions/${this.capturedSessionId}/ui-events`, this.eventsBuffer, { withCredentials: false });\n if (response.status !== 201) {\n logger.error(\"Failed to save ui events\", response.data);\n }\n this.eventsBuffer = [];\n } catch (error) {\n logger.error(\"Failed to save ui events\", error);\n this.eventsBuffer = [];\n }\n }\n this.scheduleFlush();\n };\n\n private handlePageView = (path: string) => {\n if (!this.isRunning) {\n return;\n }\n try {\n const timestamp = Date.now();\n\n const isPathAbsolute = path.charAt(0) === \"/\";\n if (!isPathAbsolute) {\n path = this.window.location.pathname + \"/\" + path;\n }\n\n const url = new URL(this.window.location.protocol + \"//\" + this.window.location.host + path + this.window.location.search);\n\n const sanitizedUrlString = this.sanitizeUrlParams(url.toString(), this.queryParamsAllowed);\n const sanitizedUrl = new URL(sanitizedUrlString);\n const searchParamsArray = Array.from(sanitizedUrl.searchParams);\n\n const interactionEvent = {\n eventType: \"page_view\",\n timestamp,\n text: path,\n host: sanitizedUrl.hostname,\n path,\n\n } as InteractionEvent\n\n if (searchParamsArray.length > 0) {\n interactionEvent.queryParams = searchParamsArray;\n }\n\n this.eventsBuffer.push(interactionEvent);\n\n } catch (error) {\n logger.error(\"Failed to capture URL change event\", error);\n }\n };\n\n private sanitizeUrlParams = (url: string, paramsAllowed: Set<string>) => {\n try {\n const urlObj = new URL(url);\n for (const key of urlObj.searchParams.keys()) {\n if (!paramsAllowed.has(key.toLowerCase())) {\n urlObj.searchParams.set(key, \"$redacted\");\n }\n }\n\n return urlObj.toString();\n } catch (e) {\n logger.error(\"Failed to sanitize URL params\", e);\n return url;\n }\n\n }\n\n private handler = (e: Event) => {\n if (!this.isRunning) {\n return;\n }\n try {\n const eventType = e.type;\n const target = e.target as HTMLElement | null;\n const tagName = target?.tagName.toLowerCase();\n\n if (!(tagName && this.tagsToCapture.has(tagName))) {\n return;\n }\n\n const url = new URL(this.window.location.href);\n const host = url.hostname;\n const path = url.pathname;\n const timestamp = Date.now();\n const domContext = this.captureDomContext(target as HTMLElement);\n\n switch (e.type) {\n case \"click\":\n const clickEvent = this.handleClick(target, tagName, timestamp, host, path);\n this.eventsBuffer.push(clickEvent);\n break;\n case \"keydown\":\n const keyEvent = this.handleKeyDown(e, tagName, target, timestamp, host, path);\n this.eventsBuffer.push(keyEvent);\n break;\n case \"change\":\n const changeEvent = this.handleChange(target, tagName, timestamp, host, path);\n this.eventsBuffer.push(changeEvent);\n break;\n default:\n this.eventsBuffer.push({\n eventType,\n tagName,\n timestamp,\n host,\n path,\n text: null,\n domContext\n });\n }\n } catch (error) {\n logger.error(\"Failed to capture event\", error);\n }\n };\n\n private handleChange(target: HTMLElement | null | HTMLSelectElement,\n tagName: string,\n timestamp: number,\n host: string,\n path: string): InteractionEvent {\n let text: string | null = null;\n if (target instanceof HTMLSelectElement) {\n text = target.options[target.selectedIndex].text;\n }\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n text = null;\n break;\n case \"input-and-textarea\":\n break;\n case \"input-password-or-email-and-textarea\":\n break;\n default:\n text = null;\n }\n\n return {\n eventType: \"change\",\n tagName,\n timestamp,\n text: text === \"\" ? null : text,\n host,\n path,\n domContext: this.captureDomContext(target as HTMLElement)\n };\n }\n\n private handleClick(target: HTMLElement | null | HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement | HTMLAnchorElement | HTMLImageElement,\n tagName: string, timestamp: number, host: string, path: string): ClickEvent {\n let text: string | null = \"\";\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n const labelText = this.findInputOrSelectOrTextAreaLabel(target);\n if (labelText) {\n text = labelText;\n } else if (target.placeholder) {\n text = target.placeholder;\n }\n } else if (target instanceof HTMLSelectElement) {\n const labelText = this.findInputOrSelectOrTextAreaLabel(target);\n if (labelText) {\n text = labelText;\n } else {\n text = target.value + \" (\" + target.options[target.selectedIndex].text + \")\";\n }\n } else if (target instanceof HTMLButtonElement) {\n text = target.innerText;\n } else if (target instanceof HTMLAnchorElement) {\n text = target.href;\n } else if (target instanceof HTMLImageElement) {\n text = target.src;\n }\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n text = null;\n break;\n case \"input-and-textarea\":\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n text = null;\n }\n break;\n case \"input-password-or-email-and-textarea\":\n if (target instanceof HTMLTextAreaElement) {\n text = null;\n } else if (target instanceof HTMLInputElement) {\n if (target.type === \"password\" || target.type === \"email\" || target.type === \"e-mail\") {\n text = null;\n }\n }\n break;\n default:\n text = null;\n }\n\n return {\n eventType: \"click\",\n tagName,\n timestamp,\n text: text === \"\" ? null : text,\n host,\n path,\n domContext: this.captureDomContext(target as HTMLElement)\n };\n }\n\n private handleKeyDown(e: Event,\n tagName: string,\n target: HTMLElement | null | HTMLInputElement | HTMLTextAreaElement,\n timestamp: number,\n host: string, path: string): KeyEvent {\n const kbe = e as KeyboardEvent;\n const key = kbe.key;\n\n let text: string | null = null;\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n const labelText = this.findInputOrSelectOrTextAreaLabel(target);\n if (labelText) {\n text = labelText;\n } else if (target.placeholder) {\n text = target.placeholder;\n }\n }\n\n switch (this.recorderSettings.maskingLevel) {\n case \"none\":\n break;\n case \"all\":\n text = null;\n break;\n case \"input-and-textarea\":\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n text = null;\n }\n break;\n case \"input-password-or-email-and-textarea\":\n if (target instanceof HTMLTextAreaElement) {\n text = null;\n } else if (target instanceof HTMLInputElement) {\n if (target.type === \"password\" || target.type === \"email\" || target.type === \"e-mail\") {\n text = null;\n }\n }\n break;\n default:\n text = null;\n }\n\n return {\n eventType: \"keydown\",\n tagName,\n timestamp,\n text,\n key,\n host,\n path,\n domContext: this.captureDomContext(target as HTMLElement)\n }\n }\n\n private findInputOrSelectOrTextAreaLabel = (el: HTMLElement | null): string | null => {\n const allowedTags = new Set([\"input\", \"select\", \"textarea\"]);\n if (!el || !allowedTags.has(el.tagName.toLowerCase())) return null;\n\n /* 1. <label><input|select …></label> (label wraps the control) */\n const wrappingLabel = el.closest(\"label\");\n if (wrappingLabel) {\n // Take only the TEXT_NODEs that are direct children of <label>\n const text = Array.from(wrappingLabel.childNodes)\n .filter(node => node.nodeName.toLowerCase() !== \"select\")\n .map(node => (node.textContent ?? \"\").trim())\n .filter(Boolean) // remove empty strings\n .join(\" \")\n .trim();\n\n if (text) return text;\n }\n\n /* 2. <label for=\"id\">…</label> + <input|select id=\"id\" …> */\n const id = (el as HTMLInputElement).id;\n if (id) {\n const explicitLabel = el.ownerDocument.querySelector<HTMLLabelElement>(\n `label[for=\"${CSS.escape(id)}\"]`\n );\n if (explicitLabel) {\n const text = Array.from(explicitLabel.childNodes)\n .filter(node => node.nodeName.toLowerCase() !== \"select\")\n .map(node => (node.textContent ?? \"\").trim())\n .filter(Boolean)\n .join(\" \")\n .trim();\n\n if (text) return text;\n }\n }\n\n /* 3. Accessibility fall-backs */\n const ariaLabel = el.getAttribute(\"aria-label\");\n if (ariaLabel) return ariaLabel.trim();\n\n const ariaLabelledBy = el.getAttribute(\"aria-labelledby\");\n if (ariaLabelledBy) {\n const ref = el.ownerDocument.getElementById(ariaLabelledBy);\n return ref?.textContent?.trim() || null;\n }\n\n return null;\n }\n\n public stop = () => {\n this.isRunning = false;\n this.window.removeEventListener(\"change\", this.handler);\n this.window.removeEventListener(\"click\", this.handler);\n this.window.removeEventListener(\"keydown\", this.handler);\n\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n this.flushTimerId = null;\n }\n };\n\n private captureDomContext = (targetElement: HTMLElement): JsonNode[] => {\n const context: JsonNode[] = [];\n context.push(this.toJsonNode(targetElement));\n\n let current = targetElement.parentElement;\n while (current != null && context.length < 6) {\n context.push(this.toJsonNode(current));\n current = current.parentElement;\n }\n\n return context;\n }\n\n private toJsonNode = (node: HTMLElement): JsonNode => {\n const attrs: Record<string, string> = {};\n\n // Collect safe attributes only\n [\"id\", \"class\", \"name\", \"type\", \"role\", \"aria-label\"].forEach((key) => {\n const val = node.getAttribute(key);\n if (val) attrs[key] = val;\n });\n\n return {\n tag: node.tagName.toLowerCase(),\n attrs\n };\n }\n\n\n public setCapturedSessionId(uuid: string) {\n this.capturedSessionId = uuid;\n }\n}\n","// Captures console errors, warnings, and uncaught errors/promise rejections\n// Buffers error events and flushes to API endpoint periodically similar to EventRecorder\nimport {logger} from \"../logger\";\nimport {post} from \"../requests\";\n\nexport interface ConsoleError {\n errorType: \"console_error\" | \"console_warn\" | \"uncaught_error\" | \"unhandled_rejection\";\n message: string;\n stack?: string;\n timestamp: number;\n source?: string; // file/line info\n}\n\nexport class ErrorRecorder {\n private errorsBuffer: ConsoleError[] = [];\n private isRunning = false;\n private readonly flushIntervalMs = 2000;\n private capturedSessionId: string | undefined;\n private flushTimerId: ReturnType<typeof setTimeout> | null = null;\n private originalConsoleError: typeof console.error;\n private originalConsoleWarn: typeof console.warn;\n private enabled: boolean;\n\n constructor(private window: Window, consoleErrorSettings?: { enabled: boolean }) {\n this.originalConsoleError = console.error.bind(console);\n this.originalConsoleWarn = console.warn.bind(console);\n this.enabled = consoleErrorSettings?.enabled ?? false; // Default enabled for backwards compatibility\n }\n\n public start = () => {\n if (this.isRunning || !this.enabled) {\n return;\n }\n this.isRunning = true;\n this.errorsBuffer = [];\n\n // Intercept console.error\n console.error = (...args: any[]) => {\n this.captureConsoleError(\"console_error\", args);\n this.originalConsoleError(...args);\n };\n\n // Intercept console.warn\n console.warn = (...args: any[]) => {\n this.captureConsoleError(\"console_warn\", args);\n this.originalConsoleWarn(...args);\n };\n\n // Capture uncaught errors\n this.window.addEventListener(\"error\", this.handleUncaughtError);\n\n // Capture unhandled promise rejections\n this.window.addEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\n\n this.scheduleFlush();\n };\n\n public stop = () => {\n this.isRunning = false;\n\n // Restore original console methods\n console.error = this.originalConsoleError;\n console.warn = this.originalConsoleWarn;\n\n // Remove event listeners\n this.window.removeEventListener(\"error\", this.handleUncaughtError);\n this.window.removeEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\n\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n this.flushTimerId = null;\n }\n };\n\n private captureConsoleError = (errorType: \"console_error\" | \"console_warn\", args: any[]) => {\n if (!this.isRunning) {\n return;\n }\n\n try {\n const message = args.map(arg => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n\n const error: ConsoleError = {\n errorType,\n message,\n timestamp: Date.now()\n };\n\n // Try to extract stack trace if available\n if (args.length > 0 && args[0] instanceof Error) {\n error.stack = args[0].stack;\n }\n\n this.errorsBuffer.push(error);\n } catch (captureError) {\n logger.error(\"Failed to capture console error\", captureError);\n }\n };\n\n private handleUncaughtError = (event: ErrorEvent) => {\n if (!this.isRunning) {\n return;\n }\n\n try {\n const error: ConsoleError = {\n errorType: \"uncaught_error\",\n message: event.message,\n stack: event.error?.stack,\n timestamp: Date.now(),\n source: event.filename ? `${event.filename}:${event.lineno}:${event.colno}` : undefined\n };\n\n this.errorsBuffer.push(error);\n } catch (captureError) {\n logger.error(\"Failed to capture uncaught error\", captureError);\n }\n };\n\n private handleUnhandledRejection = (event: PromiseRejectionEvent) => {\n if (!this.isRunning) {\n return;\n }\n\n try {\n let message: string;\n let stack: string | undefined;\n\n if (event.reason instanceof Error) {\n message = event.reason.message;\n stack = event.reason.stack;\n } else {\n message = String(event.reason);\n }\n\n const error: ConsoleError = {\n errorType: \"unhandled_rejection\",\n message,\n stack,\n timestamp: Date.now()\n };\n\n this.errorsBuffer.push(error);\n } catch (captureError) {\n logger.error(\"Failed to capture unhandled rejection\", captureError);\n }\n };\n\n private scheduleFlush = () => {\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n }\n this.flushTimerId = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n private flush = async () => {\n if (this.errorsBuffer.length > 0 && this.capturedSessionId) {\n try {\n const response = await post(`/public/captured-sessions/${this.capturedSessionId}/console-errors`, this.errorsBuffer, { withCredentials: false });\n this.errorsBuffer = [];\n } catch (error) {\n logger.error(\"Failed to flush console errors\", error);\n this.errorsBuffer = [];\n }\n }\n this.scheduleFlush();\n };\n\n public setCapturedSessionId(uuid: string) {\n this.capturedSessionId = uuid;\n }\n}","import {logger} from \"../logger\";\nimport {post} from \"../requests\";\n\nexport interface NetworkRequest {\n requestId: string;\n type: \"xhr\" | \"fetch\";\n method: string;\n url: string;\n requestHeaders?: Record<string, string>;\n requestBody?: string;\n responseStatus?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n timestamp: number;\n duration?: number;\n error?: string;\n}\n\ninterface NetworkRecorderSettings {\n enabled: boolean;\n maxRequestBodySize: number;\n maxResponseBodySize: number;\n excludeDomains: string[];\n captureHeaders: boolean;\n captureRequestBodies: boolean;\n captureResponseBodies: boolean;\n excludeHeaders: string[];\n requestBodyMaskingFunction?: (body: string) => string;\n responseBodyMaskingFunction?: (body: string) => string;\n}\n\nexport class NetworkRecorder {\n private requestsBuffer: NetworkRequest[] = [];\n private pendingRequests = new Map<string, Partial<NetworkRequest>>();\n private isRunning = false;\n private readonly flushIntervalMs = 2000;\n private capturedSessionId: string | undefined;\n private flushTimerId: ReturnType<typeof setTimeout> | null = null;\n\n // Store original implementations\n private originalFetch: typeof fetch;\n private originalXHROpen: typeof XMLHttpRequest.prototype.open;\n private originalXHRSend: typeof XMLHttpRequest.prototype.send;\n\n // URL sanitization - reuse pattern from EventRecorder\n private queryParamsAllowed = new Set<string>([\n \"utm_source\", \"source\", \"ref\", \"utm_medium\", \"medium\",\n \"utm_campaign\", \"campaign\", \"utm_content\", \"content\", \"utm_term\", \"term\"\n ]);\n\n private networkSettings: NetworkRecorderSettings = {\n enabled: false, // Default disabled\n maxRequestBodySize: 10 * 1024, // 10KB\n maxResponseBodySize: 50 * 1024, // 50KB\n excludeDomains: [],\n captureHeaders: false,\n captureRequestBodies: false,\n captureResponseBodies: true,\n excludeHeaders: []\n };\n\n constructor(private window: Window, settings?: Partial<NetworkRecorderSettings>) {\n this.originalFetch = this.window.fetch.bind(this.window);\n this.originalXHROpen = XMLHttpRequest.prototype.open;\n this.originalXHRSend = XMLHttpRequest.prototype.send;\n \n if (settings) {\n this.networkSettings = { ...this.networkSettings, ...settings };\n }\n }\n\n public start = () => {\n if (this.isRunning || !this.networkSettings.enabled) {\n return;\n }\n this.isRunning = true;\n this.requestsBuffer = [];\n\n this.patchFetch();\n this.patchXHR();\n this.scheduleFlush();\n };\n\n public stop = () => {\n this.isRunning = false;\n\n // Restore original implementations\n this.window.fetch = this.originalFetch;\n XMLHttpRequest.prototype.open = this.originalXHROpen;\n XMLHttpRequest.prototype.send = this.originalXHRSend;\n\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n this.flushTimerId = null;\n }\n };\n\n public setCapturedSessionId(uuid: string) {\n this.capturedSessionId = uuid;\n }\n\n\n private scheduleFlush = () => {\n if (this.flushTimerId) {\n clearTimeout(this.flushTimerId);\n }\n this.flushTimerId = setTimeout(this.flush, this.flushIntervalMs);\n };\n\n private flush = async () => {\n if (this.requestsBuffer.length > 0 && this.capturedSessionId) {\n try {\n const response = await post(`/public/captured-sessions/${this.capturedSessionId}/network-requests`, this.requestsBuffer, { withCredentials: false });\n if (response.status !== 201) {\n logger.error(\"Failed to save network requests\", response.data);\n }\n this.requestsBuffer = [];\n } catch (error) {\n logger.error(\"Failed to save network requests\", error);\n this.requestsBuffer = [];\n }\n }\n this.scheduleFlush();\n };\n\n private patchFetch = () => {\n const self = this;\n this.window.fetch = async function(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n const requestId = self.generateRequestId();\n const timestamp = Date.now();\n \n let url = \"\";\n let method = \"GET\";\n let requestHeaders: Record<string, string> = {};\n let requestBody: string | undefined;\n\n // Parse input to extract URL and method\n if (typeof input === \"string\") {\n url = input;\n } else if (input instanceof URL) {\n url = input.toString();\n } else if (input instanceof Request) {\n url = input.url;\n method = input.method;\n if (self.networkSettings.captureHeaders) {\n input.headers.forEach((value, key) => {\n requestHeaders[key] = value;\n });\n }\n if (self.networkSettings.captureRequestBodies && input.body) {\n try {\n const clonedRequest = input.clone();\n requestBody = await clonedRequest.text();\n } catch (e) {\n // Body already consumed, skip\n }\n }\n }\n\n if (init) {\n method = init.method || method;\n if (self.networkSettings.captureHeaders && init.headers) {\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => {\n requestHeaders[key] = value;\n });\n } else if (Array.isArray(init.headers)) {\n init.headers.forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n } else {\n Object.assign(requestHeaders, init.headers);\n }\n }\n if (self.networkSettings.captureRequestBodies && init.body) {\n if (typeof init.body === \"string\") {\n requestBody = init.body;\n } else {\n try {\n requestBody = JSON.stringify(init.body);\n } catch (e) {\n requestBody = \"[Unable to serialize body]\";\n }\n }\n }\n }\n\n if (!self.shouldCaptureRequest(url)) {\n return self.originalFetch(input, init);\n }\n\n const sanitizedUrl = self.sanitizeUrl(url);\n const filteredHeaders = self.filterHeaders(requestHeaders);\n const truncatedBody = self.truncateRequestContent(requestBody, self.networkSettings.maxRequestBodySize);\n\n // Create initial request record\n const networkRequest: Partial<NetworkRequest> = {\n requestId,\n type: \"fetch\",\n method: method.toUpperCase(),\n url: sanitizedUrl,\n requestHeaders: Object.keys(filteredHeaders).length > 0 ? filteredHeaders : undefined,\n requestBody: truncatedBody,\n timestamp\n };\n\n self.pendingRequests.set(requestId, networkRequest);\n\n try {\n const response = await self.originalFetch(input, init);\n const duration = Date.now() - timestamp;\n \n let responseHeaders: Record<string, string> = {};\n let responseBody: string | undefined;\n\n if (self.networkSettings.captureHeaders) {\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n }\n\n if (self.networkSettings.captureResponseBodies) {\n try {\n const clonedResponse = response.clone();\n const text = await clonedResponse.text();\n responseBody = self.truncateResponseContent(text, self.networkSettings.maxResponseBodySize);\n } catch (e) {\n responseBody = \"[Unable to read response body]\";\n }\n }\n\n // Complete the request record\n const completedRequest: NetworkRequest = {\n ...networkRequest as NetworkRequest,\n responseStatus: response.status,\n responseHeaders: Object.keys(responseHeaders).length > 0 ? self.filterHeaders(responseHeaders) : undefined,\n responseBody,\n duration\n };\n\n self.addCompletedRequest(requestId, completedRequest);\n return response;\n\n } catch (error) {\n const duration = Date.now() - timestamp;\n const errorRequest: NetworkRequest = {\n ...networkRequest as NetworkRequest,\n error: error instanceof Error ? error.message : String(error),\n duration\n };\n\n self.addCompletedRequest(requestId, errorRequest);\n throw error;\n }\n };\n };\n\n private patchXHR = () => {\n const self = this;\n \n XMLHttpRequest.prototype.open = function(method: string, url: string | URL, async?: boolean, username?: string | null, password?: string | null) {\n const xhr = this as XMLHttpRequest & { __networkRecorder?: { requestId: string, timestamp: number, method: string, url: string } };\n \n const urlString = typeof url === \"string\" ? url : url.toString();\n \n if (self.shouldCaptureRequest(urlString)) {\n const requestId = self.generateRequestId();\n const timestamp = Date.now();\n \n xhr.__networkRecorder = {\n requestId,\n timestamp,\n method: method.toUpperCase(),\n url: self.sanitizeUrl(urlString)\n };\n }\n \n return self.originalXHROpen.call(this, method, url as string, async ?? true, username, password);\n };\n\n XMLHttpRequest.prototype.send = function(body?: Document | XMLHttpRequestBodyInit | null) {\n const xhr = this as XMLHttpRequest & { __networkRecorder?: { requestId: string, timestamp: number, method: string, url: string } };\n \n if (xhr.__networkRecorder) {\n const { requestId, timestamp, method, url } = xhr.__networkRecorder;\n \n let requestHeaders: Record<string, string> = {};\n let requestBody: string | undefined;\n\n if (self.networkSettings.captureRequestBodies && body) {\n if (typeof body === \"string\") {\n requestBody = body;\n } else {\n try {\n requestBody = JSON.stringify(body);\n } catch (e) {\n requestBody = \"[Unable to serialize body]\";\n }\n }\n }\n\n const networkRequest: Partial<NetworkRequest> = {\n requestId,\n type: \"xhr\",\n method,\n url,\n requestHeaders: Object.keys(requestHeaders).length > 0 ? self.filterHeaders(requestHeaders) : undefined,\n requestBody: self.truncateRequestContent(requestBody, self.networkSettings.maxRequestBodySize),\n timestamp\n };\n\n self.pendingRequests.set(requestId, networkRequest);\n\n // Handle response\n const originalOnReadyStateChange = xhr.onreadystatechange;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n const duration = Date.now() - timestamp;\n let responseHeaders: Record<string, string> = {};\n let responseBody: string | undefined;\n\n if (self.networkSettings.captureHeaders) {\n const headerString = xhr.getAllResponseHeaders();\n if (headerString) {\n headerString.split('\\r\\n').forEach(line => {\n const parts = line.split(': ');\n if (parts.length === 2) {\n responseHeaders[parts[0]] = parts[1];\n }\n });\n }\n }\n\n if (self.networkSettings.captureResponseBodies) {\n try {\n responseBody = self.truncateResponseContent(xhr.responseText, self.networkSettings.maxResponseBodySize);\n } catch (e) {\n responseBody = \"[Unable to read response]\";\n }\n }\n\n const completedRequest: NetworkRequest = {\n ...networkRequest as NetworkRequest,\n responseStatus: xhr.status,\n responseHeaders: Object.keys(responseHeaders).length > 0 ? self.filterHeaders(responseHeaders) : undefined,\n responseBody,\n duration,\n error: xhr.status === 0 ? \"Network error\" : undefined\n };\n\n self.addCompletedRequest(requestId, completedRequest);\n }\n \n if (originalOnReadyStateChange) {\n originalOnReadyStateChange.call(this, new Event('readystatechange'));\n }\n };\n }\n \n return self.originalXHRSend.call(this, body ?? null);\n };\n };\n\n private shouldCaptureRequest(url: string): boolean {\n if (!this.isRunning || !this.networkSettings.enabled) {\n return false;\n }\n\n try {\n const urlObj = new URL(url, this.window.location.href);\n \n // Don't capture requests to our own API endpoints\n if (urlObj.pathname.includes('/public/captured-sessions')) {\n return false;\n }\n\n // Check excluded domains\n if (this.networkSettings.excludeDomains.some(domain => urlObj.hostname.includes(domain))) {\n return false;\n }\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private sanitizeUrl(url: string): string {\n try {\n const urlObj = new URL(url, this.window.location.href);\n \n // Apply same sanitization as EventRecorder\n for (const key of urlObj.searchParams.keys()) {\n if (!this.queryParamsAllowed.has(key.toLowerCase())) {\n urlObj.searchParams.set(key, \"$redacted\");\n }\n }\n \n return urlObj.toString();\n } catch (e) {\n logger.error(\"Failed to sanitize URL\", e);\n return url;\n }\n }\n\n private filterHeaders(headers: Record<string, string>): Record<string, string> {\n const filtered: Record<string, string> = {};\n const defaultSensitiveHeaders = new Set([\n 'authorization', 'cookie', 'x-api-key', 'x-auth-token', \n 'x-csrf-token', 'x-session-token', 'set-cookie'\n ]);\n \n // Combine default sensitive headers with user-specified excluded headers\n const excludedHeaders = new Set([\n ...defaultSensitiveHeaders,\n ...this.networkSettings.excludeHeaders.map(h => h.toLowerCase())\n ]);\n\n for (const [key, value] of Object.entries(headers)) {\n if (excludedHeaders.has(key.toLowerCase())) {\n // Don't record excluded headers\n continue;\n }\n filtered[key] = value;\n }\n\n return filtered;\n }\n\n private truncateRequestContent(content: string | undefined, maxSize: number): string | undefined {\n if (!content) return content;\n\n // Apply request masking function if provided\n let processedContent = content;\n if (this.networkSettings.requestBodyMaskingFunction) {\n try {\n processedContent = this.networkSettings.requestBodyMaskingFunction(content);\n } catch (error) {\n logger.error(\"Failed to apply request masking function\");\n }\n }\n\n if (processedContent.length > maxSize) {\n return processedContent.substring(0, maxSize) + `... [truncated from ${processedContent.length} chars]`;\n }\n\n return processedContent;\n }\n\n private truncateResponseContent(content: string | undefined, maxSize: number): string | undefined {\n if (!content) return content;\n\n // Apply response masking function if provided\n let processedContent = content;\n if (this.networkSettings.responseBodyMaskingFunction) {\n try {\n processedContent = this.networkSettings.responseBodyMaskingFunction(content);\n } catch (error) {\n logger.error(\"Failed to apply response masking function\");\n }\n }\n\n if (processedContent.length > maxSize) {\n return processedContent.substring(0, maxSize) + `... [truncated from ${processedContent.length} chars]`;\n }\n\n return processedContent;\n }\n\n private generateRequestId(): string {\n return `req_${crypto.randomUUID()}`;\n }\n\n private addCompletedRequest(requestId: string, request: NetworkRequest) {\n this.pendingRequests.delete(requestId);\n \n // Only record requests that are errors\n if (this.isErrorRequest(request)) {\n this.requestsBuffer.push(request);\n }\n }\n\n private isErrorRequest(request: NetworkRequest): boolean {\n // Network/fetch errors (error field is populated)\n if (request.error) {\n return true;\n }\n \n // HTTP error status codes (4xx, 5xx)\n if (request.responseStatus && request.responseStatus >= 400) {\n return true;\n }\n \n return false;\n }\n}","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.4\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.4',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\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 if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str2) == lowerize(str1[i])) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\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 if(!ua || !arrays) return;\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 q[1] FUNCTION or REGEX\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n if (q.length > 3) {\n this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n } else {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n }\n } else {\n if (q.length == 3) {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n } else if (q.length > 4) {\n this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n }\n }\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 map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.51': '3.51',\n 'NT 4.0': '4.0',\n '2000' : ['5.0', '5.01'],\n 'XP' : ['5.1', '5.2'],\n 'Vista' : '6.0',\n '7' : '6.1',\n '8' : '6.2',\n '8.1' : '6.3',\n '10' : ['6.4', '10.0'],\n 'NT' : ''\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n },\n\n browserHintsMap = {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Edge WebView2' : 'Microsoft Edge WebView2',\n 'Chrome WebView': 'Android WebView',\n 'Chrome Headless':'HeadlessChrome',\n 'Huawei Browser': 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /webview.+edge\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, EDGE+' WebView']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i \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 /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\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 + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_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' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\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|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\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 /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat/Klarna\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i // Edge WebView2\n ], [VERSION, [NAME, EDGE+' WebView2']], [\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' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\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 // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, 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)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\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 /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?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 /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/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 /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(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)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr]|browser)[-\\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 // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\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 /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\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|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OnePlus\n /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-k]\\w[1m]10)\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\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, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i // Vivo series\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \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 // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [ \n /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|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|watch|webos))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n // Google Pixel\n /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n /(google) (pixelbook( go)?)/i\n ], [VENDOR, MODEL], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= 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 // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( 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 // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : '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 // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // HMD\n /; (n159v)/i\n ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i, // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\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 /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia 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.+; ([c6]+|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 /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i, // Vizio\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [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 /(mi(tv|box)-?\\w+) 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, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i, // Nintendo\n /(retroid) (pocket ([^\\)]+))/i // Retroid Pocket\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n /mobile vr; rv.+firefox/i // Unidentifiable VR device using Firefox Reality / Wolvic\n ], [[TYPE, XR]], [\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 /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i // Unidentifiable embedded device using Windows IoT\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : 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 /droid .+?; ([\\w\\. -]+)( bui|\\))/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 /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\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|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /(windows nt) (6\\.[23]); arm/i // Windows RT\n ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i, // Windows IoT/Mobile/Phone\n // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n ], [NAME, VERSION], [\n /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n /(windows ce)\\/?([\\d\\.]*)/i // Windows CE\n ], [NAME, VERSION], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\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|morphos))/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n /(harmonyos)[\\/ ]?([\\d\\.]*)/i, // HarmonyOS\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\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 /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i, // WebOS\n /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n ], [VERSION, [NAME, 'webOS']], [\n /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [ \n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome 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) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i, // Mint\n /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /\\b(aix)[; ]([1-9\\.]{0,4})/i, // AIX\n /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux/MorphOS\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) ?(r\\d)?/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\d\\.]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i in brands) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && \n !/not.a.brand/i.test(brandName) && \n (!prevName || \n (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n (prevName == EDGE && /WebView2/.test(brandName))\n )) {\n brandName = strMapper(brandName, browserHintsMap);\n prevName = this.get(NAME);\n if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n }\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n // Convert Headers object into a plain object\n if (headers && typeof headers.append === FUNC_TYPE) {\n var kv = {};\n headers.forEach(function (v, k) { kv[k] = v; });\n headers = kv;\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\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 export {UAParser};","import {SessionRecorder} from \"./sessionRecorder\";\nimport {EventRecorder} from \"./eventRecorder\";\nimport {ErrorRecorder} from \"./errorRecorder\";\nimport {NetworkRecorder} from \"./networkRecorder\";\nimport {post, put} from \"../requests\";\nimport {UAParser} from \"ua-parser-js\";\n\nexport class Recorder {\n private sessionRecorder: SessionRecorder;\n private eventRecorder: EventRecorder;\n private errorRecorder: ErrorRecorder;\n private networkRecorder: NetworkRecorder;\n private recorderSettings: RecorderSettings;\n private capturedSessionId: String | null = null;\n private pingIntervalMs = 20000;\n private pingTimeout: NodeJS.Timeout | null = null;\n\n constructor(private window: Window, private publicToken: string, userSettings: Partial<RecorderSettings> = {}) {\n // Default settings\n const defaultSettings: RecorderSettings = {\n maskingLevel: \"all\",\n consoleRecording: { enabled: false },\n networkRecording: {\n enabled: false,\n maxRequestBodySize: 10 * 1024,\n maxResponseBodySize: 50 * 1024,\n excludeDomains: [],\n captureHeaders: true,\n captureRequestBodies: true,\n captureResponseBodies: true,\n excludeHeaders: []\n }\n };\n\n // Merge user settings with defaults\n this.recorderSettings = {\n ...defaultSettings,\n ...userSettings,\n consoleRecording: {\n ...defaultSettings.consoleRecording,\n ...(userSettings.consoleRecording || {})\n },\n networkRecording: {\n ...defaultSettings.networkRecording,\n ...(userSettings.networkRecording || {})\n }\n };\n\n this.sessionRecorder = new SessionRecorder(this.recorderSettings);\n this.eventRecorder = new EventRecorder(window, this.recorderSettings);\n this.errorRecorder = new ErrorRecorder(window, this.recorderSettings.consoleRecording);\n this.networkRecorder = new NetworkRecorder(window, this.recorderSettings.networkRecording);\n\n post(`public/captured-sessions`, { publicToken }, { withCredentials: false })\n .then(response => {\n const id = response.data as string;\n this.capturedSessionId = id;\n this.sessionRecorder.setCapturedSessionId(id);\n this.eventRecorder.setCapturedSessionId(id);\n this.errorRecorder.setCapturedSessionId(id);\n this.networkRecorder.setCapturedSessionId(id);\n this.schedulePing();\n const capturedUserMetadata = this.collectCapturedUserMetadata();\n post(`public/captured-sessions/${this.capturedSessionId}/captured-session/metadata`, capturedUserMetadata, { withCredentials: false });\n })\n .catch(error => {\n console.error(error);\n this.sessionRecorder.stop();\n this.eventRecorder.stop();\n this.errorRecorder.stop();\n this.networkRecorder.stop();\n })\n }\n\n private schedulePing() {\n if (this.pingTimeout) {\n clearTimeout(this.pingTimeout);\n }\n\n this.pingTimeout = setTimeout(this.ping, this.pingIntervalMs);\n }\n\n private ping = async () => {\n await put(`public/captured-sessions/${this.capturedSessionId}/ping`, {}, { withCredentials: false });\n\n this.schedulePing();\n }\n\n /**\n * Start all recorders\n */\n public start() {\n this.sessionRecorder.start();\n this.eventRecorder.start();\n this.errorRecorder.start();\n this.networkRecorder.start();\n }\n\n /**\n * Stop all recorders\n */\n public stop() {\n this.sessionRecorder.stop();\n this.eventRecorder.stop();\n this.errorRecorder.stop();\n this.networkRecorder.stop();\n }\n\n private collectCapturedUserMetadata = (): CapturedUserMetadata => {\n const ua = new UAParser();\n const browserName = ua.getBrowser().name;\n const browserVersion = ua.getBrowser().version;\n const osName = ua.getOS().name;\n const osVersion = ua.getOS().version;\n const deviceType = (ua.getDevice().type ?? \"desktop\" ) as string; // undefined ⇒ desktop\n\n const browserLanguage = navigator.language;\n const browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const referringUrl: string | undefined = document.referrer || undefined;\n let referringDomain;\n try { referringDomain = referringUrl ? new URL(referringUrl).hostname : undefined }\n catch { /* ignore malformed referrer */ }\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const url = new URL(window.location.href);\n const host = window.location.hostname;\n\n const utmSource = url.searchParams.get(\"utm_source\") || url.searchParams.get(\"source\") || url.searchParams.get(\"ref\") || undefined;\n const utmMedium = url.searchParams.get(\"utm_medium\") || url.searchParams.get(\"medium\") || undefined;\n const utmCampaign = url.searchParams.get(\"utm_campaign\") || url.searchParams.get(\"campaign\") || undefined;\n const utmContent = url.searchParams.get(\"utm_content\") || url.searchParams.get(\"content\") || undefined;\n const utmTerm = url.searchParams.get(\"utm_term\") || url.searchParams.get(\"term\") || undefined;\n\n return {\n browserName,\n browserVersion,\n osName,\n osVersion,\n deviceType,\n browserLanguage,\n browserTimeZone,\n referringUrl,\n referringDomain,\n viewportWidth,\n viewportHeight,\n host,\n utmSource,\n utmMedium,\n utmCampaign,\n utmContent,\n utmTerm\n };\n }\n}\n\nexport interface RecorderSettings {\n maskingLevel: \"none\" | \"all\" | \"input-and-textarea\" | \"input-password-or-email-and-textarea\";\n consoleRecording: {\n enabled: boolean;\n };\n networkRecording: {\n enabled: boolean;\n maxRequestBodySize: number;\n maxResponseBodySize: number;\n excludeDomains: string[];\n captureHeaders: boolean;\n captureRequestBodies: boolean;\n captureResponseBodies: boolean;\n excludeHeaders: string[];\n requestBodyMaskingFunction?: (body: string) => string;\n responseBodyMaskingFunction?: (body: string) => string;\n };\n}\n\nexport interface CapturedUserMetadata {\n browserName?: string;\n browserVersion?: string;\n osName?: string;\n osVersion?: string;\n deviceType?: string;\n browserLanguage?: string;\n browserTimeZone?: string;\n referringUrl?: string;\n referringDomain?: string;\n viewportWidth?: number;\n viewportHeight?: number;\n host?: string;\n utmSource?: string;\n utmMedium?: string;\n utmCampaign?: string;\n utmContent?: string;\n utmTerm?: string;\n}"],"names":["NodeType","Mirror","origin","chars","mirror","i","throttle","patch","_a","descriptors","encode","prototype","decodeBase64","createBase64WorkerFactory","createBase64WorkerFactory$1","createBase64WorkerFactory$2","isString","trim","extend","hasOwnProperty","AxiosError","utils","toFormData","platform","isFileList","self","AxiosHeaders","isCancel","CanceledError","mergeConfig","merge","signal","iterator","done","res","adapters","VERSION","validators","validator","Axios","CancelToken","spread","isAxiosError","HttpStatusCode","window","itemType","uaCH","rgxMap","ua"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,79]}
|