{
  "version": 3,
  "sources": ["../../rrweb-snapshot/dist/rrweb-snapshot.js", "../src/utils.ts", "../../types/dist/rrweb-types.js", "../src/record/error-handler.ts", "../../../node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js", "../src/record/observers/canvas/serialize-args.ts", "../src/record/observers/canvas/2d.ts", "../src/record/observers/canvas/canvas.ts", "../src/record/observers/canvas/webgl.ts", "../../rrweb-worker/dist/rrweb-worker/image-bitmap-data-url-worker.mjs", "../../rrweb-worker/dist/rrweb-worker/index.mjs", "../src/record/observers/canvas/canvas-manager.ts", "canvas-manager.cjs"],
  "sourcesContent": ["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n  NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n  NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n  NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n  NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n  NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n  return NodeType2;\n})(NodeType || {});\nfunction isElement(n) {\n  return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n  const host = n?.host;\n  return Boolean(host?.shadowRoot === n);\n}\nfunction isNativeShadowDom(shadowRoot) {\n  return Object.prototype.toString.call(shadowRoot) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n  if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n    cssText = cssText.replace(\n      /\\sbackground-clip:\\s*text;/g,\n      \" -webkit-background-clip: text; background-clip: text;\"\n    );\n  }\n  return cssText;\n}\nfunction escapeImportStatement(rule) {\n  const { cssText } = rule;\n  if (cssText.split('\"').length < 3) return cssText;\n  const statement = [\"@import\", `url(${JSON.stringify(rule.href)})`];\n  if (rule.layerName === \"\") {\n    statement.push(`layer`);\n  } else if (rule.layerName) {\n    statement.push(`layer(${rule.layerName})`);\n  }\n  if (rule.supportsText) {\n    statement.push(`supports(${rule.supportsText})`);\n  }\n  if (rule.media.length) {\n    statement.push(rule.media.mediaText);\n  }\n  return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s) {\n  try {\n    const rules = s.rules || s.cssRules;\n    return rules ? fixBrowserCompatibilityIssuesInCSS(\n      Array.from(rules, stringifyRule).join(\"\")\n    ) : null;\n  } catch (error) {\n    return null;\n  }\n}\nfunction fixAllCssProperty(rule) {\n  let styles = \"\";\n  for (let i = 0; i < rule.style.length; i++) {\n    const styleDeclaration = rule.style;\n    const attribute = styleDeclaration[i];\n    const isImportant = styleDeclaration.getPropertyPriority(attribute);\n    styles += `${attribute}:${styleDeclaration.getPropertyValue(attribute)}${isImportant ? ` !important` : \"\"};`;\n  }\n  return `${rule.selectorText} { ${styles} }`;\n}\nfunction stringifyRule(rule) {\n  let importStringified;\n  if (isCSSImportRule(rule)) {\n    try {\n      importStringified = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      stringifyStylesheet(rule.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      escapeImportStatement(rule);\n    } catch (error) {\n    }\n  } else if (isCSSStyleRule(rule)) {\n    let cssText = rule.cssText;\n    const needsSafariColonFix = rule.selectorText.includes(\":\");\n    const needsAllFix = typeof rule.style[\"all\"] === \"string\" && rule.style[\"all\"];\n    if (needsAllFix) {\n      cssText = fixAllCssProperty(rule);\n    }\n    if (needsSafariColonFix) {\n      cssText = fixSafariColons(cssText);\n    }\n    if (needsSafariColonFix || needsAllFix) {\n      return cssText;\n    }\n  }\n  return importStringified || rule.cssText;\n}\nfunction fixSafariColons(cssStringified) {\n  const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule) {\n  return \"styleSheet\" in rule;\n}\nfunction isCSSStyleRule(rule) {\n  return \"selectorText\" in rule;\n}\nclass Mirror {\n  constructor() {\n    __publicField(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n) {\n    if (!n) return -1;\n    const id = this.getMeta(n)?.id;\n    return id ?? -1;\n  }\n  getNode(id) {\n    return this.idNodeMap.get(id) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(n) {\n    return this.nodeMetaMap.get(n) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n) {\n    const id = this.getId(n);\n    this.idNodeMap.delete(id);\n    if (n.childNodes) {\n      n.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node) {\n    return this.nodeMetaMap.has(node);\n  }\n  add(n, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n);\n    this.nodeMetaMap.set(n, meta);\n  }\n  replace(id, n) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n, meta);\n    }\n    this.idNodeMap.set(id, n);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction createMirror() {\n  return new Mirror();\n}\nfunction shouldMaskInput({\n  maskInputOptions,\n  tagName,\n  type\n}) {\n  if (tagName === \"OPTION\") {\n    tagName = \"SELECT\";\n  }\n  return Boolean(\n    maskInputOptions[tagName.toLowerCase()] || type && maskInputOptions[type] || type === \"password\" || // Default to \"text\" option for inputs without a \"type\" attribute defined\n    tagName === \"INPUT\" && !type && maskInputOptions[\"text\"]\n  );\n}\nfunction maskInputValue({\n  isMasked,\n  element,\n  value,\n  maskInputFn\n}) {\n  let text = value || \"\";\n  if (!isMasked) {\n    return text;\n  }\n  if (maskInputFn) {\n    text = maskInputFn(text, element);\n  }\n  return \"*\".repeat(text.length);\n}\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\nfunction toUpperCase(str) {\n  return str.toUpperCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n  const ctx = canvas.getContext(\"2d\");\n  if (!ctx) return true;\n  const chunkSize = 50;\n  for (let x = 0; x < canvas.width; x += chunkSize) {\n    for (let y = 0; y < canvas.height; y += chunkSize) {\n      const getImageData = ctx.getImageData;\n      const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n      const pixelBuffer = new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        originalGetImageData.call(\n          ctx,\n          x,\n          y,\n          Math.min(chunkSize, canvas.width - x),\n          Math.min(chunkSize, canvas.height - y)\n        ).data.buffer\n      );\n      if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n    }\n  }\n  return true;\n}\nfunction isNodeMetaEqual(a, b) {\n  if (!a || !b || a.type !== b.type) return false;\n  if (a.type === NodeType.Document)\n    return a.compatMode === b.compatMode;\n  else if (a.type === NodeType.DocumentType)\n    return a.name === b.name && a.publicId === b.publicId && a.systemId === b.systemId;\n  else if (a.type === NodeType.Comment || a.type === NodeType.Text || a.type === NodeType.CDATA)\n    return a.textContent === b.textContent;\n  else if (a.type === NodeType.Element)\n    return a.tagName === b.tagName && JSON.stringify(a.attributes) === JSON.stringify(b.attributes) && a.isSVG === b.isSVG && a.needBlock === b.needBlock;\n  return false;\n}\nfunction getInputType(element) {\n  const type = element.type;\n  return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    toLowerCase(type)\n  ) : null;\n}\nfunction getInputValue(el, tagName, type) {\n  if (tagName === \"INPUT\" && (type === \"radio\" || type === \"checkbox\")) {\n    return el.getAttribute(\"value\") || \"\";\n  }\n  return el.value;\n}\nfunction extractFileExtension(path, baseURL) {\n  let url;\n  try {\n    url = new URL(path, baseURL ?? window.location.href);\n  } catch (err) {\n    return null;\n  }\n  const regex = /\\.([0-9a-z]+)(?:$)/i;\n  const match = url.pathname.match(regex);\n  return match?.[1] ?? null;\n}\nconst cachedImplementations = {};\nfunction getImplementation(name) {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n  const document = window.document;\n  let impl = window[name];\n  if (document && typeof document.createElement === \"function\") {\n    try {\n      const sandbox = document.createElement(\"iframe\");\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow[name]) {\n        impl = // eslint-disable-next-line @typescript-eslint/unbound-method\n        contentWindow[name];\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n    }\n  }\n  return cachedImplementations[name] = impl.bind(\n    window\n  );\n}\nfunction onRequestAnimationFrame(...rest) {\n  return getImplementation(\"requestAnimationFrame\")(...rest);\n}\nfunction setTimeout(...rest) {\n  return getImplementation(\"setTimeout\")(...rest);\n}\nfunction clearTimeout(...rest) {\n  return getImplementation(\"clearTimeout\")(...rest);\n}\nfunction getIFrameContentDocument(iframe) {\n  try {\n    return iframe.contentDocument;\n  } catch {\n  }\n}\nfunction getIFrameContentWindow(iframe) {\n  try {\n    return iframe.contentWindow;\n  } catch {\n  }\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n  return _id++;\n}\nfunction getValidTagName(element) {\n  if (element instanceof HTMLFormElement) {\n    return \"form\";\n  }\n  const processedTagName = toLowerCase(element.tagName);\n  if (tagNameRegex.test(processedTagName)) {\n    return \"div\";\n  }\n  return processedTagName;\n}\nfunction extractOrigin(url) {\n  let origin = \"\";\n  if (url.indexOf(\"//\") > -1) {\n    origin = url.split(\"/\").slice(0, 3).join(\"/\");\n  } else {\n    origin = url.split(\"/\")[0];\n  }\n  origin = origin.split(\"?\")[0];\n  return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction filterCSSPropertiesFromInlineStyle(cssText, ignoredProperties) {\n  if (!cssText || ignoredProperties.size === 0) {\n    return cssText;\n  }\n  try {\n    const properties = cssText.split(\";\");\n    const filteredProperties = [];\n    for (let property of properties) {\n      property = property.trim();\n      if (!property) continue;\n      const colonIndex = property.indexOf(\":\");\n      if (colonIndex === -1) {\n        filteredProperties.push(property);\n        continue;\n      }\n      const propertyName = property.slice(0, colonIndex).trim();\n      if (!ignoredProperties.has(propertyName)) {\n        filteredProperties.push(property);\n      }\n    }\n    return filteredProperties.join(\"; \") + (filteredProperties.length > 0 && cssText.endsWith(\";\") ? \";\" : \"\");\n  } catch (error) {\n    console.warn(\"Error filtering CSS properties:\", error);\n    return cssText;\n  }\n}\nfunction absoluteToStylesheet(cssText, href) {\n  return (cssText || \"\").replace(\n    URL_IN_CSS_REF,\n    (origin, quote1, path1, quote2, path2, path3) => {\n      const filePath = path1 || path2 || path3;\n      const maybeQuote = quote1 || quote2 || \"\";\n      if (!filePath) {\n        return origin;\n      }\n      if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (DATA_URI.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (filePath[0] === \"/\") {\n        return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n      }\n      const stack = href.split(\"/\");\n      const parts = filePath.split(\"/\");\n      stack.pop();\n      for (const part of parts) {\n        if (part === \".\") {\n          continue;\n        } else if (part === \"..\") {\n          stack.pop();\n        } else {\n          stack.push(part);\n        }\n      }\n      return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n    }\n  );\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n  if (attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  let pos = 0;\n  function collectCharacters(regEx) {\n    let chars;\n    const match = regEx.exec(attributeValue.substring(pos));\n    if (match) {\n      chars = match[0];\n      pos += chars.length;\n      return chars;\n    }\n    return \"\";\n  }\n  const output = [];\n  while (true) {\n    collectCharacters(SRCSET_COMMAS_OR_SPACES);\n    if (pos >= attributeValue.length) {\n      break;\n    }\n    let url = collectCharacters(SRCSET_NOT_SPACES);\n    if (url.slice(-1) === \",\") {\n      url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n      output.push(url);\n    } else {\n      let descriptorsStr = \"\";\n      url = absoluteToDoc(doc, url);\n      let inParens = false;\n      while (true) {\n        const c = attributeValue.charAt(pos);\n        if (c === \"\") {\n          output.push((url + descriptorsStr).trim());\n          break;\n        } else if (!inParens) {\n          if (c === \",\") {\n            pos += 1;\n            output.push((url + descriptorsStr).trim());\n            break;\n          } else if (c === \"(\") {\n            inParens = true;\n          }\n        } else {\n          if (c === \")\") {\n            inParens = false;\n          }\n        }\n        descriptorsStr += c;\n        pos += 1;\n      }\n    }\n  }\n  return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n  if (!attributeValue || attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n  return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n  let a = cachedDocument.get(doc);\n  if (!a) {\n    a = doc.createElement(\"a\");\n    cachedDocument.set(doc, a);\n  }\n  if (!customHref) {\n    customHref = \"\";\n  } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n    return customHref;\n  }\n  a.setAttribute(\"href\", customHref);\n  return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn, ignoreCSSAttributes) {\n  if (!value) {\n    return value;\n  }\n  if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"srcset\") {\n    return getAbsoluteSrcsetString(doc, value);\n  } else if (name === \"style\") {\n    let processedStyle = absoluteToStylesheet(value, getHref(doc));\n    if (ignoreCSSAttributes && ignoreCSSAttributes.size > 0) {\n      processedStyle = filterCSSPropertiesFromInlineStyle(\n        processedStyle,\n        ignoreCSSAttributes\n      );\n    }\n    return processedStyle;\n  } else if (tagName === \"object\" && name === \"data\") {\n    return absoluteToDoc(doc, value);\n  }\n  if (typeof maskAttributeFn === \"function\") {\n    return maskAttributeFn(name, value, element);\n  }\n  return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n  return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n  try {\n    if (unblockSelector && element.matches(unblockSelector)) {\n      return false;\n    }\n    if (typeof blockClass === \"string\") {\n      if (element.classList.contains(blockClass)) {\n        return true;\n      }\n    } else {\n      for (let eIndex = element.classList.length; eIndex--; ) {\n        const className = element.classList[eIndex];\n        if (blockClass.test(className)) {\n          return true;\n        }\n      }\n    }\n    if (blockSelector) {\n      return element.matches(blockSelector);\n    }\n  } catch (e) {\n  }\n  return false;\n}\nfunction elementClassMatchesRegex(el, regex) {\n  for (let eIndex = el.classList.length; eIndex--; ) {\n    const className = el.classList[eIndex];\n    if (regex.test(className)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction classMatchesRegex(node, regex, checkAncestors) {\n  if (!node) return false;\n  if (checkAncestors) {\n    return distanceToMatch(\n      node,\n      (node2) => elementClassMatchesRegex(node2, regex)\n    ) >= 0;\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return elementClassMatchesRegex(node, regex);\n  }\n  return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n  if (!node) return -1;\n  if (node.nodeType !== node.ELEMENT_NODE) return -1;\n  if (distance > limit) return -1;\n  if (matchPredicate(node)) return distance;\n  return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n  return (node) => {\n    const el = node;\n    if (el === null) return false;\n    try {\n      if (className) {\n        if (typeof className === \"string\") {\n          if (el.matches(`.${className}`)) return true;\n        } else if (elementClassMatchesRegex(el, className)) {\n          return true;\n        }\n      }\n      if (selector && el.matches(selector)) return true;\n      return false;\n    } catch {\n      return false;\n    }\n  };\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\n  try {\n    const el = node.nodeType === node.ELEMENT_NODE ? node : node.parentElement;\n    if (el === null) return false;\n    if (el.tagName === \"INPUT\") {\n      const autocomplete = el.getAttribute(\"autocomplete\");\n      const disallowedAutocompleteValues = [\n        \"current-password\",\n        \"new-password\",\n        \"cc-number\",\n        \"cc-exp\",\n        \"cc-exp-month\",\n        \"cc-exp-year\",\n        \"cc-csc\"\n      ];\n      if (disallowedAutocompleteValues.includes(autocomplete)) {\n        return true;\n      }\n    }\n    let maskDistance = -1;\n    let unmaskDistance = -1;\n    if (maskAllText) {\n      unmaskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(unmaskTextClass, unmaskTextSelector)\n      );\n      if (unmaskDistance < 0) {\n        return true;\n      }\n      maskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(maskTextClass, maskTextSelector),\n        unmaskDistance >= 0 ? unmaskDistance : Infinity\n      );\n    } else {\n      maskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(maskTextClass, maskTextSelector)\n      );\n      if (maskDistance < 0) {\n        return false;\n      }\n      unmaskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(unmaskTextClass, unmaskTextSelector),\n        maskDistance >= 0 ? maskDistance : Infinity\n      );\n    }\n    return maskDistance >= 0 ? unmaskDistance >= 0 ? maskDistance <= unmaskDistance : true : unmaskDistance >= 0 ? false : !!maskAllText;\n  } catch (e) {\n  }\n  return !!maskAllText;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n  const win = getIFrameContentWindow(iframeEl);\n  if (!win) {\n    return;\n  }\n  let fired = false;\n  let readyState;\n  try {\n    readyState = win.document.readyState;\n  } catch (error) {\n    return;\n  }\n  if (readyState !== \"complete\") {\n    const timer = setTimeout(() => {\n      if (!fired) {\n        listener();\n        fired = true;\n      }\n    }, iframeLoadTimeout);\n    iframeEl.addEventListener(\"load\", () => {\n      clearTimeout(timer);\n      fired = true;\n      listener();\n    });\n    return;\n  }\n  const blankUrl = \"about:blank\";\n  if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n    setTimeout(listener, 0);\n    return iframeEl.addEventListener(\"load\", listener);\n  }\n  iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n  let fired = false;\n  let styleSheetLoaded;\n  try {\n    styleSheetLoaded = link.sheet;\n  } catch (error) {\n    styleSheetLoaded = null;\n  }\n  if (styleSheetLoaded) return;\n  const timer = setTimeout(() => {\n    if (!fired) {\n      listener();\n      fired = true;\n    }\n  }, styleSheetLoadTimeout);\n  link.addEventListener(\"load\", () => {\n    clearTimeout(timer);\n    fired = true;\n    listener();\n  });\n}\nfunction serializeNode(n, options) {\n  const {\n    doc,\n    mirror,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    maskAllText,\n    maskAttributeFn,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    ignoreCSSAttributes\n  } = options;\n  const rootId = getRootId(doc, mirror);\n  switch (n.nodeType) {\n    case n.DOCUMENT_NODE:\n      if (n.compatMode !== \"CSS1Compat\") {\n        return {\n          type: NodeType.Document,\n          childNodes: [],\n          compatMode: n.compatMode\n          // probably \"BackCompat\"\n        };\n      } else {\n        return {\n          type: NodeType.Document,\n          childNodes: []\n        };\n      }\n    case n.DOCUMENT_TYPE_NODE:\n      return {\n        type: NodeType.DocumentType,\n        name: n.name,\n        publicId: n.publicId,\n        systemId: n.systemId,\n        rootId\n      };\n    case n.ELEMENT_NODE:\n      return serializeElementNode(n, {\n        doc,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        inlineStylesheet,\n        maskAttributeFn,\n        maskInputOptions,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n        rootId,\n        maskTextClass,\n        unmaskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        ignoreCSSAttributes\n      });\n    case n.TEXT_NODE:\n      return serializeTextNode(n, {\n        doc,\n        maskAllText,\n        maskTextClass,\n        unmaskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        maskTextFn,\n        maskInputOptions,\n        maskInputFn,\n        rootId\n      });\n    case n.CDATA_SECTION_NODE:\n      return {\n        type: NodeType.CDATA,\n        textContent: \"\",\n        rootId\n      };\n    case n.COMMENT_NODE:\n      return {\n        type: NodeType.Comment,\n        textContent: n.textContent || \"\",\n        rootId\n      };\n    default:\n      return false;\n  }\n}\nfunction getRootId(doc, mirror) {\n  if (!mirror.hasNode(doc)) return void 0;\n  const docId = mirror.getId(doc);\n  return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n, options) {\n  const {\n    maskAllText,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    maskTextFn,\n    maskInputOptions,\n    maskInputFn,\n    rootId\n  } = options;\n  const parentTagName = n.parentNode && n.parentNode.tagName;\n  let textContent = n.textContent;\n  const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n  const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n  const isTextarea = parentTagName === \"TEXTAREA\" ? true : void 0;\n  if (isStyle && textContent) {\n    try {\n      if (n.nextSibling || n.previousSibling) {\n      } else if (n.parentNode.sheet?.cssRules) {\n        textContent = stringifyStylesheet(\n          n.parentNode.sheet\n        );\n      }\n    } catch (err) {\n      console.warn(\n        `Cannot get CSS styles from text's parentNode. Error: ${err}`,\n        n\n      );\n    }\n    textContent = absoluteToStylesheet(textContent, getHref(options.doc));\n  }\n  if (isScript) {\n    textContent = \"SCRIPT_PLACEHOLDER\";\n  }\n  const forceMask = needMaskingText(\n    n,\n    maskTextClass,\n    maskTextSelector,\n    unmaskTextClass,\n    unmaskTextSelector,\n    maskAllText\n  );\n  if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\n    textContent = maskTextFn ? maskTextFn(textContent, n.parentElement) : textContent.replace(/[\\S]/g, \"*\");\n  }\n  if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\n    textContent = maskInputFn ? maskInputFn(textContent, n.parentNode) : textContent.replace(/[\\S]/g, \"*\");\n  }\n  if (parentTagName === \"OPTION\" && textContent) {\n    const isInputMasked = shouldMaskInput({\n      type: null,\n      tagName: parentTagName,\n      maskInputOptions\n    });\n    textContent = maskInputValue({\n      isMasked: needMaskingText(\n        n,\n        maskTextClass,\n        maskTextSelector,\n        unmaskTextClass,\n        unmaskTextSelector,\n        isInputMasked\n      ),\n      element: n,\n      value: textContent,\n      maskInputFn\n    });\n  }\n  return {\n    type: NodeType.Text,\n    textContent: textContent || \"\",\n    isStyle,\n    rootId\n  };\n}\nfunction serializeElementNode(n, options) {\n  const {\n    doc,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskAttributeFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    rootId,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    ignoreCSSAttributes\n  } = options;\n  const needBlock = _isBlockedElement(\n    n,\n    blockClass,\n    blockSelector,\n    unblockSelector\n  );\n  const tagName = getValidTagName(n);\n  let attributes2 = {};\n  const len = n.attributes.length;\n  for (let i = 0; i < len; i++) {\n    const attr = n.attributes[i];\n    if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\n      attributes2[attr.name] = transformAttribute(\n        doc,\n        tagName,\n        toLowerCase(attr.name),\n        attr.value,\n        n,\n        maskAttributeFn,\n        ignoreCSSAttributes\n      );\n    }\n  }\n  if (tagName === \"link\" && inlineStylesheet) {\n    const stylesheet = Array.from(doc.styleSheets).find((s) => {\n      return s.href === n.href;\n    });\n    let cssText = null;\n    if (stylesheet) {\n      cssText = stringifyStylesheet(stylesheet);\n    }\n    if (cssText) {\n      attributes2.rel = null;\n      attributes2.href = null;\n      attributes2.crossorigin = null;\n      attributes2._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n    }\n  }\n  if (tagName === \"style\" && n.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n  !(n.innerText || n.textContent || \"\").trim().length) {\n    const cssText = stringifyStylesheet(\n      n.sheet\n    );\n    if (cssText) {\n      attributes2._cssText = absoluteToStylesheet(cssText, getHref(doc));\n    }\n  }\n  if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\" || tagName === \"option\") {\n    const el = n;\n    const type = getInputType(el);\n    const value = getInputValue(el, toUpperCase(tagName), type);\n    const checked = el.checked;\n    if (type !== \"submit\" && type !== \"button\" && value) {\n      const forceMask = needMaskingText(\n        el,\n        maskTextClass,\n        maskTextSelector,\n        unmaskTextClass,\n        unmaskTextSelector,\n        shouldMaskInput({\n          type,\n          tagName: toUpperCase(tagName),\n          maskInputOptions\n        })\n      );\n      attributes2.value = maskInputValue({\n        isMasked: forceMask,\n        element: el,\n        value,\n        maskInputFn\n      });\n    }\n    if (checked) {\n      attributes2.checked = checked;\n    }\n  }\n  if (tagName === \"option\") {\n    if (n.selected && !maskInputOptions[\"select\"]) {\n      attributes2.selected = true;\n    } else {\n      delete attributes2.selected;\n    }\n  }\n  if (tagName === \"canvas\" && recordCanvas) {\n    if (n.__context === \"2d\") {\n      if (!is2DCanvasBlank(n)) {\n        attributes2.rr_dataURL = n.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      }\n    } else if (!(\"__context\" in n)) {\n      const canvasDataURL = n.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      const blankCanvas = doc.createElement(\"canvas\");\n      blankCanvas.width = n.width;\n      blankCanvas.height = n.height;\n      const blankCanvasDataURL = blankCanvas.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      if (canvasDataURL !== blankCanvasDataURL) {\n        attributes2.rr_dataURL = canvasDataURL;\n      }\n    }\n  }\n  if (tagName === \"img\" && inlineImages) {\n    if (!canvasService) {\n      canvasService = doc.createElement(\"canvas\");\n      canvasCtx = canvasService.getContext(\"2d\");\n    }\n    const image = n;\n    const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n    const priorCrossOrigin = image.crossOrigin;\n    const recordInlineImage = () => {\n      image.removeEventListener(\"load\", recordInlineImage);\n      try {\n        canvasService.width = image.naturalWidth;\n        canvasService.height = image.naturalHeight;\n        canvasCtx.drawImage(image, 0, 0);\n        attributes2.rr_dataURL = canvasService.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      } catch (err) {\n        if (image.crossOrigin !== \"anonymous\") {\n          image.crossOrigin = \"anonymous\";\n          if (image.complete && image.naturalWidth !== 0)\n            recordInlineImage();\n          else image.addEventListener(\"load\", recordInlineImage);\n          return;\n        } else {\n          console.warn(\n            `Cannot inline img src=${imageSrc}! Error: ${err}`\n          );\n        }\n      }\n      if (image.crossOrigin === \"anonymous\") {\n        priorCrossOrigin ? attributes2.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n      }\n    };\n    if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n    else image.addEventListener(\"load\", recordInlineImage);\n  }\n  if (tagName === \"audio\" || tagName === \"video\") {\n    attributes2.rr_mediaState = n.paused ? \"paused\" : \"played\";\n    attributes2.rr_mediaCurrentTime = n.currentTime;\n  }\n  if (!newlyAddedElement) {\n    if (n.scrollLeft) {\n      attributes2.rr_scrollLeft = n.scrollLeft;\n    }\n    if (n.scrollTop) {\n      attributes2.rr_scrollTop = n.scrollTop;\n    }\n  }\n  if (needBlock) {\n    const { width, height } = n.getBoundingClientRect();\n    attributes2 = {\n      class: attributes2.class,\n      rr_width: `${width}px`,\n      rr_height: `${height}px`\n    };\n  }\n  if (tagName === \"iframe\" && !keepIframeSrcFn(attributes2.src)) {\n    if (!needBlock && !getIFrameContentDocument(n)) {\n      attributes2.rr_src = attributes2.src;\n    }\n    delete attributes2.src;\n  }\n  let isCustomElement;\n  try {\n    if (customElements.get(tagName)) isCustomElement = true;\n  } catch (e) {\n  }\n  return {\n    type: NodeType.Element,\n    tagName,\n    attributes: attributes2,\n    childNodes: [],\n    isSVG: isSVGElement(n) || void 0,\n    needBlock,\n    rootId,\n    isCustom: isCustomElement\n  };\n}\nfunction lowerIfExists(maybeAttr) {\n  if (maybeAttr === void 0 || maybeAttr === null) {\n    return \"\";\n  } else {\n    return maybeAttr.toLowerCase();\n  }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n  if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n    return true;\n  } else if (sn.type === NodeType.Element) {\n    if (slimDOMOptions.script && // script tag\n    (sn.tagName === \"script\" || // (module)preload link\n    sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n    sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n      return true;\n    } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n      return true;\n    } else if (sn.tagName === \"meta\") {\n      if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n        return true;\n      } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n        return true;\n      } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n        return true;\n      } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction serializeNodeWithId(n, options) {\n  const {\n    doc,\n    mirror,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    maskAllText,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    skipChild = false,\n    inlineStylesheet = true,\n    maskInputOptions = {},\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions = {},\n    inlineImages = false,\n    recordCanvas = false,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout = 5e3,\n    onBlockedImageLoad,\n    onStylesheetLoad,\n    stylesheetLoadTimeout = 5e3,\n    keepIframeSrcFn = () => false,\n    newlyAddedElement = false,\n    ignoreCSSAttributes\n  } = options;\n  let { preserveWhiteSpace = true } = options;\n  const _serializedNode = serializeNode(n, {\n    doc,\n    mirror,\n    blockClass,\n    blockSelector,\n    maskAllText,\n    unblockSelector,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    inlineStylesheet,\n    maskInputOptions,\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement,\n    ignoreCSSAttributes\n  });\n  if (!_serializedNode) {\n    console.warn(n, \"not serialized\");\n    return null;\n  }\n  let id;\n  if (mirror.hasNode(n)) {\n    id = mirror.getId(n);\n  } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType.Text && !_serializedNode.isStyle && !_serializedNode.textContent.trim().length) {\n    id = IGNORED_NODE;\n  } else {\n    id = genId();\n  }\n  const serializedNode2 = Object.assign(_serializedNode, { id });\n  mirror.add(n, serializedNode2);\n  if (id === IGNORED_NODE) {\n    return null;\n  }\n  if (onSerialize) {\n    onSerialize(n);\n  }\n  let recordChild = !skipChild;\n  if (serializedNode2.type === NodeType.Element) {\n    recordChild = recordChild && !serializedNode2.needBlock;\n    const shadowRoot = n.shadowRoot;\n    if (shadowRoot && isNativeShadowDom(shadowRoot))\n      serializedNode2.isShadowHost = true;\n  }\n  if ((serializedNode2.type === NodeType.Document || serializedNode2.type === NodeType.Element) && recordChild) {\n    if (slimDOMOptions.headWhitespace && serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"head\") {\n      preserveWhiteSpace = false;\n    }\n    const bypassOptions = {\n      doc,\n      mirror,\n      blockClass,\n      blockSelector,\n      maskAllText,\n      unblockSelector,\n      maskTextClass,\n      unmaskTextClass,\n      maskTextSelector,\n      unmaskTextSelector,\n      skipChild,\n      inlineStylesheet,\n      maskInputOptions,\n      maskAttributeFn,\n      maskTextFn,\n      maskInputFn,\n      slimDOMOptions,\n      dataURLOptions,\n      inlineImages,\n      recordCanvas,\n      preserveWhiteSpace,\n      onSerialize,\n      onIframeLoad,\n      iframeLoadTimeout,\n      onBlockedImageLoad,\n      onStylesheetLoad,\n      stylesheetLoadTimeout,\n      keepIframeSrcFn,\n      ignoreCSSAttributes\n    };\n    const childNodes = n.childNodes ? Array.from(n.childNodes) : [];\n    for (const childN of childNodes) {\n      const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n      if (serializedChildNode) {\n        serializedNode2.childNodes.push(serializedChildNode);\n      }\n    }\n    if (isElement(n) && n.shadowRoot) {\n      for (const childN of Array.from(n.shadowRoot.childNodes)) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          isNativeShadowDom(n.shadowRoot) && (serializedChildNode.isShadow = true);\n          serializedNode2.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n  }\n  if (n.parentNode && isShadowRoot(n.parentNode) && isNativeShadowDom(n.parentNode)) {\n    serializedNode2.isShadow = true;\n  }\n  if (serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"iframe\" && !serializedNode2.needBlock) {\n    onceIframeLoaded(\n      n,\n      () => {\n        const iframeDoc = getIFrameContentDocument(n);\n        if (iframeDoc && onIframeLoad) {\n          const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n            doc: iframeDoc,\n            mirror,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskAllText,\n            maskTextClass,\n            unmaskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskAttributeFn,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn,\n            ignoreCSSAttributes\n          });\n          if (serializedIframeNode) {\n            onIframeLoad(\n              n,\n              serializedIframeNode\n            );\n          }\n        }\n      },\n      iframeLoadTimeout\n    );\n  }\n  if (serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"img\" && !n.complete && serializedNode2.needBlock) {\n    const image = n;\n    const updateImageDimensions = () => {\n      if (image.isConnected && !image.complete && onBlockedImageLoad) {\n        try {\n          const rect = image.getBoundingClientRect();\n          if (rect.width > 0 && rect.height > 0) {\n            onBlockedImageLoad(image, serializedNode2, rect);\n          }\n        } catch (error) {\n        }\n      }\n      image.removeEventListener(\"load\", updateImageDimensions);\n    };\n    if (image.isConnected) {\n      image.addEventListener(\"load\", updateImageDimensions);\n    }\n  }\n  if (serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"link\" && typeof serializedNode2.attributes.rel === \"string\" && (serializedNode2.attributes.rel === \"stylesheet\" || serializedNode2.attributes.rel === \"preload\" && typeof serializedNode2.attributes.href === \"string\" && extractFileExtension(serializedNode2.attributes.href) === \"css\")) {\n    onceStylesheetLoaded(\n      n,\n      () => {\n        if (onStylesheetLoad) {\n          const serializedLinkNode = serializeNodeWithId(n, {\n            doc,\n            mirror,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskAllText,\n            maskTextClass,\n            unmaskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskAttributeFn,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn,\n            ignoreCSSAttributes\n          });\n          if (serializedLinkNode) {\n            onStylesheetLoad(\n              n,\n              serializedLinkNode\n            );\n          }\n        }\n      },\n      stylesheetLoadTimeout\n    );\n  }\n  if (serializedNode2.type === NodeType.Element) {\n    delete serializedNode2.needBlock;\n  }\n  return serializedNode2;\n}\nfunction snapshot(n, options) {\n  const {\n    mirror = new Mirror(),\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    unblockSelector = null,\n    maskAllText = false,\n    maskTextClass = \"rr-mask\",\n    unmaskTextClass = null,\n    maskTextSelector = null,\n    unmaskTextSelector = null,\n    inlineStylesheet = true,\n    inlineImages = false,\n    recordCanvas = false,\n    maskAllInputs = false,\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    slimDOM = false,\n    dataURLOptions,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onBlockedImageLoad,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = /* @__PURE__ */ new Set([])\n  } = options || {};\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true\n  } : maskAllInputs === false ? {} : maskAllInputs;\n  const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n    // if true: set of sensible options that should not throw away any information\n    {\n      script: true,\n      comment: true,\n      headFavicon: true,\n      headWhitespace: true,\n      headMetaDescKeywords: slimDOM === \"all\",\n      // destructive\n      headMetaSocial: true,\n      headMetaRobots: true,\n      headMetaHttpEquiv: true,\n      headMetaAuthorship: true,\n      headMetaVerification: true\n    }\n  ) : slimDOM === false ? {} : slimDOM;\n  return serializeNodeWithId(n, {\n    doc: n,\n    mirror,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    maskAllText,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    skipChild: false,\n    inlineStylesheet,\n    maskInputOptions,\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onBlockedImageLoad,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn,\n    newlyAddedElement: false,\n    ignoreCSSAttributes\n  });\n}\nfunction visitSnapshot(node, onVisit) {\n  function walk(current) {\n    onVisit(current);\n    if (current.type === NodeType.Document || current.type === NodeType.Element) {\n      current.childNodes.forEach(walk);\n    }\n  }\n  walk(node);\n}\nfunction cleanupSnapshot() {\n  _id = 1;\n}\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nfunction parse(css, options = {}) {\n  let lineno = 1;\n  let column = 1;\n  function updatePosition(str) {\n    const lines = str.match(/\\n/g);\n    if (lines) {\n      lineno += lines.length;\n    }\n    const i = str.lastIndexOf(\"\\n\");\n    column = i === -1 ? column + str.length : str.length - i;\n  }\n  function position() {\n    const start = { line: lineno, column };\n    return (node) => {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n  const _Position = class _Position {\n    constructor(start) {\n      __publicField(this, \"content\");\n      __publicField(this, \"start\");\n      __publicField(this, \"end\");\n      __publicField(this, \"source\");\n      this.start = start;\n      this.end = { line: lineno, column };\n      this.source = options.source;\n      this.content = _Position.content;\n    }\n  };\n  __publicField(_Position, \"content\");\n  let Position = _Position;\n  Position.content = css;\n  const errorsList = [];\n  function error(msg) {\n    const err = new Error(\n      `${options.source || \"\"}:${lineno}:${column}: ${msg}`\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = css;\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n  function stylesheet() {\n    const rulesList = rules();\n    return {\n      type: \"stylesheet\",\n      stylesheet: {\n        source: options.source,\n        rules: rulesList,\n        parsingErrors: errorsList\n      }\n    };\n  }\n  function open() {\n    return match(/^{\\s*/);\n  }\n  function close() {\n    return match(/^}/);\n  }\n  function rules() {\n    let node;\n    const rules2 = [];\n    whitespace();\n    comments(rules2);\n    while (css.length && css.charAt(0) !== \"}\" && (node = atrule() || rule())) {\n      if (node) {\n        rules2.push(node);\n        comments(rules2);\n      }\n    }\n    return rules2;\n  }\n  function match(re) {\n    const m = re.exec(css);\n    if (!m) {\n      return;\n    }\n    const str = m[0];\n    updatePosition(str);\n    css = css.slice(str.length);\n    return m;\n  }\n  function whitespace() {\n    match(/^\\s*/);\n  }\n  function comments(rules2 = []) {\n    let c;\n    while (c = comment()) {\n      if (c) {\n        rules2.push(c);\n      }\n      c = comment();\n    }\n    return rules2;\n  }\n  function comment() {\n    const pos = position();\n    if (\"/\" !== css.charAt(0) || \"*\" !== css.charAt(1)) {\n      return;\n    }\n    let i = 2;\n    while (\"\" !== css.charAt(i) && (\"*\" !== css.charAt(i) || \"/\" !== css.charAt(i + 1))) {\n      ++i;\n    }\n    i += 2;\n    if (\"\" === css.charAt(i - 1)) {\n      return error(\"End of comment missing\");\n    }\n    const str = css.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    css = css.slice(i);\n    column += 2;\n    return pos({\n      type: \"comment\",\n      comment: str\n    });\n  }\n  function selector() {\n    const m = match(/^([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const splitSelectors = trim(m[0]).replace(/\\/\\*[\\s\\S]*?\\*\\/+/g, \"\").replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m2) => {\n      return m2.replace(/,/g, \"‌\");\n    }).split(/\\s*(?![^(]*\\)),\\s*/);\n    if (splitSelectors.length <= 1) {\n      return splitSelectors.map((s) => {\n        return s.replace(/\\u200C/g, \",\");\n      });\n    }\n    let i = 0;\n    let j = 0;\n    const len = splitSelectors.length;\n    const finalSelectors = [];\n    while (i < len) {\n      const openingParensCount = (splitSelectors[i].match(/\\(/g) || []).length;\n      const closingParensCount = (splitSelectors[i].match(/\\)/g) || []).length;\n      let unbalancedParens = openingParensCount - closingParensCount;\n      if (unbalancedParens >= 1) {\n        let foundClosingSelector = false;\n        j = i + 1;\n        while (j < len) {\n          const nextOpeningParensCount = (splitSelectors[j].match(/\\(/g) || []).length;\n          const nextClosingParensCount = (splitSelectors[j].match(/\\)/g) || []).length;\n          const nextUnbalancedParens = nextClosingParensCount - nextOpeningParensCount;\n          if (nextUnbalancedParens === unbalancedParens) {\n            finalSelectors.push(splitSelectors.slice(i, j + 1).join(\",\"));\n            i = j + 1;\n            foundClosingSelector = true;\n            break;\n          }\n          j++;\n          unbalancedParens -= nextUnbalancedParens;\n        }\n        if (foundClosingSelector) {\n          continue;\n        }\n        splitSelectors.slice(i, len).forEach((selector2) => selector2 && finalSelectors.push(selector2));\n        break;\n      }\n      splitSelectors[i] && finalSelectors.push(splitSelectors[i]);\n      i++;\n    }\n    return finalSelectors.map((s) => {\n      return s.replace(/\\u200C/g, \",\");\n    });\n  }\n  function declaration() {\n    const pos = position();\n    const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n    if (!propMatch) {\n      return;\n    }\n    const prop = trim(propMatch[0]);\n    if (!match(/^:\\s*/)) {\n      return error(`property missing ':'`);\n    }\n    const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\n    const ret = pos({\n      type: \"declaration\",\n      property: prop.replace(commentre, \"\"),\n      value: val ? trim(val[0]).replace(commentre, \"\") : \"\"\n    });\n    match(/^[;\\s]*/);\n    return ret;\n  }\n  function declarations() {\n    const decls = [];\n    if (!open()) {\n      return error(`missing '{'`);\n    }\n    comments(decls);\n    let decl;\n    while (decl = declaration()) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n      decl = declaration();\n    }\n    if (!close()) {\n      return error(`missing '}'`);\n    }\n    return decls;\n  }\n  function keyframe() {\n    let m;\n    const vals = [];\n    const pos = position();\n    while (m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/)) {\n      vals.push(m[1]);\n      match(/^,\\s*/);\n    }\n    if (!vals.length) {\n      return;\n    }\n    return pos({\n      type: \"keyframe\",\n      values: vals,\n      declarations: declarations()\n    });\n  }\n  function atkeyframes() {\n    const pos = position();\n    let m = match(/^@([-\\w]+)?keyframes\\s*/);\n    if (!m) {\n      return;\n    }\n    const vendor = m[1];\n    m = match(/^([-\\w]+)\\s*/);\n    if (!m) {\n      return error(\"@keyframes missing name\");\n    }\n    const name = m[1];\n    if (!open()) {\n      return error(`@keyframes missing '{'`);\n    }\n    let frame;\n    let frames = comments();\n    while (frame = keyframe()) {\n      frames.push(frame);\n      frames = frames.concat(comments());\n    }\n    if (!close()) {\n      return error(`@keyframes missing '}'`);\n    }\n    return pos({\n      type: \"keyframes\",\n      name,\n      vendor,\n      keyframes: frames\n    });\n  }\n  function atsupports() {\n    const pos = position();\n    const m = match(/^@supports *([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const supports = trim(m[1]);\n    if (!open()) {\n      return error(`@supports missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@supports missing '}'`);\n    }\n    return pos({\n      type: \"supports\",\n      supports,\n      rules: style\n    });\n  }\n  function athost() {\n    const pos = position();\n    const m = match(/^@host\\s*/);\n    if (!m) {\n      return;\n    }\n    if (!open()) {\n      return error(`@host missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@host missing '}'`);\n    }\n    return pos({\n      type: \"host\",\n      rules: style\n    });\n  }\n  function atmedia() {\n    const pos = position();\n    const m = match(/^@media *([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const media = trim(m[1]);\n    if (!open()) {\n      return error(`@media missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@media missing '}'`);\n    }\n    return pos({\n      type: \"media\",\n      media,\n      rules: style\n    });\n  }\n  function atcustommedia() {\n    const pos = position();\n    const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n    if (!m) {\n      return;\n    }\n    return pos({\n      type: \"custom-media\",\n      name: trim(m[1]),\n      media: trim(m[2])\n    });\n  }\n  function atpage() {\n    const pos = position();\n    const m = match(/^@page */);\n    if (!m) {\n      return;\n    }\n    const sel = selector() || [];\n    if (!open()) {\n      return error(`@page missing '{'`);\n    }\n    let decls = comments();\n    let decl;\n    while (decl = declaration()) {\n      decls.push(decl);\n      decls = decls.concat(comments());\n    }\n    if (!close()) {\n      return error(`@page missing '}'`);\n    }\n    return pos({\n      type: \"page\",\n      selectors: sel,\n      declarations: decls\n    });\n  }\n  function atdocument() {\n    const pos = position();\n    const m = match(/^@([-\\w]+)?document *([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const vendor = trim(m[1]);\n    const doc = trim(m[2]);\n    if (!open()) {\n      return error(`@document missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@document missing '}'`);\n    }\n    return pos({\n      type: \"document\",\n      document: doc,\n      vendor,\n      rules: style\n    });\n  }\n  function atfontface() {\n    const pos = position();\n    const m = match(/^@font-face\\s*/);\n    if (!m) {\n      return;\n    }\n    if (!open()) {\n      return error(`@font-face missing '{'`);\n    }\n    let decls = comments();\n    let decl;\n    while (decl = declaration()) {\n      decls.push(decl);\n      decls = decls.concat(comments());\n    }\n    if (!close()) {\n      return error(`@font-face missing '}'`);\n    }\n    return pos({\n      type: \"font-face\",\n      declarations: decls\n    });\n  }\n  const atimport = _compileAtrule(\"import\");\n  const atcharset = _compileAtrule(\"charset\");\n  const atnamespace = _compileAtrule(\"namespace\");\n  function _compileAtrule(name) {\n    const re = new RegExp(\n      \"^@\" + name + \"\\\\s*((?:\" + [\n        /[^\\\\]\"(?:\\\\\"|[^\"])*\"/.source,\n        // consume any quoted parts (checking that the double quote isn't itself escaped)\n        /[^\\\\]'(?:\\\\'|[^'])*'/.source,\n        // same but for single quotes\n        \"[^;]\"\n      ].join(\"|\") + \")+);\"\n    );\n    return () => {\n      const pos = position();\n      const m = match(re);\n      if (!m) {\n        return;\n      }\n      const ret = { type: name };\n      ret[name] = m[1].trim();\n      return pos(ret);\n    };\n  }\n  function atrule() {\n    if (css[0] !== \"@\") {\n      return;\n    }\n    return atkeyframes() || atmedia() || atcustommedia() || atsupports() || atimport() || atcharset() || atnamespace() || atdocument() || atpage() || athost() || atfontface();\n  }\n  function rule() {\n    const pos = position();\n    const sel = selector();\n    if (!sel) {\n      return error(\"selector missing\");\n    }\n    comments();\n    return pos({\n      type: \"rule\",\n      selectors: sel,\n      declarations: declarations()\n    });\n  }\n  return addParent(stylesheet());\n}\nfunction trim(str) {\n  return str ? str.replace(/^\\s+|\\s+$/g, \"\") : \"\";\n}\nfunction addParent(obj, parent) {\n  const isNode = obj && typeof obj.type === \"string\";\n  const childParent = isNode ? obj : parent;\n  for (const k of Object.keys(obj)) {\n    const value = obj[k];\n    if (Array.isArray(value)) {\n      value.forEach((v) => {\n        addParent(v, childParent);\n      });\n    } else if (value && typeof value === \"object\") {\n      addParent(value, childParent);\n    }\n  }\n  if (isNode) {\n    Object.defineProperty(obj, \"parent\", {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: parent || null\n    });\n  }\n  return obj;\n}\nconst tagMap = {\n  script: \"noscript\",\n  // camel case svg element tag names\n  altglyph: \"altGlyph\",\n  altglyphdef: \"altGlyphDef\",\n  altglyphitem: \"altGlyphItem\",\n  animatecolor: \"animateColor\",\n  animatemotion: \"animateMotion\",\n  animatetransform: \"animateTransform\",\n  clippath: \"clipPath\",\n  feblend: \"feBlend\",\n  fecolormatrix: \"feColorMatrix\",\n  fecomponenttransfer: \"feComponentTransfer\",\n  fecomposite: \"feComposite\",\n  feconvolvematrix: \"feConvolveMatrix\",\n  fediffuselighting: \"feDiffuseLighting\",\n  fedisplacementmap: \"feDisplacementMap\",\n  fedistantlight: \"feDistantLight\",\n  fedropshadow: \"feDropShadow\",\n  feflood: \"feFlood\",\n  fefunca: \"feFuncA\",\n  fefuncb: \"feFuncB\",\n  fefuncg: \"feFuncG\",\n  fefuncr: \"feFuncR\",\n  fegaussianblur: \"feGaussianBlur\",\n  feimage: \"feImage\",\n  femerge: \"feMerge\",\n  femergenode: \"feMergeNode\",\n  femorphology: \"feMorphology\",\n  feoffset: \"feOffset\",\n  fepointlight: \"fePointLight\",\n  fespecularlighting: \"feSpecularLighting\",\n  fespotlight: \"feSpotLight\",\n  fetile: \"feTile\",\n  feturbulence: \"feTurbulence\",\n  foreignobject: \"foreignObject\",\n  glyphref: \"glyphRef\",\n  lineargradient: \"linearGradient\",\n  radialgradient: \"radialGradient\"\n};\nfunction getTagName(n) {\n  let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n  if (tagName === \"link\" && n.attributes._cssText) {\n    tagName = \"style\";\n  }\n  return tagName;\n}\nfunction escapeRegExp(str) {\n  return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, \"g\");\nfunction addHoverClass(cssText, cache) {\n  const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\n  if (cachedStyle) return cachedStyle;\n  if (cssText.length >= 1e6) {\n    return cssText;\n  }\n  const ast = parse(cssText, {\n    silent: true\n  });\n  if (!ast.stylesheet) {\n    return cssText;\n  }\n  const selectors = [];\n  ast.stylesheet.rules.forEach((rule) => {\n    if (\"selectors\" in rule) {\n      (rule.selectors || []).forEach((selector) => {\n        if (HOVER_SELECTOR.test(selector)) {\n          selectors.push(selector);\n        }\n      });\n    }\n  });\n  if (selectors.length === 0) {\n    return cssText;\n  }\n  const selectorMatcher = new RegExp(\n    selectors.filter((selector, index) => selectors.indexOf(selector) === index).sort((a, b) => b.length - a.length).map((selector) => {\n      return escapeRegExp(selector);\n    }).join(\"|\"),\n    \"g\"\n  );\n  const result = cssText.replace(selectorMatcher, (selector) => {\n    const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, \"$1.\\\\:hover\");\n    return `${selector}, ${newSelector}`;\n  });\n  cache?.stylesWithHoverClass.set(cssText, result);\n  return result;\n}\nfunction createCache() {\n  const stylesWithHoverClass = /* @__PURE__ */ new Map();\n  return {\n    stylesWithHoverClass\n  };\n}\nfunction buildNode(n, options) {\n  const { doc, hackCss, cache } = options;\n  switch (n.type) {\n    case NodeType.Document:\n      return doc.implementation.createDocument(null, \"\", null);\n    case NodeType.DocumentType:\n      return doc.implementation.createDocumentType(\n        n.name || \"html\",\n        n.publicId,\n        n.systemId\n      );\n    case NodeType.Element: {\n      const tagName = getTagName(n);\n      let node;\n      if (n.isSVG) {\n        node = doc.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\n      } else {\n        if (\n          // If the tag name is a custom element name\n          n.isCustom && // If the browser supports custom elements\n          doc.defaultView?.customElements && // If the custom element hasn't been defined yet\n          !doc.defaultView.customElements.get(n.tagName)\n        )\n          try {\n            doc.defaultView.customElements.define(\n              n.tagName,\n              class extends doc.defaultView.HTMLElement {\n              }\n            );\n          } catch (e) {\n            console.warn(\"Cannot define custom element\", e);\n          }\n        node = doc.createElement(tagName);\n      }\n      const specialAttributes = {};\n      for (const name in n.attributes) {\n        if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\n          continue;\n        }\n        let value = n.attributes[name];\n        if (tagName === \"option\" && name === \"selected\" && value === false) {\n          continue;\n        }\n        if (value === null) {\n          continue;\n        }\n        if (value === true) value = \"\";\n        if (name.startsWith(\"rr_\")) {\n          specialAttributes[name] = value;\n          continue;\n        }\n        const isTextarea = tagName === \"textarea\" && name === \"value\";\n        const isRemoteOrDynamicCss = tagName === \"style\" && name === \"_cssText\";\n        if (isRemoteOrDynamicCss && hackCss && typeof value === \"string\") {\n          value = addHoverClass(value, cache);\n        }\n        if ((isTextarea || isRemoteOrDynamicCss) && typeof value === \"string\") {\n          const child = doc.createTextNode(value);\n          for (const c of Array.from(node.childNodes)) {\n            if (c.nodeType === node.TEXT_NODE) {\n              node.removeChild(c);\n            }\n          }\n          node.appendChild(child);\n          continue;\n        }\n        try {\n          if (n.isSVG && name === \"xlink:href\") {\n            node.setAttributeNS(\n              \"http://www.w3.org/1999/xlink\",\n              name,\n              value.toString()\n            );\n          } else if (name === \"onload\" || name === \"onclick\" || name.substring(0, 7) === \"onmouse\") {\n            node.setAttribute(\"_\" + name, value.toString());\n          } else if (tagName === \"meta\" && n.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && name === \"content\") {\n            node.setAttribute(\"csp-content\", value.toString());\n            continue;\n          } else if (tagName === \"link\" && (n.attributes.rel === \"preload\" || n.attributes.rel === \"modulepreload\")) {\n          } else if (tagName === \"link\" && n.attributes.rel === \"prefetch\" && typeof n.attributes.href === \"string\" && extractFileExtension(n.attributes.href) === \"js\") {\n          } else if (tagName === \"img\" && n.attributes.srcset && n.attributes.rr_dataURL) {\n            node.setAttribute(\n              \"rrweb-original-srcset\",\n              n.attributes.srcset\n            );\n          } else {\n            node.setAttribute(name, value.toString());\n          }\n        } catch (error) {\n        }\n      }\n      for (const name in specialAttributes) {\n        const value = specialAttributes[name];\n        if (tagName === \"canvas\" && name === \"rr_dataURL\") {\n          const image = doc.createElement(\"img\");\n          image.onload = () => {\n            const ctx = node.getContext(\"2d\");\n            if (ctx) {\n              ctx.drawImage(image, 0, 0, image.width, image.height);\n            }\n          };\n          image.src = value.toString();\n          if (node.RRNodeType)\n            node.rr_dataURL = value.toString();\n        } else if (tagName === \"img\" && name === \"rr_dataURL\") {\n          const image = node;\n          if (!image.currentSrc.startsWith(\"data:\")) {\n            image.setAttribute(\n              \"rrweb-original-src\",\n              n.attributes.src\n            );\n            image.src = value.toString();\n          }\n        }\n        if (name === \"rr_width\") {\n          node.style.setProperty(\"width\", value.toString());\n        } else if (name === \"rr_height\") {\n          node.style.setProperty(\"height\", value.toString());\n        } else if (name === \"rr_mediaCurrentTime\" && typeof value === \"number\") {\n          node.currentTime = value;\n        } else if (name === \"rr_mediaState\") {\n          switch (value) {\n            case \"played\":\n              node.play().catch((e) => console.warn(\"media playback error\", e));\n              break;\n            case \"paused\":\n              node.pause();\n              break;\n          }\n        }\n      }\n      if (n.isShadowHost) {\n        if (!node.shadowRoot) {\n          node.attachShadow({ mode: \"open\" });\n        } else {\n          while (node.shadowRoot.firstChild) {\n            node.shadowRoot.removeChild(node.shadowRoot.firstChild);\n          }\n        }\n      }\n      return node;\n    }\n    case NodeType.Text:\n      return doc.createTextNode(\n        n.isStyle && hackCss ? addHoverClass(n.textContent, cache) : n.textContent\n      );\n    case NodeType.CDATA:\n      if (!(doc instanceof XMLDocument)) {\n        return null;\n      }\n      return doc.createCDATASection(n.textContent);\n    case NodeType.Comment:\n      return doc.createComment(n.textContent);\n    default:\n      return null;\n  }\n}\nfunction buildNodeWithSN(n, options) {\n  const {\n    doc,\n    mirror,\n    skipChild = false,\n    hackCss = true,\n    afterAppend,\n    cache\n  } = options;\n  if (mirror.has(n.id)) {\n    const nodeInMirror = mirror.getNode(n.id);\n    const meta = mirror.getMeta(nodeInMirror);\n    if (isNodeMetaEqual(meta, n)) return mirror.getNode(n.id);\n  }\n  let node = buildNode(n, { doc, hackCss, cache });\n  if (!node) {\n    return null;\n  }\n  if (n.rootId && mirror.getNode(n.rootId) !== doc) {\n    mirror.replace(n.rootId, doc);\n  }\n  if (n.type === NodeType.Document) {\n    doc.close();\n    doc.open();\n    if (n.compatMode === \"BackCompat\" && n.childNodes && n.childNodes[0].type !== NodeType.DocumentType) {\n      if (n.childNodes[0].type === NodeType.Element && \"xmlns\" in n.childNodes[0].attributes && n.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\") {\n        doc.write(\n          '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">'\n        );\n      } else {\n        doc.write(\n          '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">'\n        );\n      }\n    }\n    node = doc;\n  }\n  mirror.add(node, n);\n  if ((n.type === NodeType.Document || n.type === NodeType.Element) && !skipChild) {\n    for (const childN of n.childNodes) {\n      const childNode = buildNodeWithSN(childN, {\n        doc,\n        mirror,\n        skipChild: false,\n        hackCss,\n        afterAppend,\n        cache\n      });\n      if (!childNode) {\n        console.warn(\"Failed to rebuild\", childN);\n        continue;\n      }\n      if (childN.isShadow && isElement(node) && node.shadowRoot) {\n        node.shadowRoot.appendChild(childNode);\n      } else if (n.type === NodeType.Document && childN.type == NodeType.Element) {\n        const htmlElement = childNode;\n        let body = null;\n        htmlElement.childNodes.forEach((child) => {\n          if (child.nodeName === \"BODY\") body = child;\n        });\n        if (body) {\n          htmlElement.removeChild(body);\n          node.appendChild(childNode);\n          htmlElement.appendChild(body);\n        } else {\n          node.appendChild(childNode);\n        }\n      } else {\n        node.appendChild(childNode);\n      }\n      if (afterAppend) {\n        afterAppend(childNode, childN.id);\n      }\n    }\n  }\n  return node;\n}\nfunction visit(mirror, onVisit) {\n  function walk(node) {\n    onVisit(node);\n  }\n  for (const id of mirror.getIds()) {\n    if (mirror.has(id)) {\n      walk(mirror.getNode(id));\n    }\n  }\n}\nfunction handleScroll(node, mirror) {\n  const n = mirror.getMeta(node);\n  if (n?.type !== NodeType.Element) {\n    return;\n  }\n  const el = node;\n  for (const name in n.attributes) {\n    if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) && name.startsWith(\"rr_\"))) {\n      continue;\n    }\n    const value = n.attributes[name];\n    if (name === \"rr_scrollLeft\") {\n      el.scrollLeft = value;\n    }\n    if (name === \"rr_scrollTop\") {\n      el.scrollTop = value;\n    }\n  }\n}\nfunction rebuild(n, options) {\n  const {\n    doc,\n    onVisit,\n    hackCss = true,\n    afterAppend,\n    cache,\n    mirror = new Mirror()\n  } = options;\n  const node = buildNodeWithSN(n, {\n    doc,\n    mirror,\n    skipChild: false,\n    hackCss,\n    afterAppend,\n    cache\n  });\n  visit(mirror, (visitedNode) => {\n    if (onVisit) {\n      onVisit(visitedNode);\n    }\n    handleScroll(visitedNode, mirror);\n  });\n  return node;\n}\nexport {\n  IGNORED_NODE,\n  Mirror,\n  NodeType,\n  addHoverClass,\n  buildNodeWithSN,\n  classMatchesRegex,\n  cleanupSnapshot,\n  clearTimeout,\n  createCache,\n  createMatchPredicate,\n  createMirror,\n  distanceToMatch,\n  escapeImportStatement,\n  extractFileExtension,\n  filterCSSPropertiesFromInlineStyle,\n  fixAllCssProperty,\n  fixSafariColons,\n  genId,\n  getIFrameContentDocument,\n  getIFrameContentWindow,\n  getInputType,\n  getInputValue,\n  ignoreAttribute,\n  is2DCanvasBlank,\n  isCSSImportRule,\n  isCSSStyleRule,\n  isElement,\n  isNativeShadowDom,\n  isNodeMetaEqual,\n  isShadowRoot,\n  maskInputValue,\n  needMaskingText,\n  onRequestAnimationFrame,\n  rebuild,\n  serializeNodeWithId,\n  setTimeout,\n  shouldMaskInput,\n  snapshot,\n  stringifyRule,\n  stringifyStylesheet,\n  toLowerCase,\n  toUpperCase,\n  transformAttribute,\n  visitSnapshot\n};\n//# sourceMappingURL=rrweb-snapshot.js.map\n", "import type {\n  throttleOptions,\n  listenerHandler,\n  hookResetter,\n  blockClass,\n  addedNodeMutation,\n  DocumentDimension,\n  IWindow,\n  DeprecatedMirror,\n  textMutation,\n} from '@sentry-internal/rrweb-types';\nimport type { IMirror, Mirror } from '@sentry-internal/rrweb-snapshot';\nimport {\n  createMatchPredicate,\n  distanceToMatch,\n} from '@sentry-internal/rrweb-snapshot';\nimport { isShadowRoot, IGNORED_NODE } from '@sentry-internal/rrweb-snapshot';\nimport type { RRNode, RRIFrameElement } from '@sentry-internal/rrdom';\n\nexport function on(\n  type: string,\n  fn: EventListenerOrEventListenerObject,\n  target: Document | IWindow = document,\n): listenerHandler {\n  const options = { capture: true, passive: true };\n  target.addEventListener(type, fn, options);\n  return () => target.removeEventListener(type, fn, options);\n}\n\n// https://github.com/rrweb-io/rrweb/pull/407\nconst DEPARTED_MIRROR_ACCESS_WARNING =\n  'Please stop import mirror directly. Instead of that,' +\n  '\\r\\n' +\n  'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n  '\\r\\n' +\n  'or you can use record.mirror to access the mirror instance during recording.';\n/** @deprecated */\nexport let _mirror: DeprecatedMirror = {\n  map: {},\n  getId() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return -1;\n  },\n  getNode() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return null;\n  },\n  removeNodeFromMap() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n  has() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return false;\n  },\n  reset() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n  _mirror = new Proxy(_mirror, {\n    get(target, prop, receiver) {\n      if (prop === 'map') {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n      }\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return Reflect.get(target, prop, receiver);\n    },\n  });\n}\n\n// copy from underscore and modified\nexport function throttle<T>(\n  func: (arg: T) => void,\n  wait: number,\n  options: throttleOptions = {},\n) {\n  let timeout: ReturnType<typeof setTimeout> | null = null;\n  let previous = 0;\n  return function (...args: T[]) {\n    const now = Date.now();\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n    const remaining = wait - (now - previous);\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-this-alias\n    const context = this;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = now;\n      func.apply(context, args);\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(() => {\n        previous = options.leading === false ? 0 : Date.now();\n        timeout = null;\n        func.apply(context, args);\n      }, remaining);\n    }\n  };\n}\n\nexport function hookSetter<T>(\n  target: T,\n  key: string | number | symbol,\n  d: PropertyDescriptor,\n  isRevoked?: boolean,\n  win = window,\n): hookResetter {\n  const original = win.Object.getOwnPropertyDescriptor(target, key);\n  win.Object.defineProperty(\n    target,\n    key,\n    isRevoked\n      ? d\n      : {\n          set(value) {\n            // put hooked setter into event loop to avoid of set latency\n            setTimeout(() => {\n              d.set!.call(this, value);\n            }, 0);\n            if (original && original.set) {\n              original.set.call(this, value);\n            }\n          },\n        },\n  );\n  return () => hookSetter(target, key, original || {}, true);\n}\n\n// copy from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nexport function patch(\n  source: { [key: string]: any },\n  name: string,\n  replacement: (...args: unknown[]) => unknown,\n): () => void {\n  try {\n    if (!(name in source)) {\n      return () => {\n        //\n      };\n    }\n\n    const original = source[name] as () => unknown;\n    const wrapped = replacement(original);\n\n    // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n    // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n    if (typeof wrapped === 'function') {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original,\n        },\n      });\n    }\n\n    source[name] = wrapped;\n\n    return () => {\n      source[name] = original;\n    };\n  } catch {\n    return () => {\n      //\n    };\n    // This can throw if multiple fill happens on a global object like XMLHttpRequest\n    // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n  }\n}\n\n// guard against old third party libraries which redefine Date.now\nlet nowTimestamp = Date.now;\n\nif (!(/*@__PURE__*/ /[1-9][0-9]{12}/.test(Date.now().toString()))) {\n  // they have already redefined it! use a fallback\n  nowTimestamp = () => new Date().getTime();\n}\nexport { nowTimestamp };\n\nexport function getWindowScroll(win: Window) {\n  const doc = win.document;\n  return {\n    left: doc.scrollingElement\n      ? doc.scrollingElement.scrollLeft\n      : win.pageXOffset !== undefined\n      ? win.pageXOffset\n      : doc?.documentElement.scrollLeft ||\n        doc?.body?.parentElement?.scrollLeft ||\n        doc?.body?.scrollLeft ||\n        0,\n    top: doc.scrollingElement\n      ? doc.scrollingElement.scrollTop\n      : win.pageYOffset !== undefined\n      ? win.pageYOffset\n      : doc?.documentElement.scrollTop ||\n        doc?.body?.parentElement?.scrollTop ||\n        doc?.body?.scrollTop ||\n        0,\n  };\n}\n\nexport function getWindowHeight(): number {\n  return (\n    window.innerHeight ||\n    (document.documentElement && document.documentElement.clientHeight) ||\n    (document.body && document.body.clientHeight)\n  );\n}\n\nexport function getWindowWidth(): number {\n  return (\n    window.innerWidth ||\n    (document.documentElement && document.documentElement.clientWidth) ||\n    (document.body && document.body.clientWidth)\n  );\n}\n\n/**\n * Returns the given node as an HTMLElement if it is one, otherwise the parent node as an HTMLElement\n * @param node - node to check\n * @returns HTMLElement or null\n */\n\nexport function closestElementOfNode(node: Node | null): HTMLElement | null {\n  if (!node) {\n    return null;\n  }\n\n  // Catch access to node properties to avoid Firefox \"permission denied\" errors\n  try {\n    const el: HTMLElement | null =\n      node.nodeType === node.ELEMENT_NODE\n        ? (node as HTMLElement)\n        : node.parentElement;\n    return el;\n  } catch (error) {\n    return null;\n  }\n}\n\n/**\n * Checks if the given element set to be blocked by rrweb\n * @param node - node to check\n * @param blockClass - class name to check\n * @param blockSelector - css selectors to check\n * @param checkAncestors - whether to search through parent nodes for the block class\n * @returns true/false if the node was blocked or not\n */\nexport function isBlocked(\n  node: Node | null,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  checkAncestors: boolean,\n): boolean {\n  if (!node) {\n    return false;\n  }\n  const el = closestElementOfNode(node);\n\n  if (!el) {\n    return false;\n  }\n\n  const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n\n  if (!checkAncestors) {\n    const isUnblocked = unblockSelector && el.matches(unblockSelector);\n\n    return blockedPredicate(el) && !isUnblocked;\n  }\n\n  const blockDistance = distanceToMatch(el, blockedPredicate);\n  let unblockDistance = -1;\n\n  if (blockDistance < 0) {\n    return false;\n  }\n\n  if (unblockSelector) {\n    unblockDistance = distanceToMatch(\n      el,\n      createMatchPredicate(null, unblockSelector),\n    );\n  }\n\n  if (blockDistance > -1 && unblockDistance < 0) {\n    return true;\n  }\n\n  return blockDistance < unblockDistance;\n}\n\nexport function isSerialized(n: Node, mirror: Mirror): boolean {\n  return mirror.getId(n) !== -1;\n}\n\nexport function isIgnored(n: Node, mirror: Mirror): boolean {\n  // The main part of the slimDOM check happens in\n  // rrweb-snapshot::serializeNodeWithId\n  return mirror.getId(n) === IGNORED_NODE;\n}\n\nexport function isAncestorRemoved(target: Node, mirror: Mirror): boolean {\n  if (isShadowRoot(target)) {\n    return false;\n  }\n  const id = mirror.getId(target);\n  if (!mirror.has(id)) {\n    return true;\n  }\n  if (\n    target.parentNode &&\n    target.parentNode.nodeType === target.DOCUMENT_NODE\n  ) {\n    return false;\n  }\n  // if the root is not document, it means the node is not in the DOM tree anymore\n  if (!target.parentNode) {\n    return true;\n  }\n  return isAncestorRemoved(target.parentNode, mirror);\n}\n\nexport function legacy_isTouchEvent(\n  event: MouseEvent | TouchEvent | PointerEvent,\n): event is TouchEvent {\n  return Boolean((event as TouchEvent).changedTouches);\n}\n\nexport function polyfill(win = window) {\n  if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    win.NodeList.prototype.forEach = Array.prototype\n      .forEach as unknown as NodeList['forEach'];\n  }\n\n  if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    win.DOMTokenList.prototype.forEach = Array.prototype\n      .forEach as unknown as DOMTokenList['forEach'];\n  }\n\n  // https://github.com/Financial-Times/polyfill-service/pull/183\n  if (!Node.prototype.contains) {\n    Node.prototype.contains = (...args: unknown[]) => {\n      let node = args[0] as Node | null;\n      if (!(0 in args)) {\n        throw new TypeError('1 argument is required');\n      }\n\n      do {\n        if (this === node) {\n          return true;\n        }\n      } while ((node = node && node.parentNode));\n\n      return false;\n    };\n  }\n}\n\ntype ResolveTree = {\n  value: addedNodeMutation;\n  children: ResolveTree[];\n  parent: ResolveTree | null;\n};\n\nexport function queueToResolveTrees(queue: addedNodeMutation[]): ResolveTree[] {\n  const queueNodeMap: Record<number, ResolveTree> = {};\n  const putIntoMap = (\n    m: addedNodeMutation,\n    parent: ResolveTree | null,\n  ): ResolveTree => {\n    const nodeInTree: ResolveTree = {\n      value: m,\n      parent,\n      children: [],\n    };\n    queueNodeMap[m.node.id] = nodeInTree;\n    return nodeInTree;\n  };\n\n  const queueNodeTrees: ResolveTree[] = [];\n  for (const mutation of queue) {\n    const { nextId, parentId } = mutation;\n    if (nextId && nextId in queueNodeMap) {\n      const nextInTree = queueNodeMap[nextId];\n      if (nextInTree.parent) {\n        const idx = nextInTree.parent.children.indexOf(nextInTree);\n        nextInTree.parent.children.splice(\n          idx,\n          0,\n          putIntoMap(mutation, nextInTree.parent),\n        );\n      } else {\n        const idx = queueNodeTrees.indexOf(nextInTree);\n        queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n      }\n      continue;\n    }\n    if (parentId in queueNodeMap) {\n      const parentInTree = queueNodeMap[parentId];\n      parentInTree.children.push(putIntoMap(mutation, parentInTree));\n      continue;\n    }\n    queueNodeTrees.push(putIntoMap(mutation, null));\n  }\n\n  return queueNodeTrees;\n}\n\nexport function iterateResolveTree(\n  tree: ResolveTree,\n  cb: (mutation: addedNodeMutation) => unknown,\n) {\n  cb(tree.value);\n  /**\n   * The resolve tree was designed to reflect the DOM layout,\n   * but we need append next sibling first, so we do a reverse\n   * loop here.\n   */\n  for (let i = tree.children.length - 1; i >= 0; i--) {\n    iterateResolveTree(tree.children[i], cb);\n  }\n}\n\nexport type AppendedIframe = {\n  mutationInQueue: addedNodeMutation;\n  builtNode: HTMLIFrameElement | RRIFrameElement;\n};\n\nexport function isSerializedIframe<TNode extends Node | RRNode>(\n  n: TNode,\n  mirror: IMirror<TNode>,\n): boolean {\n  return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\n\nexport function isSerializedStylesheet<TNode extends Node | RRNode>(\n  n: TNode,\n  mirror: IMirror<TNode>,\n): boolean {\n  return Boolean(\n    n.nodeName === 'LINK' &&\n      n.nodeType === n.ELEMENT_NODE &&\n      (n as HTMLElement).getAttribute &&\n      (n as HTMLElement).getAttribute('rel') === 'stylesheet' &&\n      mirror.getMeta(n),\n  );\n}\n\nexport function getBaseDimension(\n  node: Node,\n  rootIframe: Node,\n): DocumentDimension {\n  const frameElement = node.ownerDocument?.defaultView?.frameElement;\n  if (!frameElement || frameElement === rootIframe) {\n    return {\n      x: 0,\n      y: 0,\n      relativeScale: 1,\n      absoluteScale: 1,\n    };\n  }\n\n  const frameDimension = frameElement.getBoundingClientRect();\n  const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n  // the iframe element may have a scale transform\n  const relativeScale = frameDimension.height / frameElement.clientHeight;\n  return {\n    x:\n      frameDimension.x * frameBaseDimension.relativeScale +\n      frameBaseDimension.x,\n    y:\n      frameDimension.y * frameBaseDimension.relativeScale +\n      frameBaseDimension.y,\n    relativeScale,\n    absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n  };\n}\n\nexport function hasShadowRoot<T extends Node | RRNode>(\n  n: T,\n): n is T & { shadowRoot: ShadowRoot } {\n  return Boolean((n as unknown as Element)?.shadowRoot);\n}\n\nexport function getNestedRule(\n  rules: CSSRuleList,\n  position: number[],\n): CSSGroupingRule {\n  const rule = rules[position[0]] as CSSGroupingRule;\n  if (position.length === 1) {\n    return rule;\n  } else {\n    return getNestedRule(\n      (rule.cssRules[position[1]] as CSSGroupingRule).cssRules,\n      position.slice(2),\n    );\n  }\n}\n\nexport function getPositionsAndIndex(nestedIndex: number[]) {\n  const positions = [...nestedIndex];\n  const index = positions.pop();\n  return { positions, index };\n}\n\n/**\n * Returns the latest mutation in the queue for each node.\n * @param mutations - mutations The text mutations to filter.\n * @returns The filtered text mutations.\n */\nexport function uniqueTextMutations(mutations: textMutation[]): textMutation[] {\n  const idSet = new Set<number>();\n  const uniqueMutations: textMutation[] = [];\n\n  for (let i = mutations.length; i--; ) {\n    const mutation = mutations[i];\n    if (!idSet.has(mutation.id)) {\n      uniqueMutations.push(mutation);\n      idSet.add(mutation.id);\n    }\n  }\n\n  return uniqueMutations;\n}\n\nexport class StyleSheetMirror {\n  private id = 1;\n  private styleIDMap = new WeakMap<CSSStyleSheet, number>();\n  private idStyleMap = new Map<number, CSSStyleSheet>();\n\n  getId(stylesheet: CSSStyleSheet): number {\n    return this.styleIDMap.get(stylesheet) ?? -1;\n  }\n\n  has(stylesheet: CSSStyleSheet): boolean {\n    return this.styleIDMap.has(stylesheet);\n  }\n\n  /**\n   * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n   */\n  add(stylesheet: CSSStyleSheet, id?: number): number {\n    if (this.has(stylesheet)) return this.getId(stylesheet);\n    let newId: number;\n    if (id === undefined) {\n      newId = this.id++;\n    } else newId = id;\n    this.styleIDMap.set(stylesheet, newId);\n    this.idStyleMap.set(newId, stylesheet);\n    return newId;\n  }\n\n  getStyle(id: number): CSSStyleSheet | null {\n    return this.idStyleMap.get(id) || null;\n  }\n\n  reset(): void {\n    this.styleIDMap = new WeakMap();\n    this.idStyleMap = new Map();\n    this.id = 1;\n  }\n\n  generateId(): number {\n    return this.id++;\n  }\n}\n\n/**\n * Get the direct shadow host of a node in shadow dom. Returns null if it is not in a shadow dom.\n */\nexport function getShadowHost(n: Node): Element | null {\n  let shadowHost: Element | null = null;\n  if (\n    n.getRootNode?.()?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n    (n.getRootNode() as ShadowRoot).host\n  )\n    shadowHost = (n.getRootNode() as ShadowRoot).host;\n  return shadowHost;\n}\n\n/**\n * Get the root shadow host of a node in nested shadow doms. Returns the node itself if it is not in a shadow dom.\n */\nexport function getRootShadowHost(n: Node): Node {\n  let rootShadowHost: Node = n;\n\n  let shadowHost: Element | null;\n  // If n is in a nested shadow dom.\n  while ((shadowHost = getShadowHost(rootShadowHost)))\n    rootShadowHost = shadowHost;\n\n  return rootShadowHost;\n}\n\nexport function shadowHostInDom(n: Node): boolean {\n  const doc = n.ownerDocument;\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n);\n  return doc.contains(shadowHost);\n}\n\nexport function inDom(n: Node): boolean {\n  const doc = n.ownerDocument;\n  if (!doc) return false;\n  return doc.contains(n) || shadowHostInDom(n);\n}\n\n/**\n * We generally want to use window.requestAnimationFrame / window.setTimeout / window.clearTimeout.\n * However, in some cases this may be wrapped (e.g. by Zone.js for Angular),\n * so we try to get an unpatched version of this from a sandboxed iframe.\n */\n\ninterface CacheableImplementations {\n  requestAnimationFrame: typeof requestAnimationFrame;\n  setTimeout: typeof setTimeout;\n  clearTimeout: typeof clearTimeout;\n}\n\nconst cachedImplementations: Partial<CacheableImplementations> = {};\n\nfunction getImplementation<T extends keyof CacheableImplementations>(\n  name: T,\n): CacheableImplementations[T] {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n\n  const document = window.document;\n  let impl = window[name] as CacheableImplementations[T];\n  if (document && typeof document.createElement === 'function') {\n    try {\n      const sandbox = document.createElement('iframe');\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow[name]) {\n        impl =\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          contentWindow[name] as CacheableImplementations[T];\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      // Could not create sandbox iframe, just use window.xxx\n    }\n  }\n\n  return (cachedImplementations[name] = impl.bind(\n    window,\n  ) as CacheableImplementations[T]);\n}\n\nexport function onRequestAnimationFrame(\n  ...rest: Parameters<typeof requestAnimationFrame>\n): ReturnType<typeof requestAnimationFrame> {\n  return getImplementation('requestAnimationFrame')(...rest);\n}\n\nexport function setTimeout(\n  ...rest: Parameters<typeof window.setTimeout>\n): ReturnType<typeof window.setTimeout> {\n  return getImplementation('setTimeout')(...rest);\n}\n\nexport function clearTimeout(\n  ...rest: Parameters<typeof window.clearTimeout>\n): ReturnType<typeof window.clearTimeout> {\n  return getImplementation('clearTimeout')(...rest);\n}\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  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\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 PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\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 MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\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 || {});\nexport {\n  CanvasContext,\n  EventType,\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n  ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n", "import type { ErrorHandler } from '../types';\n\ntype Callback = (...args: unknown[]) => unknown;\n\nlet errorHandler: ErrorHandler | undefined;\n\nexport function registerErrorHandler(handler: ErrorHandler | undefined) {\n  errorHandler = handler;\n}\n\nexport function unregisterErrorHandler() {\n  errorHandler = undefined;\n}\n\n/**\n * Wrap callbacks in a wrapper that allows to pass errors to a configured `errorHandler` method.\n */\nexport const callbackWrapper = <T extends Callback>(cb: T): T => {\n  if (!errorHandler) {\n    return cb;\n  }\n\n  const rrwebWrapped = ((...rest: unknown[]) => {\n    try {\n      return cb(...rest);\n    } catch (error) {\n      if (errorHandler && errorHandler(error) === true) {\n        return () => {\n          // This will get called by `record()`'s cleanup function\n        };\n      }\n\n      throw error;\n    }\n  }) as unknown as T;\n\n  return rrwebWrapped;\n};\n", "/*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 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//# sourceMappingURL=base64-arraybuffer.es5.js.map\n", "import { encode } from 'base64-arraybuffer';\nimport type { IWindow, CanvasArg } from '@sentry-internal/rrweb-types';\n\n// TODO: unify with `replay/webgl.ts`\ntype CanvasVarMap = Map<string, unknown[]>;\nconst canvasVarMap: Map<RenderingContext, CanvasVarMap> = new Map();\nexport function variableListFor(ctx: RenderingContext, ctor: string) {\n  let contextMap = canvasVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = new Map();\n    canvasVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor) as unknown[];\n}\n\nexport const saveWebGLVar = (\n  value: unknown,\n  win: IWindow,\n  ctx: RenderingContext,\n): number | void => {\n  if (\n    !value ||\n    !(isInstanceOfWebGLObject(value, win) || typeof value === 'object')\n  )\n    return;\n\n  const name = value.constructor.name;\n  const list = variableListFor(ctx, name);\n  let index = list.indexOf(value);\n\n  if (index === -1) {\n    index = list.length;\n    list.push(value);\n  }\n  return index;\n};\n\n// from webgl-recorder: https://github.com/evanw/webgl-recorder/blob/bef0e65596e981ee382126587e2dcbe0fc7748e2/webgl-recorder.js#L50-L77\nexport function serializeArg(\n  value: unknown,\n  win: IWindow,\n  ctx: RenderingContext,\n): CanvasArg {\n  if (value instanceof Array) {\n    return value.map((arg) => serializeArg(arg, win, ctx));\n  } else if (value === null) {\n    return value;\n  } else if (\n    value instanceof Float32Array ||\n    value instanceof Float64Array ||\n    value instanceof Int32Array ||\n    value instanceof Uint32Array ||\n    value instanceof Uint8Array ||\n    value instanceof Uint16Array ||\n    value instanceof Int16Array ||\n    value instanceof Int8Array ||\n    value instanceof Uint8ClampedArray\n  ) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [Object.values(value)],\n    };\n  } else if (\n    // SharedArrayBuffer disabled on most browsers due to spectre.\n    // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n    // value instanceof SharedArrayBuffer ||\n    value instanceof ArrayBuffer\n  ) {\n    const name = value.constructor.name as 'ArrayBuffer';\n    const base64 = encode(value);\n\n    return {\n      rr_type: name,\n      base64,\n    };\n  } else if (value instanceof DataView) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [\n        serializeArg(value.buffer, win, ctx),\n        value.byteOffset,\n        value.byteLength,\n      ],\n    };\n  } else if (value instanceof HTMLImageElement) {\n    const name = value.constructor.name;\n    const { src } = value;\n    return {\n      rr_type: name,\n      src,\n    };\n  } else if (value instanceof HTMLCanvasElement) {\n    const name = 'HTMLImageElement';\n    // TODO: move `toDataURL` to web worker if possible\n    const src = value.toDataURL(); // heavy on large canvas\n    return {\n      rr_type: name,\n      src,\n    };\n  } else if (value instanceof ImageData) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [serializeArg(value.data, win, ctx), value.width, value.height],\n    };\n    // } else if (value instanceof Blob) {\n    //   const name = value.constructor.name;\n    //   return {\n    //     rr_type: name,\n    //     data: [serializeArg(await value.arrayBuffer(), win, ctx)],\n    //     type: value.type,\n    //   };\n  } else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n    const name = value.constructor.name;\n    const index = saveWebGLVar(value, win, ctx) as number;\n\n    return {\n      rr_type: name,\n      index: index,\n    };\n  }\n\n  return value as unknown as CanvasArg;\n}\n\nexport const serializeArgs = (\n  args: Array<unknown>,\n  win: IWindow,\n  ctx: RenderingContext,\n) => {\n  return args.map((arg) => serializeArg(arg, win, ctx));\n};\n\nexport const isInstanceOfWebGLObject = (\n  value: unknown,\n  win: IWindow,\n): value is\n  | WebGLActiveInfo\n  | WebGLBuffer\n  | WebGLFramebuffer\n  | WebGLProgram\n  | WebGLRenderbuffer\n  | WebGLShader\n  | WebGLShaderPrecisionFormat\n  | WebGLTexture\n  | WebGLUniformLocation\n  | WebGLVertexArrayObject => {\n  const webGLConstructorNames: string[] = [\n    'WebGLActiveInfo',\n    'WebGLBuffer',\n    'WebGLFramebuffer',\n    'WebGLProgram',\n    'WebGLRenderbuffer',\n    'WebGLShader',\n    'WebGLShaderPrecisionFormat',\n    'WebGLTexture',\n    'WebGLUniformLocation',\n    'WebGLVertexArrayObject',\n    // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n    'WebGLVertexArrayObjectOES',\n  ];\n  const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n    (name: string) => typeof win[name as keyof Window] === 'function',\n  );\n  return Boolean(\n    supportedWebGLConstructorNames.find(\n      (name: string) => value instanceof win[name as keyof Window],\n    ),\n  );\n};\n", "import {\n  blockClass,\n  CanvasContext,\n  canvasManagerMutationCallback,\n  IWindow,\n  listenerHandler,\n} from '@sentry-internal/rrweb-types';\nimport { hookSetter, isBlocked, patch, setTimeout } from '../../../utils';\nimport { serializeArgs } from './serialize-args';\n\nexport default function initCanvas2DMutationObserver(\n  cb: canvasManagerMutationCallback,\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n  const props2D = Object.getOwnPropertyNames(\n    win.CanvasRenderingContext2D.prototype,\n  );\n  for (const prop of props2D) {\n    try {\n      if (\n        typeof win.CanvasRenderingContext2D.prototype[\n          prop as keyof CanvasRenderingContext2D\n        ] !== 'function'\n      ) {\n        continue;\n      }\n      const restoreHandler = patch(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        function (\n          original: (\n            this: CanvasRenderingContext2D,\n            ...args: unknown[]\n          ) => void,\n        ) {\n          return function (\n            this: CanvasRenderingContext2D,\n            ...args: Array<unknown>\n          ) {\n            if (\n              !isBlocked(\n                this.canvas,\n                blockClass,\n                blockSelector,\n                unblockSelector,\n                true,\n              )\n            ) {\n              // Using setTimeout as toDataURL can be heavy\n              // and we'd rather not block the main thread\n              setTimeout(() => {\n                const recordArgs = serializeArgs(args, win, this);\n                cb(this.canvas, {\n                  type: CanvasContext['2D'],\n                  property: prop,\n                  args: recordArgs,\n                });\n              }, 0);\n            }\n            return original.apply(this, args);\n          };\n        },\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter<CanvasRenderingContext2D>(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        {\n          set(v) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n            cb(this.canvas, {\n              type: CanvasContext['2D'],\n              property: prop,\n              args: [v],\n              setter: true,\n            });\n          },\n        },\n      );\n      handlers.push(hookHandler);\n    }\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type { ICanvas } from '@sentry-internal/rrweb-snapshot';\nimport type {\n  blockClass,\n  IWindow,\n  listenerHandler,\n} from '@sentry-internal/rrweb-types';\nimport { isBlocked, patch } from '../../../utils';\n\nfunction getNormalizedContextName(contextType: string) {\n  return contextType === 'experimental-webgl' ? 'webgl' : contextType;\n}\n\nexport default function initCanvasContextObserver(\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  setPreserveDrawingBufferToTrue: boolean,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n  try {\n    const restoreHandler = patch(\n      win.HTMLCanvasElement.prototype,\n      'getContext',\n      function (\n        original: (\n          this: ICanvas | HTMLCanvasElement,\n          contextType: string,\n          ...args: Array<unknown>\n        ) => void,\n      ) {\n        return function (\n          this: ICanvas | HTMLCanvasElement,\n          contextType: string,\n          ...args: Array<unknown>\n        ) {\n          if (\n            !isBlocked(this, blockClass, blockSelector, unblockSelector, true)\n          ) {\n            const ctxName = getNormalizedContextName(contextType);\n            if (!('__context' in this)) (this as ICanvas).__context = ctxName;\n\n            if (\n              setPreserveDrawingBufferToTrue &&\n              ['webgl', 'webgl2'].includes(ctxName)\n            ) {\n              if (args[0] && typeof args[0] === 'object') {\n                const contextAttributes = args[0] as WebGLContextAttributes;\n                if (!contextAttributes.preserveDrawingBuffer) {\n                  contextAttributes.preserveDrawingBuffer = true;\n                }\n              } else {\n                args.splice(0, 1, {\n                  preserveDrawingBuffer: true,\n                });\n              }\n            }\n          }\n          return original.apply(this, [contextType, ...args]);\n        };\n      },\n    );\n    handlers.push(restoreHandler);\n  } catch {\n    console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type { Mirror } from '@sentry-internal/rrweb-snapshot';\nimport {\n  blockClass,\n  CanvasContext,\n  canvasManagerMutationCallback,\n  canvasMutationWithType,\n  IWindow,\n  listenerHandler,\n} from '@sentry-internal/rrweb-types';\nimport { hookSetter, isBlocked, patch } from '../../../utils';\nimport { saveWebGLVar, serializeArgs } from './serialize-args';\n\nfunction patchGLPrototype(\n  prototype: WebGLRenderingContext | WebGL2RenderingContext,\n  type: CanvasContext,\n  cb: canvasManagerMutationCallback,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  _mirror: Mirror,\n  win: IWindow,\n): listenerHandler[] {\n  const handlers: listenerHandler[] = [];\n\n  const props = Object.getOwnPropertyNames(prototype);\n\n  for (const prop of props) {\n    if (\n      //prop.startsWith('get') ||  // e.g. getProgramParameter, but too risky\n      [\n        'isContextLost',\n        'canvas',\n        'drawingBufferWidth',\n        'drawingBufferHeight',\n      ].includes(prop)\n    ) {\n      // skip read only propery/functions\n      continue;\n    }\n    try {\n      if (typeof prototype[prop as keyof typeof prototype] !== 'function') {\n        continue;\n      }\n      const restoreHandler = patch(\n        prototype,\n        prop,\n        function (\n          original: (this: typeof prototype, ...args: Array<unknown>) => void,\n        ) {\n          return function (this: typeof prototype, ...args: Array<unknown>) {\n            const result = original.apply(this, args);\n            saveWebGLVar(result, win, this);\n            if (\n              'tagName' in this.canvas &&\n              !isBlocked(\n                this.canvas,\n                blockClass,\n                blockSelector,\n                unblockSelector,\n                true,\n              )\n            ) {\n              const recordArgs = serializeArgs(args, win, this);\n              const mutation: canvasMutationWithType = {\n                type,\n                property: prop,\n                args: recordArgs,\n              };\n              // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n              cb(this.canvas, mutation);\n            }\n\n            return result;\n          };\n        },\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter<typeof prototype>(prototype, prop, {\n        set(v) {\n          // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          cb(this.canvas as HTMLCanvasElement, {\n            type,\n            property: prop,\n            args: [v],\n            setter: true,\n          });\n        },\n      });\n      handlers.push(hookHandler);\n    }\n  }\n\n  return handlers;\n}\n\nexport default function initCanvasWebGLMutationObserver(\n  cb: canvasManagerMutationCallback,\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  mirror: Mirror,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n\n  handlers.push(\n    ...patchGLPrototype(\n      win.WebGLRenderingContext.prototype,\n      CanvasContext.WebGL,\n      cb,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      mirror,\n      win,\n    ),\n  );\n\n  if (typeof win.WebGL2RenderingContext !== 'undefined') {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGL2RenderingContext.prototype,\n        CanvasContext.WebGL2,\n        cb,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        mirror,\n        win,\n      ),\n    );\n  }\n\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "export default `for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",t=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s=\"\";for(a=0;a<r;a+=3)s+=e[n[a]>>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+\"=\":r%3==1&&(s=s.substring(0,s.length-2)+\"==\"),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!(\"OffscreenCanvas\"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+\"-\"+t;if(\"OffscreenCanvas\"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext(\"2d\");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return\"\"}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext(\"bitmaprenderer\"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:\"low\"});w?.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;\n", "import r from\"./image-bitmap-data-url-worker\";function t(){const t=new Blob([r]);return URL.createObjectURL(t)}export{t as getImageBitmapDataUrlWorkerURL};\n", "import type {\n  ICanvas,\n  Mirror,\n  DataURLOptions,\n} from '@sentry-internal/rrweb-snapshot';\nimport type {\n  blockClass,\n  canvasManagerMutationCallback,\n  canvasMutationCallback,\n  canvasMutationCommand,\n  canvasMutationWithType,\n  IWindow,\n  listenerHandler,\n  CanvasArg,\n  ImageBitmapDataURLWorkerResponse,\n} from '@sentry-internal/rrweb-types';\nimport { isBlocked, onRequestAnimationFrame } from '../../../utils';\nimport { CanvasContext } from '@sentry-internal/rrweb-types';\nimport initCanvas2DMutationObserver from './2d';\nimport initCanvasContextObserver from './canvas';\nimport initCanvasWebGLMutationObserver from './webgl';\nimport { getImageBitmapDataUrlWorkerURL } from '@sentry-internal/rrweb-worker';\nimport { callbackWrapper, registerErrorHandler } from '../../error-handler';\nimport type { ErrorHandler } from '../../../types';\n\nexport type RafStamps = { latestId: number; invokeId: number | null };\n\ntype pendingCanvasMutationsMap = Map<\n  HTMLCanvasElement,\n  canvasMutationWithType[]\n>;\ntype MaxCanvasSize = [number, number];\ntype SnapshotOptions = {\n  skipRequestAnimationFrame?: boolean;\n};\n\nexport interface CanvasManagerInterface {\n  reset(): void;\n  freeze(): void;\n  unfreeze(): void;\n  lock(): void;\n  unlock(): void;\n  snapshot(canvasElement?: HTMLCanvasElement, options?: SnapshotOptions): void;\n  addWindow(win: IWindow): void;\n  addShadowRoot(shadowRoot: ShadowRoot): void;\n  resetShadowRoots(): void;\n}\n\nexport interface CanvasManagerConstructorOptions {\n  recordCanvas: boolean;\n  enableManualSnapshot?: boolean;\n  mutationCb: canvasMutationCallback;\n  win: IWindow;\n  blockClass: blockClass;\n  blockSelector: string | null;\n  unblockSelector: string | null;\n  maxCanvasSize?: MaxCanvasSize | null;\n  mirror: Mirror;\n  dataURLOptions: DataURLOptions;\n  errorHandler?: ErrorHandler;\n  sampling?: 'all' | number;\n}\n\nexport class CanvasManagerNoop implements CanvasManagerInterface {\n  public reset() {\n    // noop\n  }\n  public freeze() {\n    // noop\n  }\n  public unfreeze() {\n    // noop\n  }\n  public lock() {\n    // noop\n  }\n  public unlock() {\n    // noop\n  }\n  public snapshot() {\n    // noop\n  }\n  public addWindow() {\n    // noop\n  }\n\n  public addShadowRoot() {\n    // noop\n  }\n\n  public resetShadowRoots() {\n    // noop\n  }\n}\n\nexport class CanvasManager implements CanvasManagerInterface {\n  private pendingCanvasMutations: pendingCanvasMutationsMap = new Map();\n  private rafStamps: RafStamps = { latestId: 0, invokeId: null };\n  private options: CanvasManagerConstructorOptions;\n  private mirror: Mirror;\n\n  private shadowDoms = new Set<WeakRef<ShadowRoot>>();\n  private windowsSet = new WeakSet<IWindow>();\n  private windows: WeakRef<IWindow>[] = [];\n\n  private mutationCb: canvasMutationCallback;\n  private restoreHandlers: listenerHandler[] = [];\n  private frozen = false;\n  private locked = false;\n\n  private snapshotInProgressMap: Map<number, boolean> = new Map();\n  private worker: Worker | null = null;\n\n  private lastSnapshotTime = 0;\n\n  public reset() {\n    this.pendingCanvasMutations.clear();\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e) {\n        //\n      }\n    });\n    this.restoreHandlers = [];\n    this.windowsSet = new WeakSet();\n    this.windows = [];\n    this.shadowDoms = new Set();\n    this.worker?.terminate();\n    this.worker = null;\n    this.snapshotInProgressMap = new Map();\n  }\n\n  public freeze() {\n    this.frozen = true;\n  }\n\n  public unfreeze() {\n    this.frozen = false;\n  }\n\n  public lock() {\n    this.locked = true;\n  }\n\n  public unlock() {\n    this.locked = false;\n  }\n\n  constructor(options: CanvasManagerConstructorOptions) {\n    const {\n      enableManualSnapshot,\n      sampling = 'all',\n      win,\n      recordCanvas,\n      errorHandler,\n    } = options;\n    options.sampling = sampling;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n    this.options = options;\n\n    if (errorHandler) {\n      registerErrorHandler(errorHandler);\n    }\n    if (\n      (recordCanvas && typeof sampling === 'number') ||\n      enableManualSnapshot\n    ) {\n      this.worker = this.initFPSWorker();\n    }\n    this.addWindow(win);\n\n    if (enableManualSnapshot) {\n      return;\n    }\n\n    callbackWrapper(() => {\n      if (recordCanvas && sampling === 'all') {\n        this.startRAFTimestamping();\n        this.startPendingCanvasMutationFlusher();\n      }\n      if (recordCanvas && typeof sampling === 'number') {\n        this.initCanvasFPSObserver();\n      }\n    })();\n  }\n\n  public addWindow(win: IWindow) {\n    const {\n      sampling = 'all',\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      recordCanvas,\n      enableManualSnapshot,\n    } = this.options;\n    if (this.windowsSet.has(win)) return;\n\n    if (enableManualSnapshot) {\n      this.windowsSet.add(win);\n      this.windows.push(new WeakRef(win));\n      return;\n    }\n\n    callbackWrapper(() => {\n      if (recordCanvas && sampling === 'all') {\n        this.initCanvasMutationObserver(\n          win,\n          blockClass,\n          blockSelector,\n          unblockSelector,\n        );\n      }\n      if (recordCanvas && typeof sampling === 'number') {\n        const canvasContextReset = initCanvasContextObserver(\n          win,\n          blockClass,\n          blockSelector,\n          unblockSelector,\n          true,\n        );\n        this.restoreHandlers.push(() => {\n          canvasContextReset();\n        });\n      }\n    })();\n    this.windowsSet.add(win);\n    this.windows.push(new WeakRef(win));\n  }\n\n  public addShadowRoot(shadowRoot: ShadowRoot) {\n    this.shadowDoms.add(new WeakRef(shadowRoot));\n  }\n\n  public resetShadowRoots() {\n    this.shadowDoms = new Set();\n  }\n\n  public snapshot(\n    canvasElement?: HTMLCanvasElement,\n    options?: SnapshotOptions,\n  ): void {\n    if (options?.skipRequestAnimationFrame) {\n      this.takeSnapshot(performance.now(), true, canvasElement);\n      return;\n    }\n    onRequestAnimationFrame((timestamp) =>\n      this.takeSnapshot(timestamp, true, canvasElement),\n    );\n  }\n\n  private initFPSWorker(): Worker {\n    const worker = new Worker(getImageBitmapDataUrlWorkerURL());\n    worker.onmessage = (e) => {\n      const data = e.data as ImageBitmapDataURLWorkerResponse;\n      const { id } = data;\n      this.snapshotInProgressMap.set(id, false);\n\n      if (!('base64' in data)) return;\n\n      const { base64, type, width, height } = data;\n      this.mutationCb({\n        id,\n        type: CanvasContext['2D'],\n        commands: [\n          {\n            property: 'clearRect', // wipe canvas\n            args: [0, 0, width, height],\n          },\n          {\n            property: 'drawImage', // draws (semi-transparent) image\n            args: [\n              {\n                rr_type: 'ImageBitmap',\n                args: [\n                  {\n                    rr_type: 'Blob',\n                    data: [{ rr_type: 'ArrayBuffer', base64 }],\n                    type,\n                  },\n                ],\n              } as CanvasArg,\n              0,\n              0,\n              // The below args are needed if we enforce a max size, we want to\n              // retain the original size when drawing the image (which should be smaller)\n              width,\n              height,\n            ],\n          },\n        ],\n      });\n    };\n    return worker;\n  }\n\n  private processMutation: canvasManagerMutationCallback = (\n    target,\n    mutation,\n  ) => {\n    const newFrame =\n      this.rafStamps.invokeId &&\n      this.rafStamps.latestId !== this.rafStamps.invokeId;\n    if (newFrame || !this.rafStamps.invokeId)\n      this.rafStamps.invokeId = this.rafStamps.latestId;\n\n    if (!this.pendingCanvasMutations.has(target)) {\n      this.pendingCanvasMutations.set(target, []);\n    }\n\n    this.pendingCanvasMutations.get(target)!.push(mutation);\n  };\n\n  private initCanvasFPSObserver() {\n    let rafId: number;\n\n    if (!this.windows.length && !this.shadowDoms.size) {\n      // If these are empty, then we won't be able to find any canvases to snapshot, so nothing to do here.\n      return;\n    }\n\n    const rafCallback = (timestamp: DOMHighResTimeStamp) => {\n      this.takeSnapshot(timestamp, false);\n      rafId = onRequestAnimationFrame(rafCallback);\n    };\n\n    rafId = onRequestAnimationFrame(rafCallback);\n\n    this.restoreHandlers.push(() => {\n      if (rafId) {\n        cancelAnimationFrame(rafId);\n      }\n    });\n  }\n\n  private initCanvasMutationObserver(\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n    unblockSelector: string | null,\n  ): void {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      false,\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n    );\n\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      this.mirror,\n    );\n\n    this.restoreHandlers.push(() => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    });\n  }\n\n  /**\n   * Returns all `canvas` elements that are not blocked by the given selectors. Searches all windows and shadow roots.\n   */\n  private getCanvasElements(\n    blockClass: blockClass,\n    blockSelector: string | null,\n    unblockSelector: string | null,\n  ): HTMLCanvasElement[] {\n    const matchedCanvas: HTMLCanvasElement[] = [];\n\n    const searchCanvas = (root: Document | ShadowRoot) => {\n      root.querySelectorAll('canvas').forEach((canvas) => {\n        if (\n          !isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)\n        ) {\n          matchedCanvas.push(canvas);\n        }\n      });\n    };\n\n    for (const item of this.windows) {\n      const window = item.deref();\n      let _document: Document | false | undefined;\n\n      try {\n        _document = window && window.document;\n      } catch {\n        // Accessing `window.document` can throw a security error:\n        // \"Failed to read a named property 'document' from 'Window': An\n        // attempt was made to break through the security policy of the user\n        // agent.\"\n      }\n\n      if (_document) {\n        // This is not included in the `try` block above in case `searchCanvas()` throws\n        searchCanvas(_document);\n      }\n    }\n\n    // Search in shadow roots\n    for (const item of this.shadowDoms) {\n      const shadowRoot = item.deref();\n      if (shadowRoot) {\n        searchCanvas(shadowRoot);\n      }\n    }\n\n    return matchedCanvas;\n  }\n\n  /**\n   * Takes a snapshot of the provided canvas element, or will search all windows/shadow roots for canvases. Will self-throttle based on `options.sampling`.\n   *\n   * @returns `true` if the snapshot was taken, `false` if it was throttled.\n   */\n  private takeSnapshot(\n    timestamp: DOMHighResTimeStamp,\n    isManualSnapshot: boolean,\n    canvasElement?: HTMLCanvasElement,\n  ) {\n    const {\n      sampling,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      dataURLOptions,\n      maxCanvasSize,\n    } = this.options;\n    const fps = sampling === 'all' ? 2 : sampling || 2;\n    const timeBetweenSnapshots = 1000 / fps;\n    const shouldThrottle =\n      this.lastSnapshotTime &&\n      timestamp - this.lastSnapshotTime < timeBetweenSnapshots;\n\n    if (shouldThrottle) {\n      return false;\n    }\n\n    this.lastSnapshotTime = timestamp;\n    const canvases = canvasElement\n      ? [canvasElement]\n      : this.getCanvasElements(blockClass, blockSelector, unblockSelector);\n\n    // Process all canvases concurrently\n    canvases.forEach((canvas) => {\n      const id = this.mirror.getId(canvas);\n\n      // Check if canvas is valid and not already being processed\n      if (\n        !this.mirror.hasNode(canvas) ||\n        !canvas.width ||\n        !canvas.height ||\n        this.snapshotInProgressMap.get(id)\n      ) {\n        return;\n      }\n\n      this.snapshotInProgressMap.set(id, true);\n\n      // Handle WebGL context preservation\n      if (\n        !isManualSnapshot &&\n        ['webgl', 'webgl2'].includes((canvas as ICanvas).__context)\n      ) {\n        const context = canvas.getContext((canvas as ICanvas).__context) as\n          | WebGLRenderingContext\n          | WebGL2RenderingContext\n          | null;\n\n        if (context?.getContextAttributes()?.preserveDrawingBuffer === false) {\n          // Hack to load canvas back into memory so `createImageBitmap` can grab it's contents.\n          // Context: https://twitter.com/Juice10/status/1499775271758704643\n          // Preferably we set `preserveDrawingBuffer` to true, but that's not always possible,\n          // especially when canvas is loaded before rrweb.\n          // This hack can wipe the background color of the canvas in the (unlikely) event that\n          // the canvas background was changed but clear was not called directly afterwards.\n          // Example of this hack having negative side effect: https://visgl.github.io/react-map-gl/examples/layers\n          context.clear(context.COLOR_BUFFER_BIT);\n        }\n      }\n\n      createImageBitmap(canvas)\n        .then((bitmap) => {\n          this.worker?.postMessage(\n            {\n              id,\n              bitmap,\n              width: canvas.width,\n              height: canvas.height,\n              dataURLOptions,\n              maxCanvasSize,\n            },\n            [bitmap],\n          );\n        })\n        .catch((error) => {\n          callbackWrapper(() => {\n            this.snapshotInProgressMap.delete(id);\n            throw error;\n          })();\n        });\n    });\n\n    return true;\n  }\n\n  private startPendingCanvasMutationFlusher() {\n    onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  private startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp: DOMHighResTimeStamp) => {\n      this.rafStamps.latestId = timestamp;\n      onRequestAnimationFrame(setLatestRAFTimestamp);\n    };\n    onRequestAnimationFrame(setLatestRAFTimestamp);\n  }\n\n  flushPendingCanvasMutations() {\n    this.pendingCanvasMutations.forEach(\n      (_values: canvasMutationCommand[], canvas: HTMLCanvasElement) => {\n        const id = this.mirror.getId(canvas);\n        this.flushPendingCanvasMutationFor(canvas, id);\n      },\n    );\n    onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number) {\n    if (this.frozen || this.locked) {\n      return;\n    }\n\n    const valuesWithType = this.pendingCanvasMutations.get(canvas);\n    if (!valuesWithType || id === -1) return;\n\n    const values = valuesWithType.map((value) => {\n      const { type, ...rest } = value;\n      return rest;\n    });\n    const { type } = valuesWithType[0];\n\n    this.mutationCb({ id, type, commands: values });\n\n    this.pendingCanvasMutations.delete(canvas);\n  }\n}\n", "\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst canvasManager = require(\"./canvas-manager-900X62Xw.cjs\");\nexports.CanvasManager = canvasManager.CanvasManager;\n//# sourceMappingURL=canvas-manager.cjs.map\n"],
  "mappings": "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",
  "names": ["i", "cachedImplementations", "getImplementation", "document", "setTimeout", "clearTimeout", "chars", "_Position", "nowTimestamp", "blockClass", "_mirror", "t", "errorHandler", "getImageBitmapDataUrlWorkerURL", "window", "type"]
}
