{"version":3,"file":"rrweb.cjs","sources":["../../rrweb-snapshot/dist/rrweb-snapshot.js","../../types/dist/types.js","../src/utils.ts","../src/record/error-handler.ts","../src/record/cross-origin-iframe-mirror.ts","../src/record/iframe-manager.ts","../src/record/text-diff.ts","../src/record/mutation.ts","../src/record/observer.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","../src/record/observers/canvas/canvas-manager.ts","../src/record/processed-node-manager.ts","../src/record/shadow-dom-manager.ts","../src/record/stylesheet-manager.ts","../src/record/index.ts","../../rrdom/dist/rrdom.js","../../../node_modules/mitt/dist/mitt.mjs","../src/replay/canvas/deserialize-args.ts","../src/replay/canvas/2d.ts","../src/replay/canvas/webgl.ts","../src/replay/canvas/index.ts","../../../node_modules/@xstate/fsm/es/index.js","../src/replay/timer.ts","../src/replay/machine.ts","../src/replay/media/index.ts","../src/replay/smoothscroll.ts","../src/replay/styles/inject-style.ts","../src/replay/index.ts","../src/index.ts"],"sourcesContent":["var Cr = Object.defineProperty;\nvar Sr = (s, e, t) => e in s ? Cr(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;\nvar Ne = (s, e, t) => Sr(s, typeof e != \"symbol\" ? e + \"\" : e, t);\nvar w = /* @__PURE__ */ ((s) => (s[s.Document = 0] = \"Document\", s[s.DocumentType = 1] = \"DocumentType\", s[s.Element = 2] = \"Element\", s[s.Text = 3] = \"Text\", s[s.CDATA = 4] = \"CDATA\", s[s.Comment = 5] = \"Comment\", s))(w || {});\nfunction Qe(s) {\n  return s.nodeType === s.ELEMENT_NODE;\n}\nfunction xr(s) {\n  const e = s == null ? void 0 : s.host;\n  return (e == null ? void 0 : e.shadowRoot) === s;\n}\nfunction Ae(s) {\n  return Object.prototype.toString.call(s) === \"[object ShadowRoot]\";\n}\nfunction vr(s) {\n  return s.includes(\" background-clip: text;\") && !s.includes(\" -webkit-background-clip: text;\") && (s = s.replace(\n    /\\sbackground-clip:\\s*text;/g,\n    \" -webkit-background-clip: text; background-clip: text;\"\n  )), s;\n}\nfunction Er(s) {\n  const { cssText: e } = s;\n  if (e.split('\"').length < 3) return e;\n  const t = [\"@import\", `url(${JSON.stringify(s.href)})`];\n  return s.layerName === \"\" ? t.push(\"layer\") : s.layerName && t.push(`layer(${s.layerName})`), s.supportsText && t.push(`supports(${s.supportsText})`), s.media.length && t.push(s.media.mediaText), t.join(\" \") + \";\";\n}\nfunction Rr(s, e) {\n  const t = [];\n  for (let r = 0; r < s.length; r++) {\n    const i = s.item(r);\n    s.getPropertyValue(i) === \"\" && new RegExp(It(i) + \":\\\\s*;\").test(e) && t.push(i);\n  }\n  return t;\n}\nfunction It(s) {\n  return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction Or(s, e, t, r) {\n  const i = Rr(s.style, e);\n  if (i.length === 0) return e;\n  let n = null;\n  try {\n    n = t.querySelector(s.selectorText);\n  } catch {\n  }\n  if (!n)\n    return r && r.push({\n      selector: s.selectorText,\n      properties: i\n    }), e;\n  const l = getComputedStyle(n);\n  let a = e;\n  for (const o of i) {\n    const f = l.getPropertyValue(o);\n    if (f) {\n      const u = new RegExp(\n        `(${It(o)}):\\\\s*;`\n      );\n      a = a.replace(u, `$1: ${f};`);\n    }\n  }\n  return a;\n}\nfunction de(s, e, t) {\n  var r;\n  try {\n    const i = s.rules || s.cssRules;\n    if (!i) return null;\n    const n = e || ((r = s.ownerNode) == null ? void 0 : r.ownerDocument) || null, l = Array.from(i, (a) => {\n      let o = kr(a);\n      return n && _t(a) && (o = Or(\n        a,\n        o,\n        n,\n        t\n      )), o;\n    }).join(\"\");\n    return vr(l);\n  } catch {\n    return null;\n  }\n}\nfunction kr(s) {\n  let e;\n  if (Ar(s))\n    try {\n      e = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      de(s.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      Er(s);\n    } catch {\n    }\n  else if (_t(s) && s.selectorText.includes(\":\"))\n    return Nr(s.cssText);\n  return e || s.cssText;\n}\nfunction Nr(s) {\n  const e = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return s.replace(e, \"$1\\\\$2\");\n}\nfunction Ar(s) {\n  return \"styleSheet\" in s;\n}\nfunction _t(s) {\n  return \"selectorText\" in s;\n}\nclass Ke {\n  constructor() {\n    Ne(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    Ne(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(e) {\n    var r;\n    return e ? ((r = this.getMeta(e)) == null ? void 0 : r.id) ?? -1 : -1;\n  }\n  getNode(e) {\n    return this.idNodeMap.get(e) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(e) {\n    return this.nodeMetaMap.get(e) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(e) {\n    const t = this.getId(e);\n    this.idNodeMap.delete(t), e.childNodes && e.childNodes.forEach(\n      (r) => this.removeNodeFromMap(r)\n    );\n  }\n  has(e) {\n    return this.idNodeMap.has(e);\n  }\n  hasNode(e) {\n    return this.nodeMetaMap.has(e);\n  }\n  add(e, t) {\n    const r = t.id;\n    this.idNodeMap.set(r, e), this.nodeMetaMap.set(e, t);\n  }\n  replace(e, t) {\n    const r = this.getNode(e);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(t, i);\n    }\n    this.idNodeMap.set(e, t);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction tn() {\n  return new Ke();\n}\nfunction Mr({\n  element: s,\n  maskInputOptions: e,\n  tagName: t,\n  type: r,\n  value: i,\n  maskInputFn: n\n}) {\n  const l = i || \"\", a = r && Ce(r);\n  if (e[t.toLowerCase()] || a && e[a]) {\n    const f = n ? n(l, s) : \"*\".repeat(l.length);\n    return { value: f, masked: l !== f };\n  }\n  return { value: l, masked: !1 };\n}\nfunction Ce(s) {\n  return s.toLowerCase();\n}\nconst at = \"__rrweb_original__\";\nfunction Pr(s) {\n  const e = s.getContext(\"2d\");\n  if (!e) return !0;\n  const t = 50;\n  for (let r = 0; r < s.width; r += t)\n    for (let i = 0; i < s.height; i += t) {\n      const n = e.getImageData, l = at in n ? n[at] : n;\n      if (new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        l.call(\n          e,\n          r,\n          i,\n          Math.min(t, s.width - r),\n          Math.min(t, s.height - i)\n        ).data.buffer\n      ).some((o) => o !== 0)) return !1;\n    }\n  return !0;\n}\nfunction Ir(s, e) {\n  return !s || !e || s.type !== e.type ? !1 : s.type === w.Document ? s.compatMode === e.compatMode : s.type === w.DocumentType ? s.name === e.name && s.publicId === e.publicId && s.systemId === e.systemId : s.type === w.Comment || s.type === w.Text || s.type === w.CDATA ? s.textContent === e.textContent : s.type === w.Element ? s.tagName === e.tagName && JSON.stringify(s.attributes) === JSON.stringify(e.attributes) && s.isSVG === e.isSVG && s.needBlock === e.needBlock : !1;\n}\nfunction _r(s) {\n  const e = s.type;\n  return s.hasAttribute(\"data-rr-is-password\") ? \"password\" : e ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    Ce(e)\n  ) : null;\n}\nfunction $t(s, e) {\n  let t;\n  try {\n    t = new URL(s, e ?? window.location.href);\n  } catch {\n    return null;\n  }\n  const r = /\\.([0-9a-z]+)(?:$)/i, i = t.pathname.match(r);\n  return (i == null ? void 0 : i[1]) ?? null;\n}\nlet Lt = 1;\nconst $r = new RegExp(\"[^a-z0-9-_:]\"), ut = -2;\nfunction Lr() {\n  return Lt++;\n}\nfunction Tr(s) {\n  if (s instanceof HTMLFormElement)\n    return \"form\";\n  const e = Ce(s.tagName);\n  return $r.test(e) ? \"div\" : e;\n}\nfunction Dr(s) {\n  let e = \"\";\n  return s.indexOf(\"//\") > -1 ? e = s.split(\"/\").slice(0, 3).join(\"/\") : e = s.split(\"/\")[0], e = e.split(\"?\")[0], e;\n}\nlet z, ft;\nconst Ur = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm, Br = /^(?:[a-z+]+:)?\\/\\//i, Fr = /^www\\..*/i, zr = /^(data:)([^,]*),(.*)/i;\nfunction me(s, e) {\n  return (s || \"\").replace(\n    Ur,\n    (t, r, i, n, l, a) => {\n      const o = i || l || a, f = r || n || \"\";\n      if (!o)\n        return t;\n      if (Br.test(o) || Fr.test(o))\n        return `url(${f}${o}${f})`;\n      if (zr.test(o))\n        return `url(${f}${o}${f})`;\n      if (o[0] === \"/\")\n        return `url(${f}${Dr(e) + o}${f})`;\n      const u = e.split(\"/\"), h = o.split(\"/\");\n      u.pop();\n      for (const d of h)\n        d !== \".\" && (d === \"..\" ? u.pop() : u.push(d));\n      return `url(${f}${u.join(\"/\")}${f})`;\n    }\n  );\n}\nconst Wr = /^[^ \\t\\n\\r\\u000c]+/, jr = /^[, \\t\\n\\r\\u000c]+/;\nfunction Gr(s, e) {\n  if (e.trim() === \"\")\n    return e;\n  let t = 0;\n  function r(n) {\n    let l;\n    const a = n.exec(e.substring(t));\n    return a ? (l = a[0], t += l.length, l) : \"\";\n  }\n  const i = [];\n  for (; r(jr), !(t >= e.length); ) {\n    let n = r(Wr);\n    if (n.slice(-1) === \",\")\n      n = W(s, n.substring(0, n.length - 1)), i.push(n);\n    else {\n      let l = \"\";\n      n = W(s, n);\n      let a = !1;\n      for (; ; ) {\n        const o = e.charAt(t);\n        if (o === \"\") {\n          i.push((n + l).trim());\n          break;\n        } else if (a)\n          o === \")\" && (a = !1);\n        else if (o === \",\") {\n          t += 1, i.push((n + l).trim());\n          break;\n        } else o === \"(\" && (a = !0);\n        l += o, t += 1;\n      }\n    }\n  }\n  return i.join(\", \");\n}\nconst ct = /* @__PURE__ */ new WeakMap();\nfunction W(s, e) {\n  return !e || e.trim() === \"\" ? e : Se(s, e);\n}\nfunction Vr(s) {\n  return !!(s.tagName === \"svg\" || s.ownerSVGElement);\n}\nfunction Se(s, e) {\n  let t = ct.get(s);\n  if (t || (t = s.createElement(\"a\"), ct.set(s, t)), !e)\n    e = \"\";\n  else if (e.startsWith(\"blob:\") || e.startsWith(\"data:\"))\n    return e;\n  return t.setAttribute(\"href\", e), t.href;\n}\nfunction Hr(s, e, t, r) {\n  return r && (t === \"src\" || t === \"href\" && !(e === \"use\" && r[0] === \"#\") || t === \"xlink:href\" && r[0] !== \"#\" || t === \"background\" && (e === \"table\" || e === \"td\" || e === \"th\") ? W(s, r) : t === \"srcset\" ? Gr(s, r) : t === \"style\" ? me(r, Se(s)) : e === \"object\" && t === \"data\" ? W(s, r) : r);\n}\nfunction Jr(s, e, t) {\n  return (s === \"video\" || s === \"audio\") && e === \"autoplay\";\n}\nfunction Yr(s, e, t) {\n  try {\n    if (typeof e == \"string\") {\n      if (s.classList.contains(e))\n        return !0;\n    } else\n      for (let r = s.classList.length; r--; ) {\n        const i = s.classList[r];\n        if (e.test(i))\n          return !0;\n      }\n    if (t)\n      return s.matches(t);\n  } catch {\n  }\n  return !1;\n}\nfunction $e(s, e, t) {\n  if (!s) return !1;\n  if (s.nodeType !== s.ELEMENT_NODE)\n    return t ? $e(s.parentNode, e, t) : !1;\n  for (let r = s.classList.length; r--; ) {\n    const i = s.classList[r];\n    if (e.test(i))\n      return !0;\n  }\n  return t ? $e(s.parentNode, e, t) : !1;\n}\nfunction qr(s, e, t, r) {\n  let i;\n  if (Qe(s)) {\n    if (i = s, !i.childNodes.length)\n      return !1;\n  } else {\n    if (s.parentElement === null)\n      return !1;\n    i = s.parentElement;\n  }\n  try {\n    if (typeof e == \"string\") {\n      if (r) {\n        if (i.closest(`.${e}`)) return !0;\n      } else if (i.classList.contains(e)) return !0;\n    } else if ($e(i, e, r)) return !0;\n    if (t) {\n      if (r) {\n        if (i.closest(t)) return !0;\n      } else if (i.matches(t)) return !0;\n    }\n  } catch {\n  }\n  return !1;\n}\nfunction Qr(s, e, t) {\n  const r = s.contentWindow;\n  if (!r)\n    return;\n  let i = !1, n;\n  try {\n    n = r.document.readyState;\n  } catch {\n    return;\n  }\n  if (n !== \"complete\") {\n    const a = setTimeout(() => {\n      i || (e(), i = !0);\n    }, t);\n    s.addEventListener(\"load\", () => {\n      clearTimeout(a), i = !0, e();\n    });\n    return;\n  }\n  const l = \"about:blank\";\n  if (r.location.href !== l || s.src === l || s.src === \"\")\n    return setTimeout(e, 0), s.addEventListener(\"load\", e);\n  s.addEventListener(\"load\", e);\n}\nfunction Kr(s, e, t) {\n  let r = !1, i;\n  try {\n    i = s.sheet;\n  } catch {\n    return;\n  }\n  if (i) return;\n  const n = setTimeout(() => {\n    r || (e(), r = !0);\n  }, t);\n  s.addEventListener(\"load\", () => {\n    clearTimeout(n), r = !0, e();\n  });\n}\nfunction Xr(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    needsMask: l,\n    inlineStylesheet: a,\n    maskInputOptions: o = {},\n    maskTextFn: f,\n    maskInputFn: u,\n    dataURLOptions: h = {},\n    inlineImages: d,\n    recordCanvas: g,\n    keepIframeSrcFn: E,\n    newlyAddedElement: R = !1,\n    corruptedRules: c\n  } = e, m = Zr(t, r);\n  switch (s.nodeType) {\n    case s.DOCUMENT_NODE:\n      return s.compatMode !== \"CSS1Compat\" ? {\n        type: w.Document,\n        childNodes: [],\n        compatMode: s.compatMode\n        // probably \"BackCompat\"\n      } : {\n        type: w.Document,\n        childNodes: []\n      };\n    case s.DOCUMENT_TYPE_NODE:\n      return {\n        type: w.DocumentType,\n        name: s.name,\n        publicId: s.publicId,\n        systemId: s.systemId,\n        rootId: m\n      };\n    case s.ELEMENT_NODE:\n      return ts(s, {\n        doc: t,\n        blockClass: i,\n        blockSelector: n,\n        inlineStylesheet: a,\n        maskInputOptions: o,\n        maskInputFn: u,\n        dataURLOptions: h,\n        inlineImages: d,\n        recordCanvas: g,\n        keepIframeSrcFn: E,\n        newlyAddedElement: R,\n        rootId: m,\n        corruptedRules: c\n      });\n    case s.TEXT_NODE:\n      return es(s, {\n        doc: t,\n        needsMask: l,\n        maskTextFn: f,\n        rootId: m,\n        corruptedRules: c\n      });\n    case s.CDATA_SECTION_NODE:\n      return {\n        type: w.CDATA,\n        textContent: \"\",\n        rootId: m\n      };\n    case s.COMMENT_NODE:\n      return {\n        type: w.Comment,\n        textContent: s.textContent || \"\",\n        rootId: m\n      };\n    default:\n      return !1;\n  }\n}\nfunction Zr(s, e) {\n  if (!e.hasNode(s)) return;\n  const t = e.getId(s);\n  return t === 1 ? void 0 : t;\n}\nfunction es(s, e) {\n  var f;\n  const { needsMask: t, maskTextFn: r, rootId: i } = e, n = s.parentNode && s.parentNode.tagName;\n  let l = s.textContent;\n  const a = n === \"STYLE\" ? !0 : void 0, o = n === \"SCRIPT\" ? !0 : void 0;\n  if (a && l) {\n    try {\n      s.nextSibling || s.previousSibling || (f = s.parentNode.sheet) != null && f.cssRules && (l = de(\n        s.parentNode.sheet,\n        e.doc,\n        e.corruptedRules\n      ) || \"\");\n    } catch (u) {\n      console.warn(\n        `Cannot get CSS styles from text's parentNode. Error: ${u}`,\n        s\n      );\n    }\n    l = me(l, Se(e.doc));\n  }\n  return o && (l = \"SCRIPT_PLACEHOLDER\"), !a && !o && l && t && (l = r ? r(l, s.parentElement) : l.replace(/[\\S]/g, \"*\")), {\n    type: w.Text,\n    textContent: l || \"\",\n    isStyle: a,\n    rootId: i\n  };\n}\nfunction ts(s, e) {\n  const {\n    doc: t,\n    blockClass: r,\n    blockSelector: i,\n    inlineStylesheet: n,\n    maskInputOptions: l = {},\n    maskInputFn: a,\n    dataURLOptions: o = {},\n    inlineImages: f,\n    recordCanvas: u,\n    keepIframeSrcFn: h,\n    newlyAddedElement: d = !1,\n    rootId: g,\n    corruptedRules: E\n  } = e, R = Yr(s, r, i), c = Tr(s);\n  let m = {};\n  const k = s.attributes.length;\n  for (let p = 0; p < k; p++) {\n    const b = s.attributes[p];\n    Jr(c, b.name, b.value) || (m[b.name] = Hr(\n      t,\n      c,\n      Ce(b.name),\n      b.value\n    ));\n  }\n  if (c === \"link\" && n) {\n    const p = Array.from(t.styleSheets).find((O) => O.href === s.href);\n    let b = null;\n    p && (b = de(p, t, E)), b && (delete m.rel, delete m.href, m._cssText = me(b, p.href));\n  }\n  if (c === \"style\" && s.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n  !(s.innerText || s.textContent || \"\").trim().length) {\n    const p = de(\n      s.sheet,\n      t,\n      E\n    );\n    p && (m._cssText = me(p, Se(t)));\n  }\n  if (E && E.length > 0 && !R) {\n    const p = typeof m.style == \"string\" ? m.style : \"\";\n    let b = \"\";\n    for (const { selector: O, properties: I } of E)\n      try {\n        if (s.matches(O)) {\n          const A = getComputedStyle(s);\n          for (const N of I)\n            if (!s.style.getPropertyValue(N)) {\n              const _ = A.getPropertyValue(N);\n              _ && (b += `${N}: ${_}; `);\n            }\n        }\n      } catch {\n      }\n    b && (m.style = p ? `${p}; ${b.trim()}` : b.trim());\n  }\n  if (c === \"input\" || c === \"textarea\" || c === \"select\") {\n    const p = s.value, b = s.checked;\n    if (m.type !== \"radio\" && m.type !== \"checkbox\" && m.type !== \"submit\" && m.type !== \"button\" && p) {\n      const O = Mr({\n        element: s,\n        type: _r(s),\n        tagName: c,\n        value: p,\n        maskInputOptions: l,\n        maskInputFn: a\n      });\n      m.value = O.value, O.masked && (m.masked = !0);\n    } else b && (m.checked = b);\n  }\n  if (c === \"option\" && (s.selected && !l.select ? m.selected = !0 : delete m.selected), c === \"canvas\" && u) {\n    if (s.__context === \"2d\")\n      Pr(s) || (m.rr_dataURL = s.toDataURL(\n        o.type,\n        o.quality\n      ));\n    else if (!(\"__context\" in s)) {\n      const p = s.toDataURL(\n        o.type,\n        o.quality\n      ), b = t.createElement(\"canvas\");\n      b.width = s.width, b.height = s.height;\n      const O = b.toDataURL(\n        o.type,\n        o.quality\n      );\n      p !== O && (m.rr_dataURL = p);\n    }\n  }\n  if (c === \"img\" && f) {\n    z || (z = t.createElement(\"canvas\"), ft = z.getContext(\"2d\"));\n    const p = s, b = p.currentSrc || p.getAttribute(\"src\") || \"<unknown-src>\", O = p.crossOrigin, I = () => {\n      p.removeEventListener(\"load\", I);\n      try {\n        z.width = p.naturalWidth, z.height = p.naturalHeight, ft.drawImage(p, 0, 0), m.rr_dataURL = z.toDataURL(\n          o.type,\n          o.quality\n        );\n      } catch (A) {\n        if (p.crossOrigin !== \"anonymous\") {\n          p.crossOrigin = \"anonymous\", p.complete && p.naturalWidth !== 0 ? I() : p.addEventListener(\"load\", I);\n          return;\n        } else\n          console.warn(\n            `Cannot inline img src=${b}! Error: ${A}`\n          );\n      }\n      p.crossOrigin === \"anonymous\" && (O ? m.crossOrigin = O : p.removeAttribute(\"crossorigin\"));\n    };\n    p.complete && p.naturalWidth !== 0 ? I() : p.addEventListener(\"load\", I);\n  }\n  if (c === \"audio\" || c === \"video\") {\n    const p = m;\n    p.rr_mediaState = s.paused ? \"paused\" : \"played\", p.rr_mediaCurrentTime = s.currentTime, p.rr_mediaPlaybackRate = s.playbackRate, p.rr_mediaMuted = s.muted, p.rr_mediaLoop = s.loop, p.rr_mediaVolume = s.volume;\n  }\n  if (d || (s.scrollLeft && (m.rr_scrollLeft = s.scrollLeft), s.scrollTop && (m.rr_scrollTop = s.scrollTop)), R) {\n    const { width: p, height: b } = s.getBoundingClientRect();\n    m = {\n      class: m.class,\n      rr_width: `${p}px`,\n      rr_height: `${b}px`\n    };\n  }\n  c === \"iframe\" && !h(m.src) && (s.contentDocument || (m.rr_src = m.src), delete m.src);\n  let M;\n  try {\n    customElements.get(c) && (M = !0);\n  } catch {\n  }\n  return {\n    type: w.Element,\n    tagName: c,\n    attributes: m,\n    childNodes: [],\n    isSVG: Vr(s) || void 0,\n    needBlock: R,\n    rootId: g,\n    isCustom: M\n  };\n}\nfunction S(s) {\n  return s == null ? \"\" : s.toLowerCase();\n}\nfunction rs(s, e) {\n  if (e.comment && s.type === w.Comment)\n    return !0;\n  if (s.type === w.Element) {\n    if (e.script && // script tag\n    (s.tagName === \"script\" || // (module)preload link\n    s.tagName === \"link\" && (s.attributes.rel === \"preload\" || s.attributes.rel === \"modulepreload\") && s.attributes.as === \"script\" || // prefetch link\n    s.tagName === \"link\" && s.attributes.rel === \"prefetch\" && typeof s.attributes.href == \"string\" && $t(s.attributes.href) === \"js\"))\n      return !0;\n    if (e.headFavicon && (s.tagName === \"link\" && s.attributes.rel === \"shortcut icon\" || s.tagName === \"meta\" && (S(s.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || S(s.attributes.name) === \"application-name\" || S(s.attributes.rel) === \"icon\" || S(s.attributes.rel) === \"apple-touch-icon\" || S(s.attributes.rel) === \"shortcut icon\")))\n      return !0;\n    if (s.tagName === \"meta\") {\n      if (e.headMetaDescKeywords && S(s.attributes.name).match(/^description|keywords$/))\n        return !0;\n      if (e.headMetaSocial && (S(s.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      S(s.attributes.name).match(/^(og|twitter):/) || S(s.attributes.name) === \"pinterest\"))\n        return !0;\n      if (e.headMetaRobots && (S(s.attributes.name) === \"robots\" || S(s.attributes.name) === \"googlebot\" || S(s.attributes.name) === \"bingbot\"))\n        return !0;\n      if (e.headMetaHttpEquiv && s.attributes[\"http-equiv\"] !== void 0)\n        return !0;\n      if (e.headMetaAuthorship && (S(s.attributes.name) === \"author\" || S(s.attributes.name) === \"generator\" || S(s.attributes.name) === \"framework\" || S(s.attributes.name) === \"publisher\" || S(s.attributes.name) === \"progid\" || S(s.attributes.property).match(/^article:/) || S(s.attributes.property).match(/^product:/)))\n        return !0;\n      if (e.headMetaVerification && (S(s.attributes.name) === \"google-site-verification\" || S(s.attributes.name) === \"yandex-verification\" || S(s.attributes.name) === \"csrf-token\" || S(s.attributes.name) === \"p:domain_verify\" || S(s.attributes.name) === \"verify-v1\" || S(s.attributes.name) === \"verification\" || S(s.attributes.name) === \"shopify-checkout-api-token\"))\n        return !0;\n    }\n  }\n  return !1;\n}\nfunction K(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    maskTextClass: l,\n    maskTextSelector: a,\n    skipChild: o = !1,\n    inlineStylesheet: f = !0,\n    maskInputOptions: u = {},\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOMOptions: g,\n    dataURLOptions: E = {},\n    inlineImages: R = !1,\n    recordCanvas: c = !1,\n    onSerialize: m,\n    onIframeLoad: k,\n    iframeLoadTimeout: M = 5e3,\n    onStylesheetLoad: p,\n    stylesheetLoadTimeout: b = 5e3,\n    keepIframeSrcFn: O = () => !1,\n    newlyAddedElement: I = !1,\n    corruptedRules: A\n  } = e;\n  let { needsMask: N } = e, { preserveWhiteSpace: _ = !0 } = e;\n  N || (N = qr(\n    s,\n    l,\n    a,\n    N === void 0\n  ));\n  const U = Xr(s, {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    needsMask: N,\n    inlineStylesheet: f,\n    maskInputOptions: u,\n    maskTextFn: h,\n    maskInputFn: d,\n    dataURLOptions: E,\n    inlineImages: R,\n    recordCanvas: c,\n    keepIframeSrcFn: O,\n    newlyAddedElement: I,\n    corruptedRules: A\n  });\n  if (!U)\n    return console.warn(s, \"not serialized\"), null;\n  let H;\n  r.hasNode(s) ? H = r.getId(s) : rs(U, g) || !_ && U.type === w.Text && !U.isStyle && !U.textContent.replace(/^\\s+|\\s+$/gm, \"\").length ? H = ut : H = Lr();\n  const x = Object.assign(U, { id: H });\n  if (r.add(s, x), H === ut)\n    return null;\n  m && m(s);\n  let ke = !o;\n  if (x.type === w.Element) {\n    ke = ke && !x.needBlock, delete x.needBlock;\n    const P = s.shadowRoot;\n    P && Ae(P) && (x.isShadowHost = !0);\n  }\n  if ((x.type === w.Document || x.type === w.Element) && ke) {\n    g.headWhitespace && x.type === w.Element && x.tagName === \"head\" && (_ = !1);\n    const P = {\n      doc: t,\n      mirror: r,\n      blockClass: i,\n      blockSelector: n,\n      needsMask: N,\n      maskTextClass: l,\n      maskTextSelector: a,\n      skipChild: o,\n      inlineStylesheet: f,\n      maskInputOptions: u,\n      maskTextFn: h,\n      maskInputFn: d,\n      slimDOMOptions: g,\n      dataURLOptions: E,\n      inlineImages: R,\n      recordCanvas: c,\n      preserveWhiteSpace: _,\n      onSerialize: m,\n      onIframeLoad: k,\n      iframeLoadTimeout: M,\n      onStylesheetLoad: p,\n      stylesheetLoadTimeout: b,\n      keepIframeSrcFn: O,\n      corruptedRules: A\n    };\n    if (!(x.type === w.Element && x.tagName === \"textarea\" && x.attributes.value !== void 0)) for (const B of Array.from(s.childNodes)) {\n      const F = K(B, P);\n      F && x.childNodes.push(F);\n    }\n    if (Qe(s) && s.shadowRoot)\n      for (const B of Array.from(s.shadowRoot.childNodes)) {\n        const F = K(B, P);\n        F && (Ae(s.shadowRoot) && (F.isShadow = !0), x.childNodes.push(F));\n      }\n  }\n  return s.parentNode && xr(s.parentNode) && Ae(s.parentNode) && (x.isShadow = !0), x.type === w.Element && x.tagName === \"iframe\" && Qr(\n    s,\n    () => {\n      const P = s.contentDocument;\n      if (P && k) {\n        const B = K(P, {\n          doc: P,\n          mirror: r,\n          blockClass: i,\n          blockSelector: n,\n          needsMask: N,\n          maskTextClass: l,\n          maskTextSelector: a,\n          skipChild: !1,\n          inlineStylesheet: f,\n          maskInputOptions: u,\n          maskTextFn: h,\n          maskInputFn: d,\n          slimDOMOptions: g,\n          dataURLOptions: E,\n          inlineImages: R,\n          recordCanvas: c,\n          preserveWhiteSpace: _,\n          onSerialize: m,\n          onIframeLoad: k,\n          iframeLoadTimeout: M,\n          onStylesheetLoad: p,\n          stylesheetLoadTimeout: b,\n          keepIframeSrcFn: O\n        });\n        B && k(\n          s,\n          B\n        );\n      }\n    },\n    M\n  ), x.type === w.Element && x.tagName === \"link\" && typeof x.attributes.rel == \"string\" && (x.attributes.rel === \"stylesheet\" || x.attributes.rel === \"preload\" && typeof x.attributes.href == \"string\" && $t(x.attributes.href) === \"css\") && Kr(\n    s,\n    () => {\n      if (p) {\n        const P = K(s, {\n          doc: t,\n          mirror: r,\n          blockClass: i,\n          blockSelector: n,\n          needsMask: N,\n          maskTextClass: l,\n          maskTextSelector: a,\n          skipChild: !1,\n          inlineStylesheet: f,\n          maskInputOptions: u,\n          maskTextFn: h,\n          maskInputFn: d,\n          slimDOMOptions: g,\n          dataURLOptions: E,\n          inlineImages: R,\n          recordCanvas: c,\n          preserveWhiteSpace: _,\n          onSerialize: m,\n          onIframeLoad: k,\n          iframeLoadTimeout: M,\n          onStylesheetLoad: p,\n          stylesheetLoadTimeout: b,\n          keepIframeSrcFn: O\n        });\n        P && p(\n          s,\n          P\n        );\n      }\n    },\n    b\n  ), x;\n}\nfunction rn(s, e) {\n  const {\n    mirror: t = new Ke(),\n    blockClass: r = \"rr-block\",\n    blockSelector: i = null,\n    maskTextClass: n = \"rr-mask\",\n    maskTextSelector: l = null,\n    inlineStylesheet: a = !0,\n    inlineImages: o = !1,\n    recordCanvas: f = !1,\n    maskAllInputs: u = !1,\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOM: g = !1,\n    dataURLOptions: E,\n    preserveWhiteSpace: R,\n    onSerialize: c,\n    onIframeLoad: m,\n    iframeLoadTimeout: k,\n    onStylesheetLoad: M,\n    stylesheetLoadTimeout: p,\n    keepIframeSrcFn: b = () => !1,\n    corruptedRules: O\n  } = e || {};\n  return K(s, {\n    doc: s,\n    mirror: t,\n    blockClass: r,\n    blockSelector: i,\n    maskTextClass: n,\n    maskTextSelector: l,\n    skipChild: !1,\n    inlineStylesheet: a,\n    maskInputOptions: u === !0 ? {\n      color: !0,\n      date: !0,\n      \"datetime-local\": !0,\n      email: !0,\n      month: !0,\n      number: !0,\n      range: !0,\n      search: !0,\n      tel: !0,\n      text: !0,\n      time: !0,\n      url: !0,\n      week: !0,\n      textarea: !0,\n      select: !0,\n      password: !0\n    } : u === !1 ? {\n      password: !0\n    } : u,\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOMOptions: g === !0 || g === \"all\" ? (\n      // if true: set of sensible options that should not throw away any information\n      {\n        script: !0,\n        comment: !0,\n        headFavicon: !0,\n        headWhitespace: !0,\n        headMetaDescKeywords: g === \"all\",\n        // destructive\n        headMetaSocial: !0,\n        headMetaRobots: !0,\n        headMetaHttpEquiv: !0,\n        headMetaAuthorship: !0,\n        headMetaVerification: !0\n      }\n    ) : g === !1 ? {} : g,\n    dataURLOptions: E,\n    inlineImages: o,\n    recordCanvas: f,\n    preserveWhiteSpace: R,\n    onSerialize: c,\n    onIframeLoad: m,\n    iframeLoadTimeout: k,\n    onStylesheetLoad: M,\n    stylesheetLoadTimeout: p,\n    keepIframeSrcFn: b,\n    newlyAddedElement: !1,\n    corruptedRules: O\n  });\n}\nfunction sn(s, e) {\n  function t(r) {\n    e(r), (r.type === w.Document || r.type === w.Element) && r.childNodes.forEach(t);\n  }\n  t(s);\n}\nfunction nn() {\n  Lt = 1;\n}\nfunction ss(s) {\n  return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nfunction is(s) {\n  if (s.__esModule) return s;\n  var e = s.default;\n  if (typeof e == \"function\") {\n    var t = function r() {\n      return this instanceof r ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments);\n    };\n    t.prototype = e.prototype;\n  } else t = {};\n  return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(s).forEach(function(r) {\n    var i = Object.getOwnPropertyDescriptor(s, r);\n    Object.defineProperty(t, r, i.get ? i : {\n      enumerable: !0,\n      get: function() {\n        return s[r];\n      }\n    });\n  }), t;\n}\nvar Xe = { exports: {} }, y = String, Tt = function() {\n  return { isColorSupported: !1, reset: y, bold: y, dim: y, italic: y, underline: y, inverse: y, hidden: y, strikethrough: y, black: y, red: y, green: y, yellow: y, blue: y, magenta: y, cyan: y, white: y, gray: y, bgBlack: y, bgRed: y, bgGreen: y, bgYellow: y, bgBlue: y, bgMagenta: y, bgCyan: y, bgWhite: y, blackBright: y, redBright: y, greenBright: y, yellowBright: y, blueBright: y, magentaBright: y, cyanBright: y, whiteBright: y, bgBlackBright: y, bgRedBright: y, bgGreenBright: y, bgYellowBright: y, bgBlueBright: y, bgMagentaBright: y, bgCyanBright: y, bgWhiteBright: y };\n};\nXe.exports = Tt();\nXe.exports.createColors = Tt;\nvar ns = Xe.exports;\nconst os = {}, ls = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: os\n}, Symbol.toStringTag, { value: \"Module\" })), $ = /* @__PURE__ */ is(ls);\nlet ht = ns, pt = $, Le = class Dt extends Error {\n  constructor(e, t, r, i, n, l) {\n    super(e), this.name = \"CssSyntaxError\", this.reason = e, n && (this.file = n), i && (this.source = i), l && (this.plugin = l), typeof t < \"u\" && typeof r < \"u\" && (typeof t == \"number\" ? (this.line = t, this.column = r) : (this.line = t.line, this.column = t.column, this.endLine = r.line, this.endColumn = r.column)), this.setMessage(), Error.captureStackTrace && Error.captureStackTrace(this, Dt);\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\", this.message += this.file ? this.file : \"<css input>\", typeof this.line < \"u\" && (this.message += \":\" + this.line + \":\" + this.column), this.message += \": \" + this.reason;\n  }\n  showSourceCode(e) {\n    if (!this.source) return \"\";\n    let t = this.source;\n    e == null && (e = ht.isColorSupported);\n    let r = (u) => u, i = (u) => u, n = (u) => u;\n    if (e) {\n      let { bold: u, gray: h, red: d } = ht.createColors(!0);\n      i = (g) => u(d(g)), r = (g) => h(g), pt && (n = (g) => pt(g));\n    }\n    let l = t.split(/\\r?\\n/), a = Math.max(this.line - 3, 0), o = Math.min(this.line + 2, l.length), f = String(o).length;\n    return l.slice(a, o).map((u, h) => {\n      let d = a + 1 + h, g = \" \" + (\" \" + d).slice(-f) + \" | \";\n      if (d === this.line) {\n        if (u.length > 160) {\n          let R = 20, c = Math.max(0, this.column - R), m = Math.max(\n            this.column + R,\n            this.endColumn + R\n          ), k = u.slice(c, m), M = r(g.replace(/\\d/g, \" \")) + u.slice(0, Math.min(this.column - 1, R - 1)).replace(/[^\\t]/g, \" \");\n          return i(\">\") + r(g) + n(k) + `\n ` + M + i(\"^\");\n        }\n        let E = r(g.replace(/\\d/g, \" \")) + u.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return i(\">\") + r(g) + n(u) + `\n ` + E + i(\"^\");\n      }\n      return \" \" + r(g) + n(u);\n    }).join(`\n`);\n  }\n  toString() {\n    let e = this.showSourceCode();\n    return e && (e = `\n\n` + e + `\n`), this.name + \": \" + this.message + e;\n  }\n};\nvar Ze = Le;\nLe.default = Le;\nconst dt = {\n  after: `\n`,\n  beforeClose: `\n`,\n  beforeComment: `\n`,\n  beforeDecl: `\n`,\n  beforeOpen: \" \",\n  beforeRule: `\n`,\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: !1\n};\nfunction as(s) {\n  return s[0].toUpperCase() + s.slice(1);\n}\nlet Te = class {\n  constructor(e) {\n    this.builder = e;\n  }\n  atrule(e, t) {\n    let r = \"@\" + e.name, i = e.params ? this.rawValue(e, \"params\") : \"\";\n    if (typeof e.raws.afterName < \"u\" ? r += e.raws.afterName : i && (r += \" \"), e.nodes)\n      this.block(e, r + i);\n    else {\n      let n = (e.raws.between || \"\") + (t ? \";\" : \"\");\n      this.builder(r + i + n, e);\n    }\n  }\n  beforeAfter(e, t) {\n    let r;\n    e.type === \"decl\" ? r = this.raw(e, null, \"beforeDecl\") : e.type === \"comment\" ? r = this.raw(e, null, \"beforeComment\") : t === \"before\" ? r = this.raw(e, null, \"beforeRule\") : r = this.raw(e, null, \"beforeClose\");\n    let i = e.parent, n = 0;\n    for (; i && i.type !== \"root\"; )\n      n += 1, i = i.parent;\n    if (r.includes(`\n`)) {\n      let l = this.raw(e, null, \"indent\");\n      if (l.length)\n        for (let a = 0; a < n; a++) r += l;\n    }\n    return r;\n  }\n  block(e, t) {\n    let r = this.raw(e, \"between\", \"beforeOpen\");\n    this.builder(t + r + \"{\", e, \"start\");\n    let i;\n    e.nodes && e.nodes.length ? (this.body(e), i = this.raw(e, \"after\")) : i = this.raw(e, \"after\", \"emptyBody\"), i && this.builder(i), this.builder(\"}\", e, \"end\");\n  }\n  body(e) {\n    let t = e.nodes.length - 1;\n    for (; t > 0 && e.nodes[t].type === \"comment\"; )\n      t -= 1;\n    let r = this.raw(e, \"semicolon\");\n    for (let i = 0; i < e.nodes.length; i++) {\n      let n = e.nodes[i], l = this.raw(n, \"before\");\n      l && this.builder(l), this.stringify(n, t !== i || r);\n    }\n  }\n  comment(e) {\n    let t = this.raw(e, \"left\", \"commentLeft\"), r = this.raw(e, \"right\", \"commentRight\");\n    this.builder(\"/*\" + t + e.text + r + \"*/\", e);\n  }\n  decl(e, t) {\n    let r = this.raw(e, \"between\", \"colon\"), i = e.prop + r + this.rawValue(e, \"value\");\n    e.important && (i += e.raws.important || \" !important\"), t && (i += \";\"), this.builder(i, e);\n  }\n  document(e) {\n    this.body(e);\n  }\n  raw(e, t, r) {\n    let i;\n    if (r || (r = t), t && (i = e.raws[t], typeof i < \"u\"))\n      return i;\n    let n = e.parent;\n    if (r === \"before\" && (!n || n.type === \"root\" && n.first === e || n && n.type === \"document\"))\n      return \"\";\n    if (!n) return dt[r];\n    let l = e.root();\n    if (l.rawCache || (l.rawCache = {}), typeof l.rawCache[r] < \"u\")\n      return l.rawCache[r];\n    if (r === \"before\" || r === \"after\")\n      return this.beforeAfter(e, r);\n    {\n      let a = \"raw\" + as(r);\n      this[a] ? i = this[a](l, e) : l.walk((o) => {\n        if (i = o.raws[t], typeof i < \"u\") return !1;\n      });\n    }\n    return typeof i > \"u\" && (i = dt[r]), l.rawCache[r] = i, i;\n  }\n  rawBeforeClose(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length > 0 && typeof r.raws.after < \"u\")\n        return t = r.raws.after, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawBeforeComment(e, t) {\n    let r;\n    return e.walkComments((i) => {\n      if (typeof i.raws.before < \"u\")\n        return r = i.raws.before, r.includes(`\n`) && (r = r.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof r > \"u\" ? r = this.raw(t, null, \"beforeDecl\") : r && (r = r.replace(/\\S/g, \"\")), r;\n  }\n  rawBeforeDecl(e, t) {\n    let r;\n    return e.walkDecls((i) => {\n      if (typeof i.raws.before < \"u\")\n        return r = i.raws.before, r.includes(`\n`) && (r = r.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof r > \"u\" ? r = this.raw(t, null, \"beforeRule\") : r && (r = r.replace(/\\S/g, \"\")), r;\n  }\n  rawBeforeOpen(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.type !== \"decl\" && (t = r.raws.between, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawBeforeRule(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && (r.parent !== e || e.first !== r) && typeof r.raws.before < \"u\")\n        return t = r.raws.before, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawColon(e) {\n    let t;\n    return e.walkDecls((r) => {\n      if (typeof r.raws.between < \"u\")\n        return t = r.raws.between.replace(/[^\\s:]/g, \"\"), !1;\n    }), t;\n  }\n  rawEmptyBody(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length === 0 && (t = r.raws.after, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawIndent(e) {\n    if (e.raws.indent) return e.raws.indent;\n    let t;\n    return e.walk((r) => {\n      let i = r.parent;\n      if (i && i !== e && i.parent && i.parent === e && typeof r.raws.before < \"u\") {\n        let n = r.raws.before.split(`\n`);\n        return t = n[n.length - 1], t = t.replace(/\\S/g, \"\"), !1;\n      }\n    }), t;\n  }\n  rawSemicolon(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length && r.last.type === \"decl\" && (t = r.raws.semicolon, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawValue(e, t) {\n    let r = e[t], i = e.raws[t];\n    return i && i.value === r ? i.raw : r;\n  }\n  root(e) {\n    this.body(e), e.raws.after && this.builder(e.raws.after);\n  }\n  rule(e) {\n    this.block(e, this.rawValue(e, \"selector\")), e.raws.ownSemicolon && this.builder(e.raws.ownSemicolon, e, \"end\");\n  }\n  stringify(e, t) {\n    if (!this[e.type])\n      throw new Error(\n        \"Unknown AST node type \" + e.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    this[e.type](e, t);\n  }\n};\nvar Ut = Te;\nTe.default = Te;\nlet us = Ut;\nfunction De(s, e) {\n  new us(e).stringify(s);\n}\nvar xe = De;\nDe.default = De;\nvar re = {};\nre.isClean = Symbol(\"isClean\");\nre.my = Symbol(\"my\");\nlet fs = Ze, cs = Ut, hs = xe, { isClean: J, my: ps } = re;\nfunction Ue(s, e) {\n  let t = new s.constructor();\n  for (let r in s) {\n    if (!Object.prototype.hasOwnProperty.call(s, r) || r === \"proxyCache\") continue;\n    let i = s[r], n = typeof i;\n    r === \"parent\" && n === \"object\" ? e && (t[r] = e) : r === \"source\" ? t[r] = i : Array.isArray(i) ? t[r] = i.map((l) => Ue(l, t)) : (n === \"object\" && i !== null && (i = Ue(i)), t[r] = i);\n  }\n  return t;\n}\nfunction Y(s, e) {\n  if (e && typeof e.offset < \"u\")\n    return e.offset;\n  let t = 1, r = 1, i = 0;\n  for (let n = 0; n < s.length; n++) {\n    if (r === e.line && t === e.column) {\n      i = n;\n      break;\n    }\n    s[n] === `\n` ? (t = 1, r += 1) : t += 1;\n  }\n  return i;\n}\nlet Be = class {\n  get proxyOf() {\n    return this;\n  }\n  constructor(e = {}) {\n    this.raws = {}, this[J] = !1, this[ps] = !0;\n    for (let t in e)\n      if (t === \"nodes\") {\n        this.nodes = [];\n        for (let r of e[t])\n          typeof r.clone == \"function\" ? this.append(r.clone()) : this.append(r);\n      } else\n        this[t] = e[t];\n  }\n  addToError(e) {\n    if (e.postcssNode = this, e.stack && this.source && /\\n\\s{4}at /.test(e.stack)) {\n      let t = this.source;\n      e.stack = e.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${t.input.from}:${t.start.line}:${t.start.column}$&`\n      );\n    }\n    return e;\n  }\n  after(e) {\n    return this.parent.insertAfter(this, e), this;\n  }\n  assign(e = {}) {\n    for (let t in e)\n      this[t] = e[t];\n    return this;\n  }\n  before(e) {\n    return this.parent.insertBefore(this, e), this;\n  }\n  cleanRaws(e) {\n    delete this.raws.before, delete this.raws.after, e || delete this.raws.between;\n  }\n  clone(e = {}) {\n    let t = Ue(this);\n    for (let r in e)\n      t[r] = e[r];\n    return t;\n  }\n  cloneAfter(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertAfter(this, t), t;\n  }\n  cloneBefore(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertBefore(this, t), t;\n  }\n  error(e, t = {}) {\n    if (this.source) {\n      let { end: r, start: i } = this.rangeBy(t);\n      return this.source.input.error(\n        e,\n        { column: i.column, line: i.line },\n        { column: r.column, line: r.line },\n        t\n      );\n    }\n    return new fs(e);\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : t === \"root\" ? () => e.root().toProxy() : e[t];\n      },\n      set(e, t, r) {\n        return e[t] === r || (e[t] = r, (t === \"prop\" || t === \"value\" || t === \"name\" || t === \"params\" || t === \"important\" || /* c8 ignore next */\n        t === \"text\") && e.markDirty()), !0;\n      }\n    };\n  }\n  /* c8 ignore next 3 */\n  markClean() {\n    this[J] = !0;\n  }\n  markDirty() {\n    if (this[J]) {\n      this[J] = !1;\n      let e = this;\n      for (; e = e.parent; )\n        e[J] = !1;\n    }\n  }\n  next() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e + 1];\n  }\n  positionBy(e) {\n    let t = this.source.start;\n    if (e.index)\n      t = this.positionInside(e.index);\n    else if (e.word) {\n      let r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, n = r.slice(\n        Y(r, this.source.start),\n        Y(r, this.source.end)\n      ).indexOf(e.word);\n      n !== -1 && (t = this.positionInside(n));\n    }\n    return t;\n  }\n  positionInside(e) {\n    let t = this.source.start.column, r = this.source.start.line, i = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, n = Y(i, this.source.start), l = n + e;\n    for (let a = n; a < l; a++)\n      i[a] === `\n` ? (t = 1, r += 1) : t += 1;\n    return { column: t, line: r };\n  }\n  prev() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e - 1];\n  }\n  rangeBy(e) {\n    let t = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }, r = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: t.column + 1,\n      line: t.line\n    };\n    if (e.word) {\n      let i = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, l = i.slice(\n        Y(i, this.source.start),\n        Y(i, this.source.end)\n      ).indexOf(e.word);\n      l !== -1 && (t = this.positionInside(l), r = this.positionInside(\n        l + e.word.length\n      ));\n    } else\n      e.start ? t = {\n        column: e.start.column,\n        line: e.start.line\n      } : e.index && (t = this.positionInside(e.index)), e.end ? r = {\n        column: e.end.column,\n        line: e.end.line\n      } : typeof e.endIndex == \"number\" ? r = this.positionInside(e.endIndex) : e.index && (r = this.positionInside(e.index + 1));\n    return (r.line < t.line || r.line === t.line && r.column <= t.column) && (r = { column: t.column + 1, line: t.line }), { end: r, start: t };\n  }\n  raw(e, t) {\n    return new cs().raw(this, e, t);\n  }\n  remove() {\n    return this.parent && this.parent.removeChild(this), this.parent = void 0, this;\n  }\n  replaceWith(...e) {\n    if (this.parent) {\n      let t = this, r = !1;\n      for (let i of e)\n        i === this ? r = !0 : r ? (this.parent.insertAfter(t, i), t = i) : this.parent.insertBefore(t, i);\n      r || this.remove();\n    }\n    return this;\n  }\n  root() {\n    let e = this;\n    for (; e.parent && e.parent.type !== \"document\"; )\n      e = e.parent;\n    return e;\n  }\n  toJSON(e, t) {\n    let r = {}, i = t == null;\n    t = t || /* @__PURE__ */ new Map();\n    let n = 0;\n    for (let l in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, l) || l === \"parent\" || l === \"proxyCache\") continue;\n      let a = this[l];\n      if (Array.isArray(a))\n        r[l] = a.map((o) => typeof o == \"object\" && o.toJSON ? o.toJSON(null, t) : o);\n      else if (typeof a == \"object\" && a.toJSON)\n        r[l] = a.toJSON(null, t);\n      else if (l === \"source\") {\n        let o = t.get(a.input);\n        o == null && (o = n, t.set(a.input, n), n++), r[l] = {\n          end: a.end,\n          inputId: o,\n          start: a.start\n        };\n      } else\n        r[l] = a;\n    }\n    return i && (r.inputs = [...t.keys()].map((l) => l.toJSON())), r;\n  }\n  toProxy() {\n    return this.proxyCache || (this.proxyCache = new Proxy(this, this.getProxyProcessor())), this.proxyCache;\n  }\n  toString(e = hs) {\n    e.stringify && (e = e.stringify);\n    let t = \"\";\n    return e(this, (r) => {\n      t += r;\n    }), t;\n  }\n  warn(e, t, r) {\n    let i = { node: this };\n    for (let n in r) i[n] = r[n];\n    return e.warn(t, i);\n  }\n};\nvar ve = Be;\nBe.default = Be;\nlet ds = ve, Fe = class extends ds {\n  constructor(e) {\n    super(e), this.type = \"comment\";\n  }\n};\nvar Ee = Fe;\nFe.default = Fe;\nlet ms = ve, ze = class extends ms {\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n  constructor(e) {\n    e && typeof e.value < \"u\" && typeof e.value != \"string\" && (e = { ...e, value: String(e.value) }), super(e), this.type = \"decl\";\n  }\n};\nvar Re = ze;\nze.default = ze;\nlet Bt = Ee, Ft = Re, gs = ve, { isClean: zt, my: Wt } = re, et, jt, Gt, tt;\nfunction Vt(s) {\n  return s.map((e) => (e.nodes && (e.nodes = Vt(e.nodes)), delete e.source, e));\n}\nfunction Ht(s) {\n  if (s[zt] = !1, s.proxyOf.nodes)\n    for (let e of s.proxyOf.nodes)\n      Ht(e);\n}\nlet T = class Jt extends gs {\n  get first() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n  append(...e) {\n    for (let t of e) {\n      let r = this.normalize(t, this.last);\n      for (let i of r) this.proxyOf.nodes.push(i);\n    }\n    return this.markDirty(), this;\n  }\n  cleanRaws(e) {\n    if (super.cleanRaws(e), this.nodes)\n      for (let t of this.nodes) t.cleanRaws(e);\n  }\n  each(e) {\n    if (!this.proxyOf.nodes) return;\n    let t = this.getIterator(), r, i;\n    for (; this.indexes[t] < this.proxyOf.nodes.length && (r = this.indexes[t], i = e(this.proxyOf.nodes[r], r), i !== !1); )\n      this.indexes[t] += 1;\n    return delete this.indexes[t], i;\n  }\n  every(e) {\n    return this.nodes.every(e);\n  }\n  getIterator() {\n    this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1;\n    let e = this.lastEach;\n    return this.indexes[e] = 0, e;\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : e[t] ? t === \"each\" || typeof t == \"string\" && t.startsWith(\"walk\") ? (...r) => e[t](\n          ...r.map((i) => typeof i == \"function\" ? (n, l) => i(n.toProxy(), l) : i)\n        ) : t === \"every\" || t === \"some\" ? (r) => e[t](\n          (i, ...n) => r(i.toProxy(), ...n)\n        ) : t === \"root\" ? () => e.root().toProxy() : t === \"nodes\" ? e.nodes.map((r) => r.toProxy()) : t === \"first\" || t === \"last\" ? e[t].toProxy() : e[t] : e[t];\n      },\n      set(e, t, r) {\n        return e[t] === r || (e[t] = r, (t === \"name\" || t === \"params\" || t === \"selector\") && e.markDirty()), !0;\n      }\n    };\n  }\n  index(e) {\n    return typeof e == \"number\" ? e : (e.proxyOf && (e = e.proxyOf), this.proxyOf.nodes.indexOf(e));\n  }\n  insertAfter(e, t) {\n    let r = this.index(e), i = this.normalize(t, this.proxyOf.nodes[r]).reverse();\n    r = this.index(e);\n    for (let l of i) this.proxyOf.nodes.splice(r + 1, 0, l);\n    let n;\n    for (let l in this.indexes)\n      n = this.indexes[l], r < n && (this.indexes[l] = n + i.length);\n    return this.markDirty(), this;\n  }\n  insertBefore(e, t) {\n    let r = this.index(e), i = r === 0 ? \"prepend\" : !1, n = this.normalize(\n      t,\n      this.proxyOf.nodes[r],\n      i\n    ).reverse();\n    r = this.index(e);\n    for (let a of n) this.proxyOf.nodes.splice(r, 0, a);\n    let l;\n    for (let a in this.indexes)\n      l = this.indexes[a], r <= l && (this.indexes[a] = l + n.length);\n    return this.markDirty(), this;\n  }\n  normalize(e, t) {\n    if (typeof e == \"string\")\n      e = Vt(jt(e).nodes);\n    else if (typeof e > \"u\")\n      e = [];\n    else if (Array.isArray(e)) {\n      e = e.slice(0);\n      for (let i of e)\n        i.parent && i.parent.removeChild(i, \"ignore\");\n    } else if (e.type === \"root\" && this.type !== \"document\") {\n      e = e.nodes.slice(0);\n      for (let i of e)\n        i.parent && i.parent.removeChild(i, \"ignore\");\n    } else if (e.type)\n      e = [e];\n    else if (e.prop) {\n      if (typeof e.value > \"u\")\n        throw new Error(\"Value field is missed in node creation\");\n      typeof e.value != \"string\" && (e.value = String(e.value)), e = [new Ft(e)];\n    } else if (e.selector || e.selectors)\n      e = [new tt(e)];\n    else if (e.name)\n      e = [new et(e)];\n    else if (e.text)\n      e = [new Bt(e)];\n    else\n      throw new Error(\"Unknown node type in node creation\");\n    return e.map((i) => (i[Wt] || Jt.rebuild(i), i = i.proxyOf, i.parent && i.parent.removeChild(i), i[zt] && Ht(i), i.raws || (i.raws = {}), typeof i.raws.before > \"u\" && t && typeof t.raws.before < \"u\" && (i.raws.before = t.raws.before.replace(/\\S/g, \"\")), i.parent = this.proxyOf, i));\n  }\n  prepend(...e) {\n    e = e.reverse();\n    for (let t of e) {\n      let r = this.normalize(t, this.first, \"prepend\").reverse();\n      for (let i of r) this.proxyOf.nodes.unshift(i);\n      for (let i in this.indexes)\n        this.indexes[i] = this.indexes[i] + r.length;\n    }\n    return this.markDirty(), this;\n  }\n  push(e) {\n    return e.parent = this, this.proxyOf.nodes.push(e), this;\n  }\n  removeAll() {\n    for (let e of this.proxyOf.nodes) e.parent = void 0;\n    return this.proxyOf.nodes = [], this.markDirty(), this;\n  }\n  removeChild(e) {\n    e = this.index(e), this.proxyOf.nodes[e].parent = void 0, this.proxyOf.nodes.splice(e, 1);\n    let t;\n    for (let r in this.indexes)\n      t = this.indexes[r], t >= e && (this.indexes[r] = t - 1);\n    return this.markDirty(), this;\n  }\n  replaceValues(e, t, r) {\n    return r || (r = t, t = {}), this.walkDecls((i) => {\n      t.props && !t.props.includes(i.prop) || t.fast && !i.value.includes(t.fast) || (i.value = i.value.replace(e, r));\n    }), this.markDirty(), this;\n  }\n  some(e) {\n    return this.nodes.some(e);\n  }\n  walk(e) {\n    return this.each((t, r) => {\n      let i;\n      try {\n        i = e(t, r);\n      } catch (n) {\n        throw t.addToError(n);\n      }\n      return i !== !1 && t.walk && (i = t.walk(e)), i;\n    });\n  }\n  walkAtRules(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"atrule\" && e.test(r.name))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"atrule\" && r.name === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"atrule\")\n        return t(r, i);\n    }));\n  }\n  walkComments(e) {\n    return this.walk((t, r) => {\n      if (t.type === \"comment\")\n        return e(t, r);\n    });\n  }\n  walkDecls(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"decl\" && e.test(r.prop))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"decl\" && r.prop === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"decl\")\n        return t(r, i);\n    }));\n  }\n  walkRules(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"rule\" && e.test(r.selector))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"rule\" && r.selector === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"rule\")\n        return t(r, i);\n    }));\n  }\n};\nT.registerParse = (s) => {\n  jt = s;\n};\nT.registerRule = (s) => {\n  tt = s;\n};\nT.registerAtRule = (s) => {\n  et = s;\n};\nT.registerRoot = (s) => {\n  Gt = s;\n};\nvar D = T;\nT.default = T;\nT.rebuild = (s) => {\n  s.type === \"atrule\" ? Object.setPrototypeOf(s, et.prototype) : s.type === \"rule\" ? Object.setPrototypeOf(s, tt.prototype) : s.type === \"decl\" ? Object.setPrototypeOf(s, Ft.prototype) : s.type === \"comment\" ? Object.setPrototypeOf(s, Bt.prototype) : s.type === \"root\" && Object.setPrototypeOf(s, Gt.prototype), s[Wt] = !0, s.nodes && s.nodes.forEach((e) => {\n    T.rebuild(e);\n  });\n};\nlet Yt = D, ge = class extends Yt {\n  constructor(e) {\n    super(e), this.type = \"atrule\";\n  }\n  append(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.append(...e);\n  }\n  prepend(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.prepend(...e);\n  }\n};\nvar rt = ge;\nge.default = ge;\nYt.registerAtRule(ge);\nlet ys = D, qt, Qt, X = class extends ys {\n  constructor(e) {\n    super({ type: \"document\", ...e }), this.nodes || (this.nodes = []);\n  }\n  toResult(e = {}) {\n    return new qt(new Qt(), this, e).stringify();\n  }\n};\nX.registerLazyResult = (s) => {\n  qt = s;\n};\nX.registerProcessor = (s) => {\n  Qt = s;\n};\nvar st = X;\nX.default = X;\nlet ws = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\", bs = (s = 21) => {\n  let e = \"\", t = s | 0;\n  for (; t--; )\n    e += ws[Math.random() * 64 | 0];\n  return e;\n};\nvar Cs = { nanoid: bs };\nlet { existsSync: Ss, readFileSync: xs } = $, { dirname: Me, join: vs } = $, { SourceMapConsumer: mt, SourceMapGenerator: gt } = $;\nfunction Es(s) {\n  return Buffer ? Buffer.from(s, \"base64\").toString() : window.atob(s);\n}\nlet We = class {\n  constructor(e, t) {\n    if (t.map === !1) return;\n    this.loadAnnotation(e), this.inline = this.startWith(this.annotation, \"data:\");\n    let r = t.map ? t.map.prev : void 0, i = this.loadMap(t.from, r);\n    !this.mapFile && t.from && (this.mapFile = t.from), this.mapFile && (this.root = Me(this.mapFile)), i && (this.text = i);\n  }\n  consumer() {\n    return this.consumerCache || (this.consumerCache = new mt(this.text)), this.consumerCache;\n  }\n  decodeInline(e) {\n    let t = /^data:application\\/json;charset=utf-?8;base64,/, r = /^data:application\\/json;base64,/, i = /^data:application\\/json;charset=utf-?8,/, n = /^data:application\\/json,/, l = e.match(i) || e.match(n);\n    if (l)\n      return decodeURIComponent(e.substr(l[0].length));\n    let a = e.match(t) || e.match(r);\n    if (a)\n      return Es(e.substr(a[0].length));\n    let o = e.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + o);\n  }\n  getAnnotationURL(e) {\n    return e.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(e) {\n    return typeof e != \"object\" ? !1 : typeof e.mappings == \"string\" || typeof e._mappings == \"string\" || Array.isArray(e.sections);\n  }\n  loadAnnotation(e) {\n    let t = e.match(/\\/\\*\\s*# sourceMappingURL=/g);\n    if (!t) return;\n    let r = e.lastIndexOf(t.pop()), i = e.indexOf(\"*/\", r);\n    r > -1 && i > -1 && (this.annotation = this.getAnnotationURL(e.substring(r, i)));\n  }\n  loadFile(e) {\n    if (this.root = Me(e), Ss(e))\n      return this.mapFile = e, xs(e, \"utf-8\").toString().trim();\n  }\n  loadMap(e, t) {\n    if (t === !1) return !1;\n    if (t) {\n      if (typeof t == \"string\")\n        return t;\n      if (typeof t == \"function\") {\n        let r = t(e);\n        if (r) {\n          let i = this.loadFile(r);\n          if (!i)\n            throw new Error(\n              \"Unable to load previous source map: \" + r.toString()\n            );\n          return i;\n        }\n      } else {\n        if (t instanceof mt)\n          return gt.fromSourceMap(t).toString();\n        if (t instanceof gt)\n          return t.toString();\n        if (this.isMap(t))\n          return JSON.stringify(t);\n        throw new Error(\n          \"Unsupported previous source map format: \" + t.toString()\n        );\n      }\n    } else {\n      if (this.inline)\n        return this.decodeInline(this.annotation);\n      if (this.annotation) {\n        let r = this.annotation;\n        return e && (r = vs(Me(e), r)), this.loadFile(r);\n      }\n    }\n  }\n  startWith(e, t) {\n    return e ? e.substr(0, t.length) === t : !1;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar Kt = We;\nWe.default = We;\nlet { nanoid: Rs } = Cs, { isAbsolute: je, resolve: Ge } = $, { SourceMapConsumer: Os, SourceMapGenerator: ks } = $, { fileURLToPath: yt, pathToFileURL: ie } = $, wt = Ze, Ns = Kt, Pe = $, Ie = Symbol(\"fromOffsetCache\"), As = !!(Os && ks), bt = !!(Ge && je), ye = class {\n  get from() {\n    return this.file || this.id;\n  }\n  constructor(e, t = {}) {\n    if (e === null || typeof e > \"u\" || typeof e == \"object\" && !e.toString)\n      throw new Error(`PostCSS received ${e} instead of CSS string`);\n    if (this.css = e.toString(), this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\" ? (this.hasBOM = !0, this.css = this.css.slice(1)) : this.hasBOM = !1, this.document = this.css, t.document && (this.document = t.document.toString()), t.from && (!bt || /^\\w+:\\/\\//.test(t.from) || je(t.from) ? this.file = t.from : this.file = Ge(t.from)), bt && As) {\n      let r = new Ns(this.css, t);\n      if (r.text) {\n        this.map = r;\n        let i = r.consumer().file;\n        !this.file && i && (this.file = this.mapResolve(i));\n      }\n    }\n    this.file || (this.id = \"<input css \" + Rs(6) + \">\"), this.map && (this.map.file = this.from);\n  }\n  error(e, t, r, i = {}) {\n    let n, l, a;\n    if (t && typeof t == \"object\") {\n      let f = t, u = r;\n      if (typeof f.offset == \"number\") {\n        let h = this.fromOffset(f.offset);\n        t = h.line, r = h.col;\n      } else\n        t = f.line, r = f.column;\n      if (typeof u.offset == \"number\") {\n        let h = this.fromOffset(u.offset);\n        l = h.line, n = h.col;\n      } else\n        l = u.line, n = u.column;\n    } else if (!r) {\n      let f = this.fromOffset(t);\n      t = f.line, r = f.col;\n    }\n    let o = this.origin(t, r, l, n);\n    return o ? a = new wt(\n      e,\n      o.endLine === void 0 ? o.line : { column: o.column, line: o.line },\n      o.endLine === void 0 ? o.column : { column: o.endColumn, line: o.endLine },\n      o.source,\n      o.file,\n      i.plugin\n    ) : a = new wt(\n      e,\n      l === void 0 ? t : { column: r, line: t },\n      l === void 0 ? r : { column: n, line: l },\n      this.css,\n      this.file,\n      i.plugin\n    ), a.input = { column: r, endColumn: n, endLine: l, line: t, source: this.css }, this.file && (ie && (a.input.url = ie(this.file).toString()), a.input.file = this.file), a;\n  }\n  fromOffset(e) {\n    let t, r;\n    if (this[Ie])\n      r = this[Ie];\n    else {\n      let n = this.css.split(`\n`);\n      r = new Array(n.length);\n      let l = 0;\n      for (let a = 0, o = n.length; a < o; a++)\n        r[a] = l, l += n[a].length + 1;\n      this[Ie] = r;\n    }\n    t = r[r.length - 1];\n    let i = 0;\n    if (e >= t)\n      i = r.length - 1;\n    else {\n      let n = r.length - 2, l;\n      for (; i < n; )\n        if (l = i + (n - i >> 1), e < r[l])\n          n = l - 1;\n        else if (e >= r[l + 1])\n          i = l + 1;\n        else {\n          i = l;\n          break;\n        }\n    }\n    return {\n      col: e - r[i] + 1,\n      line: i + 1\n    };\n  }\n  mapResolve(e) {\n    return /^\\w+:\\/\\//.test(e) ? e : Ge(this.map.consumer().sourceRoot || this.map.root || \".\", e);\n  }\n  origin(e, t, r, i) {\n    if (!this.map) return !1;\n    let n = this.map.consumer(), l = n.originalPositionFor({ column: t, line: e });\n    if (!l.source) return !1;\n    let a;\n    typeof r == \"number\" && (a = n.originalPositionFor({ column: i, line: r }));\n    let o;\n    je(l.source) ? o = ie(l.source) : o = new URL(\n      l.source,\n      this.map.consumer().sourceRoot || ie(this.map.mapFile)\n    );\n    let f = {\n      column: l.column,\n      endColumn: a && a.column,\n      endLine: a && a.line,\n      line: l.line,\n      url: o.toString()\n    };\n    if (o.protocol === \"file:\")\n      if (yt)\n        f.file = yt(o);\n      else\n        throw new Error(\"file: protocol is not available in this PostCSS build\");\n    let u = n.sourceContentFor(l.source);\n    return u && (f.source = u), f;\n  }\n  toJSON() {\n    let e = {};\n    for (let t of [\"hasBOM\", \"css\", \"file\", \"id\"])\n      this[t] != null && (e[t] = this[t]);\n    return this.map && (e.map = { ...this.map }, e.map.consumerCache && (e.map.consumerCache = void 0)), e;\n  }\n};\nvar Oe = ye;\nye.default = ye;\nPe && Pe.registerInput && Pe.registerInput(ye);\nlet Xt = D, Zt, er, j = class extends Xt {\n  constructor(e) {\n    super(e), this.type = \"root\", this.nodes || (this.nodes = []);\n  }\n  normalize(e, t, r) {\n    let i = super.normalize(e);\n    if (t) {\n      if (r === \"prepend\")\n        this.nodes.length > 1 ? t.raws.before = this.nodes[1].raws.before : delete t.raws.before;\n      else if (this.first !== t)\n        for (let n of i)\n          n.raws.before = t.raws.before;\n    }\n    return i;\n  }\n  removeChild(e, t) {\n    let r = this.index(e);\n    return !t && r === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[r].raws.before), super.removeChild(e);\n  }\n  toResult(e = {}) {\n    return new Zt(new er(), this, e).stringify();\n  }\n};\nj.registerLazyResult = (s) => {\n  Zt = s;\n};\nj.registerProcessor = (s) => {\n  er = s;\n};\nvar se = j;\nj.default = j;\nXt.registerRoot(j);\nlet Z = {\n  comma(s) {\n    return Z.split(s, [\",\"], !0);\n  },\n  space(s) {\n    let e = [\" \", `\n`, \"\t\"];\n    return Z.split(s, e);\n  },\n  split(s, e, t) {\n    let r = [], i = \"\", n = !1, l = 0, a = !1, o = \"\", f = !1;\n    for (let u of s)\n      f ? f = !1 : u === \"\\\\\" ? f = !0 : a ? u === o && (a = !1) : u === '\"' || u === \"'\" ? (a = !0, o = u) : u === \"(\" ? l += 1 : u === \")\" ? l > 0 && (l -= 1) : l === 0 && e.includes(u) && (n = !0), n ? (i !== \"\" && r.push(i.trim()), i = \"\", n = !1) : i += u;\n    return (t || i !== \"\") && r.push(i.trim()), r;\n  }\n};\nvar tr = Z;\nZ.default = Z;\nlet rr = D, Ms = tr, we = class extends rr {\n  get selectors() {\n    return Ms.comma(this.selector);\n  }\n  set selectors(e) {\n    let t = this.selector ? this.selector.match(/,\\s*/) : null, r = t ? t[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = e.join(r);\n  }\n  constructor(e) {\n    super(e), this.type = \"rule\", this.nodes || (this.nodes = []);\n  }\n};\nvar it = we;\nwe.default = we;\nrr.registerRule(we);\nlet Ps = rt, Is = Ee, _s = Re, $s = Oe, Ls = Kt, Ts = se, Ds = it;\nfunction ee(s, e) {\n  if (Array.isArray(s)) return s.map((i) => ee(i));\n  let { inputs: t, ...r } = s;\n  if (t) {\n    e = [];\n    for (let i of t) {\n      let n = { ...i, __proto__: $s.prototype };\n      n.map && (n.map = {\n        ...n.map,\n        __proto__: Ls.prototype\n      }), e.push(n);\n    }\n  }\n  if (r.nodes && (r.nodes = s.nodes.map((i) => ee(i, e))), r.source) {\n    let { inputId: i, ...n } = r.source;\n    r.source = n, i != null && (r.source.input = e[i]);\n  }\n  if (r.type === \"root\")\n    return new Ts(r);\n  if (r.type === \"decl\")\n    return new _s(r);\n  if (r.type === \"rule\")\n    return new Ds(r);\n  if (r.type === \"comment\")\n    return new Is(r);\n  if (r.type === \"atrule\")\n    return new Ps(r);\n  throw new Error(\"Unknown node type: \" + s.type);\n}\nvar Us = ee;\nee.default = ee;\nlet { dirname: he, relative: sr, resolve: ir, sep: nr } = $, { SourceMapConsumer: or, SourceMapGenerator: pe } = $, { pathToFileURL: Ct } = $, Bs = Oe, Fs = !!(or && pe), zs = !!(he && ir && sr && nr), Ws = class {\n  constructor(e, t, r, i) {\n    this.stringify = e, this.mapOpts = r.map || {}, this.root = t, this.opts = r, this.css = i, this.originalCSS = i, this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute, this.memoizedFileURLs = /* @__PURE__ */ new Map(), this.memoizedPaths = /* @__PURE__ */ new Map(), this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let e;\n    this.isInline() ? e = \"data:application/json;base64,\" + this.toBase64(this.map.toString()) : typeof this.mapOpts.annotation == \"string\" ? e = this.mapOpts.annotation : typeof this.mapOpts.annotation == \"function\" ? e = this.mapOpts.annotation(this.opts.to, this.root) : e = this.outputFile() + \".map\";\n    let t = `\n`;\n    this.css.includes(`\\r\n`) && (t = `\\r\n`), this.css += t + \"/*# sourceMappingURL=\" + e + \" */\";\n  }\n  applyPrevMaps() {\n    for (let e of this.previous()) {\n      let t = this.toUrl(this.path(e.file)), r = e.root || he(e.file), i;\n      this.mapOpts.sourcesContent === !1 ? (i = new or(e.text), i.sourcesContent && (i.sourcesContent = null)) : i = e.consumer(), this.map.applySourceMap(i, t, this.toUrl(this.path(r)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation !== !1)\n      if (this.root) {\n        let e;\n        for (let t = this.root.nodes.length - 1; t >= 0; t--)\n          e = this.root.nodes[t], e.type === \"comment\" && e.text.startsWith(\"# sourceMappingURL=\") && this.root.removeChild(t);\n      } else this.css && (this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\"));\n  }\n  generate() {\n    if (this.clearAnnotation(), zs && Fs && this.isMap())\n      return this.generateMap();\n    {\n      let e = \"\";\n      return this.stringify(this.root, (t) => {\n        e += t;\n      }), [e];\n    }\n  }\n  generateMap() {\n    if (this.root)\n      this.generateString();\n    else if (this.previous().length === 1) {\n      let e = this.previous()[0].consumer();\n      e.file = this.outputFile(), this.map = pe.fromSourceMap(e, {\n        ignoreInvalidMapping: !0\n      });\n    } else\n      this.map = new pe({\n        file: this.outputFile(),\n        ignoreInvalidMapping: !0\n      }), this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    return this.isSourcesContent() && this.setSourcesContent(), this.root && this.previous().length > 0 && this.applyPrevMaps(), this.isAnnotation() && this.addAnnotation(), this.isInline() ? [this.css] : [this.css, this.map];\n  }\n  generateString() {\n    this.css = \"\", this.map = new pe({\n      file: this.outputFile(),\n      ignoreInvalidMapping: !0\n    });\n    let e = 1, t = 1, r = \"<no source>\", i = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    }, n, l;\n    this.stringify(this.root, (a, o, f) => {\n      if (this.css += a, o && f !== \"end\" && (i.generated.line = e, i.generated.column = t - 1, o.source && o.source.start ? (i.source = this.sourcePath(o), i.original.line = o.source.start.line, i.original.column = o.source.start.column - 1, this.map.addMapping(i)) : (i.source = r, i.original.line = 1, i.original.column = 0, this.map.addMapping(i))), l = a.match(/\\n/g), l ? (e += l.length, n = a.lastIndexOf(`\n`), t = a.length - n) : t += a.length, o && f !== \"start\") {\n        let u = o.parent || { raws: {} };\n        (!(o.type === \"decl\" || o.type === \"atrule\" && !o.nodes) || o !== u.last || u.raws.semicolon) && (o.source && o.source.end ? (i.source = this.sourcePath(o), i.original.line = o.source.end.line, i.original.column = o.source.end.column - 1, i.generated.line = e, i.generated.column = t - 2, this.map.addMapping(i)) : (i.source = r, i.original.line = 1, i.original.column = 0, i.generated.line = e, i.generated.column = t - 1, this.map.addMapping(i)));\n      }\n    });\n  }\n  isAnnotation() {\n    return this.isInline() ? !0 : typeof this.mapOpts.annotation < \"u\" ? this.mapOpts.annotation : this.previous().length ? this.previous().some((e) => e.annotation) : !0;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline < \"u\")\n      return this.mapOpts.inline;\n    let e = this.mapOpts.annotation;\n    return typeof e < \"u\" && e !== !0 ? !1 : this.previous().length ? this.previous().some((t) => t.inline) : !0;\n  }\n  isMap() {\n    return typeof this.opts.map < \"u\" ? !!this.opts.map : this.previous().length > 0;\n  }\n  isSourcesContent() {\n    return typeof this.mapOpts.sourcesContent < \"u\" ? this.mapOpts.sourcesContent : this.previous().length ? this.previous().some((e) => e.withContent()) : !0;\n  }\n  outputFile() {\n    return this.opts.to ? this.path(this.opts.to) : this.opts.from ? this.path(this.opts.from) : \"to.css\";\n  }\n  path(e) {\n    if (this.mapOpts.absolute || e.charCodeAt(0) === 60 || /^\\w+:\\/\\//.test(e)) return e;\n    let t = this.memoizedPaths.get(e);\n    if (t) return t;\n    let r = this.opts.to ? he(this.opts.to) : \".\";\n    typeof this.mapOpts.annotation == \"string\" && (r = he(ir(r, this.mapOpts.annotation)));\n    let i = sr(r, e);\n    return this.memoizedPaths.set(e, i), i;\n  }\n  previous() {\n    if (!this.previousMaps)\n      if (this.previousMaps = [], this.root)\n        this.root.walk((e) => {\n          if (e.source && e.source.input.map) {\n            let t = e.source.input.map;\n            this.previousMaps.includes(t) || this.previousMaps.push(t);\n          }\n        });\n      else {\n        let e = new Bs(this.originalCSS, this.opts);\n        e.map && this.previousMaps.push(e.map);\n      }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let e = {};\n    if (this.root)\n      this.root.walk((t) => {\n        if (t.source) {\n          let r = t.source.input.from;\n          if (r && !e[r]) {\n            e[r] = !0;\n            let i = this.usesFileUrls ? this.toFileUrl(r) : this.toUrl(this.path(r));\n            this.map.setSourceContent(i, t.source.input.css);\n          }\n        }\n      });\n    else if (this.css) {\n      let t = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(t, this.css);\n    }\n  }\n  sourcePath(e) {\n    return this.mapOpts.from ? this.toUrl(this.mapOpts.from) : this.usesFileUrls ? this.toFileUrl(e.source.input.from) : this.toUrl(this.path(e.source.input.from));\n  }\n  toBase64(e) {\n    return Buffer ? Buffer.from(e).toString(\"base64\") : window.btoa(unescape(encodeURIComponent(e)));\n  }\n  toFileUrl(e) {\n    let t = this.memoizedFileURLs.get(e);\n    if (t) return t;\n    if (Ct) {\n      let r = Ct(e).toString();\n      return this.memoizedFileURLs.set(e, r), r;\n    } else\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n  }\n  toUrl(e) {\n    let t = this.memoizedURLs.get(e);\n    if (t) return t;\n    nr === \"\\\\\" && (e = e.replace(/\\\\/g, \"/\"));\n    let r = encodeURI(e).replace(/[#?]/g, encodeURIComponent);\n    return this.memoizedURLs.set(e, r), r;\n  }\n};\nvar lr = Ws;\nconst _e = 39, St = 34, ne = 92, xt = 47, oe = 10, q = 32, le = 12, ae = 9, ue = 13, js = 91, Gs = 93, Vs = 40, Hs = 41, Js = 123, Ys = 125, qs = 59, Qs = 42, Ks = 58, Xs = 64, fe = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g, ce = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g, Zs = /.[\\r\\n\"'(/\\\\]/, vt = /[\\da-f]/i;\nvar ei = function(e, t = {}) {\n  let r = e.css.valueOf(), i = t.ignoreErrors, n, l, a, o, f, u, h, d, g, E, R = r.length, c = 0, m = [], k = [];\n  function M() {\n    return c;\n  }\n  function p(A) {\n    throw e.error(\"Unclosed \" + A, c);\n  }\n  function b() {\n    return k.length === 0 && c >= R;\n  }\n  function O(A) {\n    if (k.length) return k.pop();\n    if (c >= R) return;\n    let N = A ? A.ignoreUnclosed : !1;\n    switch (n = r.charCodeAt(c), n) {\n      case oe:\n      case q:\n      case ae:\n      case ue:\n      case le: {\n        o = c;\n        do\n          o += 1, n = r.charCodeAt(o);\n        while (n === q || n === oe || n === ae || n === ue || n === le);\n        u = [\"space\", r.slice(c, o)], c = o - 1;\n        break;\n      }\n      case js:\n      case Gs:\n      case Js:\n      case Ys:\n      case Ks:\n      case qs:\n      case Hs: {\n        let _ = String.fromCharCode(n);\n        u = [_, _, c];\n        break;\n      }\n      case Vs: {\n        if (E = m.length ? m.pop()[1] : \"\", g = r.charCodeAt(c + 1), E === \"url\" && g !== _e && g !== St && g !== q && g !== oe && g !== ae && g !== le && g !== ue) {\n          o = c;\n          do {\n            if (h = !1, o = r.indexOf(\")\", o + 1), o === -1)\n              if (i || N) {\n                o = c;\n                break;\n              } else\n                p(\"bracket\");\n            for (d = o; r.charCodeAt(d - 1) === ne; )\n              d -= 1, h = !h;\n          } while (h);\n          u = [\"brackets\", r.slice(c, o + 1), c, o], c = o;\n        } else\n          o = r.indexOf(\")\", c + 1), l = r.slice(c, o + 1), o === -1 || Zs.test(l) ? u = [\"(\", \"(\", c] : (u = [\"brackets\", l, c, o], c = o);\n        break;\n      }\n      case _e:\n      case St: {\n        f = n === _e ? \"'\" : '\"', o = c;\n        do {\n          if (h = !1, o = r.indexOf(f, o + 1), o === -1)\n            if (i || N) {\n              o = c + 1;\n              break;\n            } else\n              p(\"string\");\n          for (d = o; r.charCodeAt(d - 1) === ne; )\n            d -= 1, h = !h;\n        } while (h);\n        u = [\"string\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      case Xs: {\n        fe.lastIndex = c + 1, fe.test(r), fe.lastIndex === 0 ? o = r.length - 1 : o = fe.lastIndex - 2, u = [\"at-word\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      case ne: {\n        for (o = c, a = !0; r.charCodeAt(o + 1) === ne; )\n          o += 1, a = !a;\n        if (n = r.charCodeAt(o + 1), a && n !== xt && n !== q && n !== oe && n !== ae && n !== ue && n !== le && (o += 1, vt.test(r.charAt(o)))) {\n          for (; vt.test(r.charAt(o + 1)); )\n            o += 1;\n          r.charCodeAt(o + 1) === q && (o += 1);\n        }\n        u = [\"word\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      default: {\n        n === xt && r.charCodeAt(c + 1) === Qs ? (o = r.indexOf(\"*/\", c + 2) + 1, o === 0 && (i || N ? o = r.length : p(\"comment\")), u = [\"comment\", r.slice(c, o + 1), c, o], c = o) : (ce.lastIndex = c + 1, ce.test(r), ce.lastIndex === 0 ? o = r.length - 1 : o = ce.lastIndex - 2, u = [\"word\", r.slice(c, o + 1), c, o], m.push(u), c = o);\n        break;\n      }\n    }\n    return c++, u;\n  }\n  function I(A) {\n    k.push(A);\n  }\n  return {\n    back: I,\n    endOfFile: b,\n    nextToken: O,\n    position: M\n  };\n};\nlet ti = rt, ri = Ee, si = Re, ii = se, Et = it, ni = ei;\nconst Rt = {\n  empty: !0,\n  space: !0\n};\nfunction oi(s) {\n  for (let e = s.length - 1; e >= 0; e--) {\n    let t = s[e], r = t[3] || t[2];\n    if (r) return r;\n  }\n}\nlet li = class {\n  constructor(e) {\n    this.input = e, this.root = new ii(), this.current = this.root, this.spaces = \"\", this.semicolon = !1, this.createTokenizer(), this.root.source = { input: e, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(e) {\n    let t = new ti();\n    t.name = e[1].slice(1), t.name === \"\" && this.unnamedAtrule(t, e), this.init(t, e[2]);\n    let r, i, n, l = !1, a = !1, o = [], f = [];\n    for (; !this.tokenizer.endOfFile(); ) {\n      if (e = this.tokenizer.nextToken(), r = e[0], r === \"(\" || r === \"[\" ? f.push(r === \"(\" ? \")\" : \"]\") : r === \"{\" && f.length > 0 ? f.push(\"}\") : r === f[f.length - 1] && f.pop(), f.length === 0)\n        if (r === \";\") {\n          t.source.end = this.getPosition(e[2]), t.source.end.offset++, this.semicolon = !0;\n          break;\n        } else if (r === \"{\") {\n          a = !0;\n          break;\n        } else if (r === \"}\") {\n          if (o.length > 0) {\n            for (n = o.length - 1, i = o[n]; i && i[0] === \"space\"; )\n              i = o[--n];\n            i && (t.source.end = this.getPosition(i[3] || i[2]), t.source.end.offset++);\n          }\n          this.end(e);\n          break;\n        } else\n          o.push(e);\n      else\n        o.push(e);\n      if (this.tokenizer.endOfFile()) {\n        l = !0;\n        break;\n      }\n    }\n    t.raws.between = this.spacesAndCommentsFromEnd(o), o.length ? (t.raws.afterName = this.spacesAndCommentsFromStart(o), this.raw(t, \"params\", o), l && (e = o[o.length - 1], t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++, this.spaces = t.raws.between, t.raws.between = \"\")) : (t.raws.afterName = \"\", t.params = \"\"), a && (t.nodes = [], this.current = t);\n  }\n  checkMissedSemicolon(e) {\n    let t = this.colon(e);\n    if (t === !1) return;\n    let r = 0, i;\n    for (let n = t - 1; n >= 0 && (i = e[n], !(i[0] !== \"space\" && (r += 1, r === 2))); n--)\n      ;\n    throw this.input.error(\n      \"Missed semicolon\",\n      i[0] === \"word\" ? i[3] + 1 : i[2]\n    );\n  }\n  colon(e) {\n    let t = 0, r, i, n;\n    for (let [l, a] of e.entries()) {\n      if (i = a, n = i[0], n === \"(\" && (t += 1), n === \")\" && (t -= 1), t === 0 && n === \":\")\n        if (!r)\n          this.doubleColon(i);\n        else {\n          if (r[0] === \"word\" && r[1] === \"progid\")\n            continue;\n          return l;\n        }\n      r = i;\n    }\n    return !1;\n  }\n  comment(e) {\n    let t = new ri();\n    this.init(t, e[2]), t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++;\n    let r = e[1].slice(2, -2);\n    if (/^\\s*$/.test(r))\n      t.text = \"\", t.raws.left = r, t.raws.right = \"\";\n    else {\n      let i = r.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      t.text = i[2], t.raws.left = i[1], t.raws.right = i[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = ni(this.input);\n  }\n  decl(e, t) {\n    let r = new si();\n    this.init(r, e[0][2]);\n    let i = e[e.length - 1];\n    for (i[0] === \";\" && (this.semicolon = !0, e.pop()), r.source.end = this.getPosition(\n      i[3] || i[2] || oi(e)\n    ), r.source.end.offset++; e[0][0] !== \"word\"; )\n      e.length === 1 && this.unknownWord(e), r.raws.before += e.shift()[1];\n    for (r.source.start = this.getPosition(e[0][2]), r.prop = \"\"; e.length; ) {\n      let f = e[0][0];\n      if (f === \":\" || f === \"space\" || f === \"comment\")\n        break;\n      r.prop += e.shift()[1];\n    }\n    r.raws.between = \"\";\n    let n;\n    for (; e.length; )\n      if (n = e.shift(), n[0] === \":\") {\n        r.raws.between += n[1];\n        break;\n      } else\n        n[0] === \"word\" && /\\w/.test(n[1]) && this.unknownWord([n]), r.raws.between += n[1];\n    (r.prop[0] === \"_\" || r.prop[0] === \"*\") && (r.raws.before += r.prop[0], r.prop = r.prop.slice(1));\n    let l = [], a;\n    for (; e.length && (a = e[0][0], !(a !== \"space\" && a !== \"comment\")); )\n      l.push(e.shift());\n    this.precheckMissedSemicolon(e);\n    for (let f = e.length - 1; f >= 0; f--) {\n      if (n = e[f], n[1].toLowerCase() === \"!important\") {\n        r.important = !0;\n        let u = this.stringFrom(e, f);\n        u = this.spacesFromEnd(e) + u, u !== \" !important\" && (r.raws.important = u);\n        break;\n      } else if (n[1].toLowerCase() === \"important\") {\n        let u = e.slice(0), h = \"\";\n        for (let d = f; d > 0; d--) {\n          let g = u[d][0];\n          if (h.trim().startsWith(\"!\") && g !== \"space\")\n            break;\n          h = u.pop()[1] + h;\n        }\n        h.trim().startsWith(\"!\") && (r.important = !0, r.raws.important = h, e = u);\n      }\n      if (n[0] !== \"space\" && n[0] !== \"comment\")\n        break;\n    }\n    e.some((f) => f[0] !== \"space\" && f[0] !== \"comment\") && (r.raws.between += l.map((f) => f[1]).join(\"\"), l = []), this.raw(r, \"value\", l.concat(e), t), r.value.includes(\":\") && !t && this.checkMissedSemicolon(e);\n  }\n  doubleColon(e) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: e[2] },\n      { offset: e[2] + e[1].length }\n    );\n  }\n  emptyRule(e) {\n    let t = new Et();\n    this.init(t, e[2]), t.selector = \"\", t.raws.between = \"\", this.current = t;\n  }\n  end(e) {\n    this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = !1, this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.spaces = \"\", this.current.parent ? (this.current.source.end = this.getPosition(e[2]), this.current.source.end.offset++, this.current = this.current.parent) : this.unexpectedClose(e);\n  }\n  endFile() {\n    this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(e) {\n    if (this.spaces += e[1], this.current.nodes) {\n      let t = this.current.nodes[this.current.nodes.length - 1];\n      t && t.type === \"rule\" && !t.raws.ownSemicolon && (t.raws.ownSemicolon = this.spaces, this.spaces = \"\", t.source.end = this.getPosition(e[2]), t.source.end.offset += t.raws.ownSemicolon.length);\n    }\n  }\n  // Helpers\n  getPosition(e) {\n    let t = this.input.fromOffset(e);\n    return {\n      column: t.col,\n      line: t.line,\n      offset: e\n    };\n  }\n  init(e, t) {\n    this.current.push(e), e.source = {\n      input: this.input,\n      start: this.getPosition(t)\n    }, e.raws.before = this.spaces, this.spaces = \"\", e.type !== \"comment\" && (this.semicolon = !1);\n  }\n  other(e) {\n    let t = !1, r = null, i = !1, n = null, l = [], a = e[1].startsWith(\"--\"), o = [], f = e;\n    for (; f; ) {\n      if (r = f[0], o.push(f), r === \"(\" || r === \"[\")\n        n || (n = f), l.push(r === \"(\" ? \")\" : \"]\");\n      else if (a && i && r === \"{\")\n        n || (n = f), l.push(\"}\");\n      else if (l.length === 0)\n        if (r === \";\")\n          if (i) {\n            this.decl(o, a);\n            return;\n          } else\n            break;\n        else if (r === \"{\") {\n          this.rule(o);\n          return;\n        } else if (r === \"}\") {\n          this.tokenizer.back(o.pop()), t = !0;\n          break;\n        } else r === \":\" && (i = !0);\n      else r === l[l.length - 1] && (l.pop(), l.length === 0 && (n = null));\n      f = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile() && (t = !0), l.length > 0 && this.unclosedBracket(n), t && i) {\n      if (!a)\n        for (; o.length && (f = o[o.length - 1][0], !(f !== \"space\" && f !== \"comment\")); )\n          this.tokenizer.back(o.pop());\n      this.decl(o, a);\n    } else\n      this.unknownWord(o);\n  }\n  parse() {\n    let e;\n    for (; !this.tokenizer.endOfFile(); )\n      switch (e = this.tokenizer.nextToken(), e[0]) {\n        case \"space\":\n          this.spaces += e[1];\n          break;\n        case \";\":\n          this.freeSemicolon(e);\n          break;\n        case \"}\":\n          this.end(e);\n          break;\n        case \"comment\":\n          this.comment(e);\n          break;\n        case \"at-word\":\n          this.atrule(e);\n          break;\n        case \"{\":\n          this.emptyRule(e);\n          break;\n        default:\n          this.other(e);\n          break;\n      }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(e, t, r, i) {\n    let n, l, a = r.length, o = \"\", f = !0, u, h;\n    for (let d = 0; d < a; d += 1)\n      n = r[d], l = n[0], l === \"space\" && d === a - 1 && !i ? f = !1 : l === \"comment\" ? (h = r[d - 1] ? r[d - 1][0] : \"empty\", u = r[d + 1] ? r[d + 1][0] : \"empty\", !Rt[h] && !Rt[u] ? o.slice(-1) === \",\" ? f = !1 : o += n[1] : f = !1) : o += n[1];\n    if (!f) {\n      let d = r.reduce((g, E) => g + E[1], \"\");\n      e.raws[t] = { raw: d, value: o };\n    }\n    e[t] = o;\n  }\n  rule(e) {\n    e.pop();\n    let t = new Et();\n    this.init(t, e[0][2]), t.raws.between = this.spacesAndCommentsFromEnd(e), this.raw(t, \"selector\", e), this.current = t;\n  }\n  spacesAndCommentsFromEnd(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[e.length - 1][0], !(t !== \"space\" && t !== \"comment\")); )\n      r = e.pop()[1] + r;\n    return r;\n  }\n  // Errors\n  spacesAndCommentsFromStart(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[0][0], !(t !== \"space\" && t !== \"comment\")); )\n      r += e.shift()[1];\n    return r;\n  }\n  spacesFromEnd(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[e.length - 1][0], t === \"space\"); )\n      r = e.pop()[1] + r;\n    return r;\n  }\n  stringFrom(e, t) {\n    let r = \"\";\n    for (let i = t; i < e.length; i++)\n      r += e[i][1];\n    return e.splice(t, e.length - t), r;\n  }\n  unclosedBlock() {\n    let e = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", e.line, e.column);\n  }\n  unclosedBracket(e) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unexpectedClose(e) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unknownWord(e) {\n    throw this.input.error(\n      \"Unknown word \" + e[0][1],\n      { offset: e[0][2] },\n      { offset: e[0][2] + e[0][1].length }\n    );\n  }\n  unnamedAtrule(e, t) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: t[2] },\n      { offset: t[2] + t[1].length }\n    );\n  }\n};\nvar ai = li;\nlet ui = D, fi = Oe, ci = ai;\nfunction be(s, e) {\n  let t = new fi(s, e), r = new ci(t);\n  try {\n    r.parse();\n  } catch (i) {\n    throw process.env.NODE_ENV !== \"production\" && i.name === \"CssSyntaxError\" && e && e.from && (/\\.scss$/i.test(e.from) ? i.message += `\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser` : /\\.sass/i.test(e.from) ? i.message += `\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser` : /\\.less$/i.test(e.from) && (i.message += `\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)), i;\n  }\n  return r.root;\n}\nvar nt = be;\nbe.default = be;\nui.registerParse(be);\nlet Ve = class {\n  constructor(e, t = {}) {\n    if (this.type = \"warning\", this.text = e, t.node && t.node.source) {\n      let r = t.node.rangeBy(t);\n      this.line = r.start.line, this.column = r.start.column, this.endLine = r.end.line, this.endColumn = r.end.column;\n    }\n    for (let r in t) this[r] = t[r];\n  }\n  toString() {\n    return this.node ? this.node.error(this.text, {\n      index: this.index,\n      plugin: this.plugin,\n      word: this.word\n    }).message : this.plugin ? this.plugin + \": \" + this.text : this.text;\n  }\n};\nvar ar = Ve;\nVe.default = Ve;\nlet hi = ar, He = class {\n  get content() {\n    return this.css;\n  }\n  constructor(e, t, r) {\n    this.processor = e, this.messages = [], this.root = t, this.opts = r, this.css = void 0, this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(e, t = {}) {\n    t.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (t.plugin = this.lastPlugin.postcssPlugin);\n    let r = new hi(e, t);\n    return this.messages.push(r), r;\n  }\n  warnings() {\n    return this.messages.filter((e) => e.type === \"warning\");\n  }\n};\nvar ot = He;\nHe.default = He;\nlet Ot = {};\nvar ur = function(e) {\n  Ot[e] || (Ot[e] = !0, typeof console < \"u\" && console.warn && console.warn(e));\n};\nlet pi = D, di = st, mi = lr, gi = nt, kt = ot, yi = se, wi = xe, { isClean: L, my: bi } = re, Ci = ur;\nconst Si = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n}, xi = {\n  AtRule: !0,\n  AtRuleExit: !0,\n  Comment: !0,\n  CommentExit: !0,\n  Declaration: !0,\n  DeclarationExit: !0,\n  Document: !0,\n  DocumentExit: !0,\n  Once: !0,\n  OnceExit: !0,\n  postcssPlugin: !0,\n  prepare: !0,\n  Root: !0,\n  RootExit: !0,\n  Rule: !0,\n  RuleExit: !0\n}, vi = {\n  Once: !0,\n  postcssPlugin: !0,\n  prepare: !0\n}, G = 0;\nfunction Q(s) {\n  return typeof s == \"object\" && typeof s.then == \"function\";\n}\nfunction fr(s) {\n  let e = !1, t = Si[s.type];\n  return s.type === \"decl\" ? e = s.prop.toLowerCase() : s.type === \"atrule\" && (e = s.name.toLowerCase()), e && s.append ? [\n    t,\n    t + \"-\" + e,\n    G,\n    t + \"Exit\",\n    t + \"Exit-\" + e\n  ] : e ? [t, t + \"-\" + e, t + \"Exit\", t + \"Exit-\" + e] : s.append ? [t, G, t + \"Exit\"] : [t, t + \"Exit\"];\n}\nfunction Nt(s) {\n  let e;\n  return s.type === \"document\" ? e = [\"Document\", G, \"DocumentExit\"] : s.type === \"root\" ? e = [\"Root\", G, \"RootExit\"] : e = fr(s), {\n    eventIndex: 0,\n    events: e,\n    iterator: 0,\n    node: s,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction Je(s) {\n  return s[L] = !1, s.nodes && s.nodes.forEach((e) => Je(e)), s;\n}\nlet Ye = {}, V = class cr {\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n  constructor(e, t, r) {\n    this.stringified = !1, this.processed = !1;\n    let i;\n    if (typeof t == \"object\" && t !== null && (t.type === \"root\" || t.type === \"document\"))\n      i = Je(t);\n    else if (t instanceof cr || t instanceof kt)\n      i = Je(t.root), t.map && (typeof r.map > \"u\" && (r.map = {}), r.map.inline || (r.map.inline = !1), r.map.prev = t.map);\n    else {\n      let n = gi;\n      r.syntax && (n = r.syntax.parse), r.parser && (n = r.parser), n.parse && (n = n.parse);\n      try {\n        i = n(t, r);\n      } catch (l) {\n        this.processed = !0, this.error = l;\n      }\n      i && !i[bi] && pi.rebuild(i);\n    }\n    this.result = new kt(e, i, r), this.helpers = { ...Ye, postcss: Ye, result: this.result }, this.plugins = this.processor.plugins.map((n) => typeof n == \"object\" && n.prepare ? { ...n, ...n.prepare(this.result) } : n);\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : this.processed ? Promise.resolve(this.result) : (this.processing || (this.processing = this.runAsync()), this.processing);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(e, t) {\n    let r = this.result.lastPlugin;\n    try {\n      if (t && t.addToError(e), this.error = e, e.name === \"CssSyntaxError\" && !e.plugin)\n        e.plugin = r.postcssPlugin, e.setMessage();\n      else if (r.postcssVersion && process.env.NODE_ENV !== \"production\") {\n        let i = r.postcssPlugin, n = r.postcssVersion, l = this.result.processor.version, a = n.split(\".\"), o = l.split(\".\");\n        (a[0] !== o[0] || parseInt(a[1]) > parseInt(o[1])) && console.error(\n          \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + l + \", but \" + i + \" uses \" + n + \". Perhaps this is the source of the error below.\"\n        );\n      }\n    } catch (i) {\n      console && console.error && console.error(i);\n    }\n    return e;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let e = (t, r, i) => {\n      this.listeners[r] || (this.listeners[r] = []), this.listeners[r].push([t, i]);\n    };\n    for (let t of this.plugins)\n      if (typeof t == \"object\")\n        for (let r in t) {\n          if (!xi[r] && /^[A-Z]/.test(r))\n            throw new Error(\n              `Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          if (!vi[r])\n            if (typeof t[r] == \"object\")\n              for (let i in t[r])\n                i === \"*\" ? e(t, r, t[r][i]) : e(\n                  t,\n                  r + \"-\" + i.toLowerCase(),\n                  t[r][i]\n                );\n            else typeof t[r] == \"function\" && e(t, r, t[r]);\n        }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let e = 0; e < this.plugins.length; e++) {\n      let t = this.plugins[e], r = this.runOnRoot(t);\n      if (Q(r))\n        try {\n          await r;\n        } catch (i) {\n          throw this.handleError(i);\n        }\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let e = this.result.root;\n      for (; !e[L]; ) {\n        e[L] = !0;\n        let t = [Nt(e)];\n        for (; t.length > 0; ) {\n          let r = this.visitTick(t);\n          if (Q(r))\n            try {\n              await r;\n            } catch (i) {\n              let n = t[t.length - 1].node;\n              throw this.handleError(i, n);\n            }\n        }\n      }\n      if (this.listeners.OnceExit)\n        for (let [t, r] of this.listeners.OnceExit) {\n          this.result.lastPlugin = t;\n          try {\n            if (e.type === \"document\") {\n              let i = e.nodes.map(\n                (n) => r(n, this.helpers)\n              );\n              await Promise.all(i);\n            } else\n              await r(e, this.helpers);\n          } catch (i) {\n            throw this.handleError(i);\n          }\n        }\n    }\n    return this.processed = !0, this.stringify();\n  }\n  runOnRoot(e) {\n    this.result.lastPlugin = e;\n    try {\n      if (typeof e == \"object\" && e.Once) {\n        if (this.result.root.type === \"document\") {\n          let t = this.result.root.nodes.map(\n            (r) => e.Once(r, this.helpers)\n          );\n          return Q(t[0]) ? Promise.all(t) : t;\n        }\n        return e.Once(this.result.root, this.helpers);\n      } else if (typeof e == \"function\")\n        return e(this.result.root, this.result);\n    } catch (t) {\n      throw this.handleError(t);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = !0, this.sync();\n    let e = this.result.opts, t = wi;\n    e.syntax && (t = e.syntax.stringify), e.stringifier && (t = e.stringifier), t.stringify && (t = t.stringify);\n    let i = new mi(t, this.result.root, this.result.opts).generate();\n    return this.result.css = i[0], this.result.map = i[1], this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    if (this.processed = !0, this.processing)\n      throw this.getAsyncError();\n    for (let e of this.plugins) {\n      let t = this.runOnRoot(e);\n      if (Q(t))\n        throw this.getAsyncError();\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let e = this.result.root;\n      for (; !e[L]; )\n        e[L] = !0, this.walkSync(e);\n      if (this.listeners.OnceExit)\n        if (e.type === \"document\")\n          for (let t of e.nodes)\n            this.visitSync(this.listeners.OnceExit, t);\n        else\n          this.visitSync(this.listeners.OnceExit, e);\n    }\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this.opts || Ci(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(e, t);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(e, t) {\n    for (let [r, i] of e) {\n      this.result.lastPlugin = r;\n      let n;\n      try {\n        n = i(t, this.helpers);\n      } catch (l) {\n        throw this.handleError(l, t.proxyOf);\n      }\n      if (t.type !== \"root\" && t.type !== \"document\" && !t.parent)\n        return !0;\n      if (Q(n))\n        throw this.getAsyncError();\n    }\n  }\n  visitTick(e) {\n    let t = e[e.length - 1], { node: r, visitors: i } = t;\n    if (r.type !== \"root\" && r.type !== \"document\" && !r.parent) {\n      e.pop();\n      return;\n    }\n    if (i.length > 0 && t.visitorIndex < i.length) {\n      let [l, a] = i[t.visitorIndex];\n      t.visitorIndex += 1, t.visitorIndex === i.length && (t.visitors = [], t.visitorIndex = 0), this.result.lastPlugin = l;\n      try {\n        return a(r.toProxy(), this.helpers);\n      } catch (o) {\n        throw this.handleError(o, r);\n      }\n    }\n    if (t.iterator !== 0) {\n      let l = t.iterator, a;\n      for (; a = r.nodes[r.indexes[l]]; )\n        if (r.indexes[l] += 1, !a[L]) {\n          a[L] = !0, e.push(Nt(a));\n          return;\n        }\n      t.iterator = 0, delete r.indexes[l];\n    }\n    let n = t.events;\n    for (; t.eventIndex < n.length; ) {\n      let l = n[t.eventIndex];\n      if (t.eventIndex += 1, l === G) {\n        r.nodes && r.nodes.length && (r[L] = !0, t.iterator = r.getIterator());\n        return;\n      } else if (this.listeners[l]) {\n        t.visitors = this.listeners[l];\n        return;\n      }\n    }\n    e.pop();\n  }\n  walkSync(e) {\n    e[L] = !0;\n    let t = fr(e);\n    for (let r of t)\n      if (r === G)\n        e.nodes && e.each((i) => {\n          i[L] || this.walkSync(i);\n        });\n      else {\n        let i = this.listeners[r];\n        if (i && this.visitSync(i, e.toProxy()))\n          return;\n      }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n};\nV.registerPostcss = (s) => {\n  Ye = s;\n};\nvar hr = V;\nV.default = V;\nyi.registerLazyResult(V);\ndi.registerLazyResult(V);\nlet Ei = lr, Ri = nt;\nconst Oi = ot;\nlet ki = xe, Ni = ur, qe = class {\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root)\n      return this._root;\n    let e, t = Ri;\n    try {\n      e = t(this._css, this._opts);\n    } catch (r) {\n      this.error = r;\n    }\n    if (this.error)\n      throw this.error;\n    return this._root = e, e;\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n  constructor(e, t, r) {\n    t = t.toString(), this.stringified = !1, this._processor = e, this._css = t, this._opts = r, this._map = void 0;\n    let i, n = ki;\n    this.result = new Oi(this._processor, i, this._opts), this.result.css = t;\n    let l = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return l.root;\n      }\n    });\n    let a = new Ei(n, i, this._opts, t);\n    if (a.isMap()) {\n      let [o, f] = a.generate();\n      o && (this.result.css = o), f && (this.result.map = f);\n    } else\n      a.clearAnnotation(), this.result.css = a.css;\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : Promise.resolve(this.result);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this._opts || Ni(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(e, t);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n};\nvar Ai = qe;\nqe.default = qe;\nlet Mi = st, Pi = hr, Ii = Ai, _i = se, te = class {\n  constructor(e = []) {\n    this.version = \"8.5.3\", this.plugins = this.normalize(e);\n  }\n  normalize(e) {\n    let t = [];\n    for (let r of e)\n      if (r.postcss === !0 ? r = r() : r.postcss && (r = r.postcss), typeof r == \"object\" && Array.isArray(r.plugins))\n        t = t.concat(r.plugins);\n      else if (typeof r == \"object\" && r.postcssPlugin)\n        t.push(r);\n      else if (typeof r == \"function\")\n        t.push(r);\n      else if (typeof r == \"object\" && (r.parse || r.stringify)) {\n        if (process.env.NODE_ENV !== \"production\")\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n      } else\n        throw new Error(r + \" is not a PostCSS plugin\");\n    return t;\n  }\n  process(e, t = {}) {\n    return !this.plugins.length && !t.parser && !t.stringifier && !t.syntax ? new Ii(this, e, t) : new Pi(this, e, t);\n  }\n  use(e) {\n    return this.plugins = this.plugins.concat(this.normalize([e])), this;\n  }\n};\nvar $i = te;\nte.default = te;\n_i.registerProcessor(te);\nMi.registerProcessor(te);\nlet pr = rt, dr = Ee, Li = D, Ti = Ze, mr = Re, gr = st, Di = Us, Ui = Oe, Bi = hr, Fi = tr, zi = ve, Wi = nt, lt = $i, ji = ot, yr = se, wr = it, Gi = xe, Vi = ar;\nfunction C(...s) {\n  return s.length === 1 && Array.isArray(s[0]) && (s = s[0]), new lt(s);\n}\nC.plugin = function(e, t) {\n  let r = !1;\n  function i(...l) {\n    console && console.warn && !r && (r = !0, console.warn(\n      e + `: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`\n    ), process.env.LANG && process.env.LANG.startsWith(\"cn\") && console.warn(\n      e + `: 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226`\n    ));\n    let a = t(...l);\n    return a.postcssPlugin = e, a.postcssVersion = new lt().version, a;\n  }\n  let n;\n  return Object.defineProperty(i, \"postcss\", {\n    get() {\n      return n || (n = i()), n;\n    }\n  }), i.process = function(l, a, o) {\n    return C([i(o)]).process(l, a);\n  }, i;\n};\nC.stringify = Gi;\nC.parse = Wi;\nC.fromJSON = Di;\nC.list = Fi;\nC.comment = (s) => new dr(s);\nC.atRule = (s) => new pr(s);\nC.decl = (s) => new mr(s);\nC.rule = (s) => new wr(s);\nC.root = (s) => new yr(s);\nC.document = (s) => new gr(s);\nC.CssSyntaxError = Ti;\nC.Declaration = mr;\nC.Container = Li;\nC.Processor = lt;\nC.Document = gr;\nC.Comment = dr;\nC.Warning = Vi;\nC.AtRule = pr;\nC.Result = ji;\nC.Input = Ui;\nC.Rule = wr;\nC.Root = yr;\nC.Node = zi;\nBi.registerPostcss(C);\nvar Hi = C;\nC.default = C;\nconst v = /* @__PURE__ */ ss(Hi);\nv.stringify;\nv.fromJSON;\nv.plugin;\nv.parse;\nv.list;\nv.document;\nv.comment;\nv.atRule;\nv.rule;\nv.decl;\nv.root;\nv.CssSyntaxError;\nv.Declaration;\nv.Container;\nv.Processor;\nv.Document;\nv.Comment;\nv.Warning;\nv.AtRule;\nv.Result;\nv.Input;\nv.Rule;\nv.Root;\nv.Node;\nconst Ji = /(max|min)-device-(width|height)/, At = new RegExp(Ji.source, \"g\"), Yi = {\n  postcssPlugin: \"postcss-custom-selectors\",\n  prepare() {\n    return {\n      postcssPlugin: \"postcss-custom-selectors\",\n      AtRule: function(s) {\n        s.params.match(At) && (s.params = s.params.replace(At, \"$1-$2\"));\n      }\n    };\n  }\n}, qi = {\n  postcssPlugin: \"postcss-hover-classes\",\n  prepare: function() {\n    const s = [];\n    return {\n      Rule: function(e) {\n        s.indexOf(e) === -1 && (s.push(e), e.selectors.forEach(function(t) {\n          if (!t.includes(\":\"))\n            return;\n          const r = t.replace(/\\n/g, \" \").split(\" \"), i = [];\n          r.forEach(function(l) {\n            const a = l.match(/::?([^:]+)/g);\n            if (!a) {\n              i.push(l);\n              return;\n            }\n            const o = l.substr(\n              0,\n              l.length - a.join(\"\").length\n            ), f = a.map(function(u) {\n              return u.replace(/\\(.*/g, \"\") !== \":hover\" || u.match(/^::/) ? u : (u = u.substr(1), u = u.replace(/\\(/g, \"\\\\(\"), u = u.replace(/\\)/g, \"\\\\)\"), \".\\\\:\" + u);\n            });\n            i.push(o + f.join(\"\"));\n          }), n(i.join(\" \"));\n          function n(l) {\n            l && l !== t && (e.selector += `,\n` + l);\n          }\n        }));\n      }\n    };\n  }\n}, Mt = {\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 Qi(s) {\n  let e = Mt[s.tagName] ? Mt[s.tagName] : s.tagName;\n  return e === \"link\" && s.attributes._cssText && (e = \"style\"), e;\n}\nfunction Pt(s, e) {\n  const t = e == null ? void 0 : e.stylesWithHoverClass.get(s);\n  if (t) return t;\n  const i = v([\n    Yi,\n    qi\n  ]).process(s).css;\n  return e == null || e.stylesWithHoverClass.set(s, i), i;\n}\nfunction xn() {\n  return {\n    stylesWithHoverClass: /* @__PURE__ */ new Map()\n  };\n}\nfunction Ki(s, e) {\n  var n;\n  const { doc: t, hackCss: r, cache: i } = e;\n  switch (s.type) {\n    case w.Document:\n      return t.implementation.createDocument(null, \"\", null);\n    case w.DocumentType:\n      return t.implementation.createDocumentType(\n        s.name || \"html\",\n        s.publicId,\n        s.systemId\n      );\n    case w.Element: {\n      const l = Qi(s);\n      let a;\n      s.isSVG ? a = t.createElementNS(\"http://www.w3.org/2000/svg\", l) : (\n        // If the tag name is a custom element name\n        (s.isCustom && // If the browser supports custom elements\n        ((n = t.defaultView) != null && n.customElements) && // If the custom element hasn't been defined yet\n        !t.defaultView.customElements.get(s.tagName) && t.defaultView.customElements.define(\n          s.tagName,\n          class extends t.defaultView.HTMLElement {\n          }\n        ), a = t.createElement(l))\n      );\n      const o = {};\n      for (const f in s.attributes) {\n        if (!Object.prototype.hasOwnProperty.call(s.attributes, f))\n          continue;\n        let u = s.attributes[f];\n        if (l === \"option\" && f === \"selected\" && u === !1 || u === null)\n          continue;\n        if (u === !0 && (u = \"\"), f.startsWith(\"rr_\")) {\n          o[f] = u;\n          continue;\n        }\n        const h = l === \"textarea\" && f === \"value\", d = l === \"style\" && f === \"_cssText\";\n        if (d && r && typeof u == \"string\" && (u = Pt(u, i)), (h || d) && typeof u == \"string\") {\n          a.appendChild(t.createTextNode(u)), s.childNodes = [];\n          continue;\n        }\n        try {\n          if (s.isSVG && f === \"xlink:href\")\n            a.setAttributeNS(\n              \"http://www.w3.org/1999/xlink\",\n              f,\n              u.toString()\n            );\n          else if (f === \"onload\" || f === \"onclick\" || f.substring(0, 7) === \"onmouse\")\n            a.setAttribute(\"_\" + f, u.toString());\n          else if (l === \"meta\" && s.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && f === \"content\") {\n            a.setAttribute(\"csp-content\", u.toString());\n            continue;\n          } else l === \"link\" && (s.attributes.rel === \"preload\" || s.attributes.rel === \"modulepreload\") && s.attributes.as === \"script\" || l === \"link\" && s.attributes.rel === \"prefetch\" && typeof s.attributes.href == \"string\" && s.attributes.href.endsWith(\".js\") || (l === \"img\" && s.attributes.srcset && s.attributes.rr_dataURL ? a.setAttribute(\"original-srcset\", s.attributes.srcset) : a.setAttribute(f, u.toString()));\n        } catch {\n        }\n      }\n      for (const f in o) {\n        const u = o[f];\n        if (l === \"canvas\" && f === \"rr_dataURL\") {\n          const h = t.createElement(\"img\");\n          h.onload = () => {\n            const d = a.getContext(\"2d\");\n            d && d.drawImage(h, 0, 0, h.width, h.height);\n          }, h.src = u.toString(), a.RRNodeType && (a.rr_dataURL = u.toString());\n        } else if (l === \"img\" && f === \"rr_dataURL\") {\n          const h = a;\n          h.currentSrc.startsWith(\"data:\") || (h.setAttribute(\"original-src\", s.attributes.src), h.src = u.toString());\n        }\n        if (f === \"rr_width\")\n          a.style.width = u.toString();\n        else if (f === \"rr_height\")\n          a.style.height = u.toString();\n        else if (f === \"rr_mediaCurrentTime\" && typeof u == \"number\")\n          a.currentTime = u;\n        else if (f === \"rr_mediaState\")\n          switch (u) {\n            case \"played\":\n              a.play().catch((h) => console.warn(\"media playback error\", h));\n              break;\n            case \"paused\":\n              a.pause();\n              break;\n          }\n        else f === \"rr_mediaPlaybackRate\" && typeof u == \"number\" ? a.playbackRate = u : f === \"rr_mediaMuted\" && typeof u == \"boolean\" ? a.muted = u : f === \"rr_mediaLoop\" && typeof u == \"boolean\" ? a.loop = u : f === \"rr_mediaVolume\" && typeof u == \"number\" && (a.volume = u);\n      }\n      if (s.isShadowHost)\n        if (!a.shadowRoot)\n          a.attachShadow({ mode: \"open\" });\n        else\n          for (; a.shadowRoot.firstChild; )\n            a.shadowRoot.removeChild(a.shadowRoot.firstChild);\n      return a;\n    }\n    case w.Text:\n      return t.createTextNode(\n        s.isStyle && r ? Pt(s.textContent, i) : s.textContent\n      );\n    case w.CDATA:\n      return t.createCDATASection(s.textContent);\n    case w.Comment:\n      return t.createComment(s.textContent);\n    default:\n      return null;\n  }\n}\nfunction br(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    skipChild: i = !1,\n    hackCss: n = !0,\n    afterAppend: l,\n    cache: a\n  } = e;\n  if (r.has(s.id)) {\n    const f = r.getNode(s.id), u = r.getMeta(f);\n    if (Ir(u, s)) return r.getNode(s.id);\n  }\n  let o = Ki(s, { doc: t, hackCss: n, cache: a });\n  if (!o)\n    return null;\n  if (s.rootId && r.getNode(s.rootId) !== t && r.replace(s.rootId, t), s.type === w.Document && (t.close(), t.open(), s.compatMode === \"BackCompat\" && s.childNodes && s.childNodes[0].type !== w.DocumentType && (s.childNodes[0].type === w.Element && \"xmlns\" in s.childNodes[0].attributes && s.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\" ? t.write(\n    '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">'\n  ) : t.write(\n    '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">'\n  )), o = t), r.add(o, s), (s.type === w.Document || s.type === w.Element) && !i)\n    for (const f of s.childNodes) {\n      const u = br(f, {\n        doc: t,\n        mirror: r,\n        skipChild: !1,\n        hackCss: n,\n        afterAppend: l,\n        cache: a\n      });\n      if (!u) {\n        console.warn(\"Failed to rebuild\", f);\n        continue;\n      }\n      if (f.isShadow && Qe(o) && o.shadowRoot)\n        o.shadowRoot.appendChild(u);\n      else if (s.type === w.Document && f.type == w.Element) {\n        const h = u;\n        let d = null;\n        h.childNodes.forEach((g) => {\n          g.nodeName === \"BODY\" && (d = g);\n        }), d ? (h.removeChild(d), o.appendChild(u), h.appendChild(d)) : o.appendChild(u);\n      } else\n        o.appendChild(u);\n      l && l(u, f.id);\n    }\n  return o;\n}\nfunction Xi(s, e) {\n  function t(r) {\n    e(r);\n  }\n  for (const r of s.getIds())\n    s.has(r) && t(s.getNode(r));\n}\nfunction Zi(s, e) {\n  const t = e.getMeta(s);\n  if ((t == null ? void 0 : t.type) !== w.Element)\n    return;\n  const r = s;\n  for (const i in t.attributes) {\n    if (!(Object.prototype.hasOwnProperty.call(t.attributes, i) && i.startsWith(\"rr_\")))\n      continue;\n    const n = t.attributes[i];\n    i === \"rr_scrollLeft\" && (r.scrollLeft = n), i === \"rr_scrollTop\" && (r.scrollTop = n);\n  }\n}\nfunction vn(s, e) {\n  const {\n    doc: t,\n    onVisit: r,\n    hackCss: i = !0,\n    afterAppend: n,\n    cache: l,\n    mirror: a = new Ke()\n  } = e, o = br(s, {\n    doc: t,\n    mirror: a,\n    skipChild: !1,\n    hackCss: i,\n    afterAppend: n,\n    cache: l\n  });\n  return Xi(a, (f) => {\n    r && r(f), Zi(f, a);\n  }), o;\n}\nexport {\n  ut as IGNORED_NODE,\n  Ke as Mirror,\n  w as NodeType,\n  Pt as adaptCssForReplay,\n  br as buildNodeWithSN,\n  $e as classMatchesRegex,\n  nn as cleanupSnapshot,\n  xn as createCache,\n  tn as createMirror,\n  Er as escapeImportStatement,\n  $t as extractFileExtension,\n  Nr as fixSafariColons,\n  Lr as genId,\n  _r as getInputType,\n  Jr as ignoreAttribute,\n  Pr as is2DCanvasBlank,\n  Ar as isCSSImportRule,\n  _t as isCSSStyleRule,\n  Qe as isElement,\n  Ae as isNativeShadowDom,\n  Ir as isNodeMetaEqual,\n  xr as isShadowRoot,\n  Mr as maskInputValue,\n  qr as needMaskingText,\n  vn as rebuild,\n  K as serializeNodeWithId,\n  rn as snapshot,\n  kr as stringifyRule,\n  de as stringifyStylesheet,\n  Ce as toLowerCase,\n  Hr as transformAttribute,\n  sn as visitSnapshot\n};\n//# sourceMappingURL=rrweb-snapshot.js.map\n","var d = /* @__PURE__ */ ((h) => (h[h.DomContentLoaded = 0] = \"DomContentLoaded\", h[h.Load = 1] = \"Load\", h[h.FullSnapshot = 2] = \"FullSnapshot\", h[h.IncrementalSnapshot = 3] = \"IncrementalSnapshot\", h[h.Meta = 4] = \"Meta\", h[h.Custom = 5] = \"Custom\", h[h.Plugin = 6] = \"Plugin\", h[h.Device = 24] = \"Device\", h[h.SailfishCustom = 25] = \"SailfishCustom\", h))(d || {}), u = /* @__PURE__ */ ((h) => (h[h.Mutation = 0] = \"Mutation\", h[h.MouseMove = 1] = \"MouseMove\", h[h.MouseInteraction = 2] = \"MouseInteraction\", h[h.Scroll = 3] = \"Scroll\", h[h.ViewportResize = 4] = \"ViewportResize\", h[h.Input = 5] = \"Input\", h[h.TouchMove = 6] = \"TouchMove\", h[h.MediaInteraction = 7] = \"MediaInteraction\", h[h.StyleSheetRule = 8] = \"StyleSheetRule\", h[h.CanvasMutation = 9] = \"CanvasMutation\", h[h.Font = 10] = \"Font\", h[h.Log = 11] = \"Log\", h[h.Drag = 12] = \"Drag\", h[h.StyleDeclaration = 13] = \"StyleDeclaration\", h[h.Selection = 14] = \"Selection\", h[h.AdoptedStyleSheet = 15] = \"AdoptedStyleSheet\", h[h.CustomElement = 16] = \"CustomElement\", h[h.Typing = 17] = \"Typing\", h))(u || {}), C = /* @__PURE__ */ ((h) => (h.Append = \"append\", h.Insert = \"insert\", h.Delete = \"delete\", h.Replace = \"replace\", h))(C || {}), D = /* @__PURE__ */ ((h) => (h[h.MouseUp = 0] = \"MouseUp\", h[h.MouseDown = 1] = \"MouseDown\", h[h.Click = 2] = \"Click\", h[h.ContextMenu = 3] = \"ContextMenu\", h[h.DblClick = 4] = \"DblClick\", h[h.Focus = 5] = \"Focus\", h[h.Blur = 6] = \"Blur\", h[h.TouchStart = 7] = \"TouchStart\", h[h.TouchMove_Departed = 8] = \"TouchMove_Departed\", h[h.TouchEnd = 9] = \"TouchEnd\", h[h.TouchCancel = 10] = \"TouchCancel\", h))(D || {}), g = /* @__PURE__ */ ((h) => (h[h.Mouse = 0] = \"Mouse\", h[h.Pen = 1] = \"Pen\", h[h.Touch = 2] = \"Touch\", h))(g || {}), k = /* @__PURE__ */ ((h) => (h[h[\"2D\"] = 0] = \"2D\", h[h.WebGL = 1] = \"WebGL\", h[h.WebGL2 = 2] = \"WebGL2\", h))(k || {}), L = /* @__PURE__ */ ((h) => (h[h.Play = 0] = \"Play\", h[h.Pause = 1] = \"Pause\", h[h.Seeked = 2] = \"Seeked\", h[h.VolumeChange = 3] = \"VolumeChange\", h[h.RateChange = 4] = \"RateChange\", h))(L || {}), b = /* @__PURE__ */ ((h) => (h.Start = \"start\", h.Pause = \"pause\", h.Resume = \"resume\", h.Resize = \"resize\", h.Finish = \"finish\", h.FullsnapshotRebuilded = \"fullsnapshot-rebuilded\", h.LoadStylesheetStart = \"load-stylesheet-start\", h.LoadStylesheetEnd = \"load-stylesheet-end\", h.SkipStart = \"skip-start\", h.SkipEnd = \"skip-end\", h.MouseInteraction = \"mouse-interaction\", h.EventCast = \"event-cast\", h.CustomEvent = \"custom-event\", h.Flush = \"flush\", h.StateChange = \"state-change\", h.PlayBack = \"play-back\", h.Destroy = \"destroy\", h))(b || {});\nexport {\n  k as CanvasContext,\n  d as EventType,\n  u as IncrementalSource,\n  L as MediaInteractions,\n  D as MouseInteractions,\n  g as PointerTypes,\n  b as ReplayerEvents,\n  C as TextDeltaOp\n};\n//# sourceMappingURL=types.js.map\n","import type { RRIFrameElement, RRNode } from '@sailfish-rrweb/rrdom';\nimport type {\n  IMirror,\n  Mirror,\n  SlimDOMOptions,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport {\n  IGNORED_NODE,\n  classMatchesRegex,\n  isShadowRoot,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  DeprecatedMirror,\n  DocumentDimension,\n  IWindow,\n  addedNodeMutation,\n  blockClass,\n  hookResetter,\n  listenerHandler,\n  textMutation,\n  throttleOptions,\n} from '@sailfish-rrweb/types';\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  const el: HTMLElement | null =\n    node.nodeType === node.ELEMENT_NODE\n      ? (node as HTMLElement)\n      : node.parentElement;\n  return el;\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  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  try {\n    if (typeof blockClass === 'string') {\n      if (el.classList.contains(blockClass)) return true;\n      if (checkAncestors && el.closest('.' + blockClass) !== null) return true;\n    } else {\n      if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n    }\n  } catch (e) {\n    // e\n  }\n  if (blockSelector) {\n    if (el.matches(blockSelector)) return true;\n    if (checkAncestors && el.closest(blockSelector) !== null) return true;\n  }\n  return false;\n}\n\nexport function isSerialized(n: Node, mirror: Mirror): boolean {\n  return mirror.getId(n) !== -1;\n}\n\nexport function isIgnored(\n  n: Node,\n  mirror: Mirror,\n  slimDOMOptions: SlimDOMOptions,\n): boolean {\n  if ((n as Element).tagName === 'TITLE' && slimDOMOptions.headTitleMutations) {\n    // we do this check here but not in rrweb-snapshot\n    // to block mutations/animations on the title.\n    // the headTitleMutations option isn't intended to block recording of the initial value\n    return true;\n  }\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","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      }\n      throw error;\n    }\n  }) as unknown as T;\n  return rrwebWrapped;\n};\n","import type { ICrossOriginIframeMirror } from '@sailfish-rrweb/types';\nexport default class CrossOriginIframeMirror\n  implements ICrossOriginIframeMirror\n{\n  private iframeIdToRemoteIdMap: WeakMap<\n    HTMLIFrameElement,\n    Map<number, number>\n  > = new WeakMap();\n  private iframeRemoteIdToIdMap: WeakMap<\n    HTMLIFrameElement,\n    Map<number, number>\n  > = new WeakMap();\n\n  constructor(private generateIdFn: () => number) {}\n\n  getId(\n    iframe: HTMLIFrameElement,\n    remoteId: number,\n    idToRemoteMap?: Map<number, number>,\n    remoteToIdMap?: Map<number, number>,\n  ): number {\n    const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n\n    let id = idToRemoteIdMap.get(remoteId);\n    if (!id) {\n      id = this.generateIdFn();\n      idToRemoteIdMap.set(remoteId, id);\n      remoteIdToIdMap.set(id, remoteId);\n    }\n    return id;\n  }\n\n  getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[] {\n    const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return remoteId.map((id) =>\n      this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap),\n    );\n  }\n\n  getRemoteId(\n    iframe: HTMLIFrameElement,\n    id: number,\n    map?: Map<number, number>,\n  ): number {\n    const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n\n    if (typeof id !== 'number') return id;\n\n    const remoteId = remoteIdToIdMap.get(id);\n    if (!remoteId) return -1;\n    return remoteId;\n  }\n\n  getRemoteIds(iframe: HTMLIFrameElement, ids: number[]): number[] {\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n\n    return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n  }\n\n  reset(iframe?: HTMLIFrameElement) {\n    if (!iframe) {\n      this.iframeIdToRemoteIdMap = new WeakMap();\n      this.iframeRemoteIdToIdMap = new WeakMap();\n      return;\n    }\n    this.iframeIdToRemoteIdMap.delete(iframe);\n    this.iframeRemoteIdToIdMap.delete(iframe);\n  }\n\n  private getIdToRemoteIdMap(iframe: HTMLIFrameElement) {\n    let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n    if (!idToRemoteIdMap) {\n      idToRemoteIdMap = new Map();\n      this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n    }\n    return idToRemoteIdMap;\n  }\n\n  private getRemoteIdToIdMap(iframe: HTMLIFrameElement) {\n    let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n    if (!remoteIdToIdMap) {\n      remoteIdToIdMap = new Map();\n      this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n    }\n    return remoteIdToIdMap;\n  }\n}\n","import type {\n  Mirror,\n  serializedNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport { NodeType, genId } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  eventWithTime,\n  eventWithoutTime,\n  mutationCallBack,\n} from '@sailfish-rrweb/types';\nimport { EventType, IncrementalSource } from '@sailfish-rrweb/types';\nimport type { CrossOriginIframeMessageEvent } from '../types';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror';\nimport type { StylesheetManager } from './stylesheet-manager';\n\nexport class IframeManager {\n  private iframes: WeakMap<HTMLIFrameElement, true> = new WeakMap();\n  private crossOriginIframeMap: WeakMap<MessageEventSource, HTMLIFrameElement> =\n    new WeakMap();\n  public crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n  public crossOriginIframeStyleMirror: CrossOriginIframeMirror;\n  public crossOriginIframeRootIdMap: WeakMap<HTMLIFrameElement, number> =\n    new WeakMap();\n  private mirror: Mirror;\n  private mutationCb: mutationCallBack;\n  // @ts-expect-error\n  private wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n  private loadListener?: (iframeEl: HTMLIFrameElement) => unknown;\n  private stylesheetManager: StylesheetManager;\n  private recordCrossOriginIframes: boolean;\n\n  constructor(options: {\n    mirror: Mirror;\n    mutationCb: mutationCallBack;\n    stylesheetManager: StylesheetManager;\n    recordCrossOriginIframes: boolean;\n    wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.wrappedEmit = options.wrappedEmit;\n    this.stylesheetManager = options.stylesheetManager;\n    this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n    this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n      this.stylesheetManager.styleMirror.generateId.bind(\n        this.stylesheetManager.styleMirror,\n      ),\n    );\n    this.mirror = options.mirror;\n    if (this.recordCrossOriginIframes) {\n      window.addEventListener('message', this.handleMessage.bind(this));\n    }\n  }\n\n  public addIframe(iframeEl: HTMLIFrameElement) {\n    this.iframes.set(iframeEl, true);\n    if (iframeEl.contentWindow)\n      this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n  }\n\n  public addLoadListener(cb: (iframeEl: HTMLIFrameElement) => unknown) {\n    this.loadListener = cb;\n  }\n\n  public attachIframe(\n    iframeEl: HTMLIFrameElement,\n    childSn: serializedNodeWithId,\n  ) {\n    this.mutationCb({\n      adds: [\n        {\n          parentId: this.mirror.getId(iframeEl),\n          nextId: null,\n          node: childSn,\n        },\n      ],\n      removes: [],\n      texts: [],\n      attributes: [],\n      isAttachIframe: true,\n    });\n\n    // Receive messages (events) coming from cross-origin iframes that are nested in this same-origin iframe.\n    if (this.recordCrossOriginIframes)\n      iframeEl.contentWindow?.addEventListener(\n        'message',\n        this.handleMessage.bind(this),\n      );\n\n    this.loadListener?.(iframeEl);\n\n    if (\n      iframeEl.contentDocument &&\n      iframeEl.contentDocument.adoptedStyleSheets &&\n      iframeEl.contentDocument.adoptedStyleSheets.length > 0\n    )\n      this.stylesheetManager.adoptStyleSheets(\n        iframeEl.contentDocument.adoptedStyleSheets,\n        this.mirror.getId(iframeEl.contentDocument),\n      );\n  }\n  private handleMessage(message: MessageEvent | CrossOriginIframeMessageEvent) {\n    const crossOriginMessageEvent = message as CrossOriginIframeMessageEvent;\n    if (\n      crossOriginMessageEvent.data.type !== '@sailfish-rrweb/rrweb' ||\n      // To filter out the rrweb messages which are forwarded by some sites.\n      crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin\n    )\n      return;\n  }\n\n  // @ts-expect-error\n  private transformCrossOriginEvent(\n    iframeEl: HTMLIFrameElement,\n    e: eventWithTime,\n  ): eventWithTime | false {\n    switch (e.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        /**\n         * Replaces the original id of the iframe with a new set of unique ids\n         */\n        this.replaceIdOnNode(e.data.node, iframeEl);\n        const rootId = e.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e.data.node, rootId);\n        return {\n          timestamp: e.timestamp,\n          type: EventType.IncrementalSnapshot,\n          data: {\n            source: IncrementalSource.Mutation,\n            adds: [\n              {\n                parentId: this.mirror.getId(iframeEl),\n                nextId: null,\n                node: e.data.node,\n              },\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true,\n          },\n        };\n      }\n      case EventType.Meta:\n      case EventType.Load:\n      case EventType.DomContentLoaded: {\n        return false;\n      }\n      case EventType.Plugin: {\n        return e;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e.data.payload as {\n            id?: unknown;\n            parentId?: unknown;\n            previousId?: unknown;\n            nextId?: unknown;\n          },\n          iframeEl,\n          ['id', 'parentId', 'previousId', 'nextId'],\n        );\n        return e;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e.data.source) {\n          case IncrementalSource.Mutation: {\n            e.data.adds.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\n                'parentId',\n                'nextId',\n                'previousId',\n              ]);\n              this.replaceIdOnNode(n.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n.node, rootId);\n            });\n            e.data.removes.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['parentId', 'id']);\n            });\n            e.data.attributes.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['id']);\n            });\n            e.data.texts.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['id']);\n            });\n            return e;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, ['id']);\n            });\n            return e;\n          }\n          case IncrementalSource.ViewportResize: {\n            // can safely ignore these events\n            return false;\n          }\n          case IncrementalSource.MediaInteraction:\n          case IncrementalSource.MouseInteraction:\n          case IncrementalSource.Scroll:\n          case IncrementalSource.CanvasMutation:\n          case IncrementalSource.Input: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            return e;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n            return e;\n          }\n          case IncrementalSource.Font: {\n            // fine as-is no modification needed\n            return e;\n          }\n          case IncrementalSource.Selection: {\n            e.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, ['start', 'end']);\n            });\n            return e;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n            e.data.styles?.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, ['styleId']);\n            });\n            return e;\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  private replace<T extends Record<string, unknown>>(\n    iframeMirror: CrossOriginIframeMirror,\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    for (const key of keys) {\n      if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number') continue;\n      if (Array.isArray(obj[key])) {\n        obj[key] = iframeMirror.getIds(\n          iframeEl,\n          obj[key] as number[],\n        ) as T[keyof T];\n      } else {\n        (obj[key] as number) = iframeMirror.getId(iframeEl, obj[key] as number);\n      }\n    }\n\n    return obj;\n  }\n\n  private replaceIds<T extends Record<string, unknown>>(\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n  }\n\n  private replaceStyleIds<T extends Record<string, unknown>>(\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n  }\n\n  private replaceIdOnNode(\n    node: serializedNodeWithId,\n    iframeEl: HTMLIFrameElement,\n  ) {\n    this.replaceIds(node, iframeEl, ['id', 'rootId']);\n    if ('childNodes' in node) {\n      node.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n\n  private patchRootIdOnNode(node: serializedNodeWithId, rootId: number) {\n    if (node.type !== NodeType.Document && !node.rootId) node.rootId = rootId;\n    if ('childNodes' in node) {\n      node.childNodes.forEach((child) => {\n        this.patchRootIdOnNode(child, rootId);\n      });\n    }\n  }\n}\n","import { TextDeltaOp } from '@sailfish-rrweb/types';\nimport type { TextDelta } from '@sailfish-rrweb/types';\n\n/**\n * Result of comparing two strings for text delta\n */\nexport interface DiffResult {\n  delta: TextDelta | null;\n  /** Estimated byte size of the delta representation */\n  deltaSize: number;\n  /** Byte size of full text representation */\n  fullTextSize: number;\n}\n\n/**\n * Estimates the JSON serialization size of an object\n */\nfunction estimateJsonSize(obj: unknown): number {\n  return JSON.stringify(obj).length;\n}\n\n/**\n * Computes the diff between oldText and newText.\n * Returns the most efficient delta operation.\n *\n * Algorithm:\n * 1. Check for simple append (most common case for streaming)\n * 2. Check for simple delete from end (backspace)\n * 3. Find common prefix and suffix to identify middle change\n * 4. Create insert/delete/replace as appropriate\n */\nexport function computeTextDiff(\n  oldText: string | null,\n  newText: string | null,\n): DiffResult {\n  const oldStr = oldText || '';\n  const newStr = newText || '';\n  const fullTextSize = estimateJsonSize({ value: newStr });\n\n  // Empty old text - always use full text (establishes baseline)\n  if (oldStr.length === 0) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // No change\n  if (oldStr === newStr) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // Complete clear - full text is cleaner\n  if (newStr.length === 0) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // Case 1: Simple append (most common - streaming text)\n  if (newStr.startsWith(oldStr)) {\n    const appendedText = newStr.slice(oldStr.length);\n    const delta: TextDelta = {\n      op: TextDeltaOp.Append,\n      text: appendedText,\n    };\n    const deltaSize = estimateJsonSize({ delta });\n    return { delta, deltaSize, fullTextSize };\n  }\n\n  // Case 2: Simple delete from end (backspace)\n  if (oldStr.startsWith(newStr)) {\n    const deleteLength = oldStr.length - newStr.length;\n    const delta: TextDelta = {\n      op: TextDeltaOp.Delete,\n      pos: newStr.length,\n      length: deleteLength,\n    };\n    const deltaSize = estimateJsonSize({ delta });\n    return { delta, deltaSize, fullTextSize };\n  }\n\n  // Case 3: Find common prefix\n  let commonPrefixLen = 0;\n  const minLen = Math.min(oldStr.length, newStr.length);\n  while (\n    commonPrefixLen < minLen &&\n    oldStr[commonPrefixLen] === newStr[commonPrefixLen]\n  ) {\n    commonPrefixLen++;\n  }\n\n  // Case 4: Find common suffix (from the non-prefix portion)\n  let commonSuffixLen = 0;\n  const oldRemaining = oldStr.length - commonPrefixLen;\n  const newRemaining = newStr.length - commonPrefixLen;\n  const maxSuffixLen = Math.min(oldRemaining, newRemaining);\n  while (\n    commonSuffixLen < maxSuffixLen &&\n    oldStr[oldStr.length - 1 - commonSuffixLen] ===\n      newStr[newStr.length - 1 - commonSuffixLen]\n  ) {\n    commonSuffixLen++;\n  }\n\n  // Determine what changed in the middle\n  const oldMiddleLen = oldStr.length - commonPrefixLen - commonSuffixLen;\n  const newMiddleLen = newStr.length - commonPrefixLen - commonSuffixLen;\n  const newMiddleText = newStr.slice(\n    commonPrefixLen,\n    newStr.length - commonSuffixLen,\n  );\n\n  let delta: TextDelta;\n\n  if (oldMiddleLen === 0 && newMiddleLen > 0) {\n    // Pure insert\n    delta = {\n      op: TextDeltaOp.Insert,\n      pos: commonPrefixLen,\n      text: newMiddleText,\n    };\n  } else if (oldMiddleLen > 0 && newMiddleLen === 0) {\n    // Pure delete\n    delta = {\n      op: TextDeltaOp.Delete,\n      pos: commonPrefixLen,\n      length: oldMiddleLen,\n    };\n  } else {\n    // Replace\n    delta = {\n      op: TextDeltaOp.Replace,\n      pos: commonPrefixLen,\n      deleteCount: oldMiddleLen,\n      text: newMiddleText,\n    };\n  }\n\n  const deltaSize = estimateJsonSize({ delta });\n  return { delta, deltaSize, fullTextSize };\n}\n\n/**\n * Determines if delta should be used based on size comparison.\n * Includes a threshold to prefer full text when sizes are similar\n * (full text is simpler and more debuggable).\n */\nexport function shouldUseDelta(result: DiffResult): boolean {\n  if (!result.delta) return false;\n  // Use delta only if it saves at least 20% space\n  return result.deltaSize < result.fullTextSize * 0.8;\n}\n\n/**\n * Applies a delta operation to the current text to produce new text.\n * Used during replay to reconstruct the value.\n */\nexport function applyTextDelta(\n  currentText: string | null,\n  delta: TextDelta,\n): string {\n  const text = currentText || '';\n\n  switch (delta.op) {\n    case TextDeltaOp.Append:\n      return text + delta.text;\n\n    case TextDeltaOp.Insert:\n      return text.slice(0, delta.pos) + delta.text + text.slice(delta.pos);\n\n    case TextDeltaOp.Delete:\n      return text.slice(0, delta.pos) + text.slice(delta.pos + delta.length);\n\n    case TextDeltaOp.Replace:\n      return (\n        text.slice(0, delta.pos) +\n        delta.text +\n        text.slice(delta.pos + delta.deleteCount)\n      );\n\n    default:\n      // Unknown operation - return unchanged (defensive)\n      return text;\n  }\n}\n","import {\n  IGNORED_NODE,\n  Mirror,\n  getInputType,\n  ignoreAttribute,\n  isNativeShadowDom,\n  isShadowRoot,\n  maskInputValue,\n  needMaskingText,\n  serializeNodeWithId,\n  toLowerCase,\n  transformAttribute,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  Optional,\n  addedNodeMutation,\n  attributeCursor,\n  mutationRecord,\n  removedNodeMutation,\n  textCursor,\n  textMutation,\n} from '@sailfish-rrweb/types';\nimport { computeTextDiff, shouldUseDelta } from './text-diff';\nimport type { MutationBufferParam, observerParam } from '../types';\nimport {\n  closestElementOfNode,\n  getShadowHost,\n  hasShadowRoot,\n  inDom,\n  isAncestorRemoved,\n  isBlocked,\n  isIgnored,\n  isSerialized,\n  isSerializedIframe,\n  isSerializedStylesheet,\n} from '../utils';\n\ntype DoubleLinkedListNode = {\n  previous: DoubleLinkedListNode | null;\n  next: DoubleLinkedListNode | null;\n  value: NodeInLinkedList;\n};\ntype NodeInLinkedList = Node & {\n  __ln: DoubleLinkedListNode;\n};\n\nfunction isNodeInLinkedList(n: Node | NodeInLinkedList): n is NodeInLinkedList {\n  return '__ln' in n;\n}\n\nclass DoubleLinkedList {\n  public length = 0;\n  public head: DoubleLinkedListNode | null = null;\n  public tail: DoubleLinkedListNode | null = null;\n\n  public get(position: number) {\n    if (position >= this.length) {\n      throw new Error('Position outside of list range');\n    }\n\n    let current = this.head;\n    for (let index = 0; index < position; index++) {\n      current = current?.next || null;\n    }\n    return current;\n  }\n\n  public addNode(n: Node) {\n    const node: DoubleLinkedListNode = {\n      value: n as NodeInLinkedList,\n      previous: null,\n      next: null,\n    };\n    (n as NodeInLinkedList).__ln = node;\n    if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n      const current = n.previousSibling.__ln.next;\n      node.next = current;\n      node.previous = n.previousSibling.__ln;\n      n.previousSibling.__ln.next = node;\n      if (current) {\n        current.previous = node;\n      }\n    } else if (\n      n.nextSibling &&\n      isNodeInLinkedList(n.nextSibling) &&\n      n.nextSibling.__ln.previous\n    ) {\n      const current = n.nextSibling.__ln.previous;\n      node.previous = current;\n      node.next = n.nextSibling.__ln;\n      n.nextSibling.__ln.previous = node;\n      if (current) {\n        current.next = node;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node;\n      }\n      node.next = this.head;\n      this.head = node;\n    }\n    if (node.next === null) {\n      this.tail = node;\n    }\n    this.length++;\n  }\n\n  public removeNode(n: NodeInLinkedList) {\n    const current = n.__ln;\n    if (!this.head) {\n      return;\n    }\n\n    if (!current.previous) {\n      this.head = current.next;\n      if (this.head) {\n        this.head.previous = null;\n      } else {\n        this.tail = null;\n      }\n    } else {\n      current.previous.next = current.next;\n      if (current.next) {\n        current.next.previous = current.previous;\n      } else {\n        this.tail = current.previous;\n      }\n    }\n    if (n.__ln) {\n      delete (n as Optional<NodeInLinkedList, '__ln'>).__ln;\n    }\n    this.length--;\n  }\n}\n\nconst moveKey = (id: number, parentId: number) => `${id}@${parentId}`;\n\n/**\n * controls behaviour of a MutationObserver\n */\nexport default class MutationBuffer {\n  private frozen = false;\n  private locked = false;\n\n  private texts: textCursor[] = [];\n  private attributes: attributeCursor[] = [];\n  private attributeMap = new WeakMap<Node, attributeCursor>();\n  private removes: removedNodeMutation[] = [];\n  private mapRemoves: Node[] = [];\n\n  private movedMap: Record<string, true> = {};\n\n  /**\n   * the browser MutationObserver emits multiple mutations after\n   * a delay for performance reasons, making tracing added nodes hard\n   * in our `processMutations` callback function.\n   * For example, if we append an element el_1 into body, and then append\n   * another element el_2 into el_1, these two mutations may be passed to the\n   * callback function together when the two operations were done.\n   * Generally we need to trace child nodes of newly added nodes, but in this\n   * case if we count el_2 as el_1's child node in the first mutation record,\n   * then we will count el_2 again in the second mutation record which was\n   * duplicated.\n   * To avoid of duplicate counting added nodes, we use a Set to store\n   * added nodes and its child nodes during iterate mutation records. Then\n   * collect added nodes from the Set which have no duplicate copy. But\n   * this also causes newly added nodes will not be serialized with id ASAP,\n   * which means all the id related calculation should be lazy too.\n   */\n  private addedSet = new Set<Node>();\n  private movedSet = new Set<Node>();\n  private droppedSet = new Set<Node>();\n\n  private mutationCb: observerParam['mutationCb'];\n  private blockClass: observerParam['blockClass'];\n  private blockSelector: observerParam['blockSelector'];\n  private maskTextClass: observerParam['maskTextClass'];\n  private maskTextSelector: observerParam['maskTextSelector'];\n  private inlineStylesheet: observerParam['inlineStylesheet'];\n  private maskInputOptions: observerParam['maskInputOptions'];\n  private maskTextFn: observerParam['maskTextFn'];\n  private maskInputFn: observerParam['maskInputFn'];\n  private keepIframeSrcFn: observerParam['keepIframeSrcFn'];\n  private recordCanvas: observerParam['recordCanvas'];\n  private inlineImages: observerParam['inlineImages'];\n  private slimDOMOptions: observerParam['slimDOMOptions'];\n  private dataURLOptions: observerParam['dataURLOptions'];\n  private doc: observerParam['doc'];\n  private mirror: observerParam['mirror'];\n  private iframeManager: observerParam['iframeManager'];\n  private stylesheetManager: observerParam['stylesheetManager'];\n  private shadowDomManager: observerParam['shadowDomManager'];\n  private canvasManager: observerParam['canvasManager'];\n  private processedNodeManager: observerParam['processedNodeManager'];\n  private unattachedDoc: HTMLDocument;\n\n  public init(options: MutationBufferParam) {\n    (\n      [\n        'mutationCb',\n        'blockClass',\n        'blockSelector',\n        'maskTextClass',\n        'maskTextSelector',\n        'inlineStylesheet',\n        'maskInputOptions',\n        'maskTextFn',\n        'maskInputFn',\n        'keepIframeSrcFn',\n        'recordCanvas',\n        'inlineImages',\n        'slimDOMOptions',\n        'dataURLOptions',\n        'doc',\n        'mirror',\n        'iframeManager',\n        'stylesheetManager',\n        'shadowDomManager',\n        'canvasManager',\n        'processedNodeManager',\n      ] as const\n    ).forEach((key) => {\n      // just a type trick, the runtime result is correct\n      this[key] = options[key] as never;\n    });\n  }\n\n  public freeze() {\n    this.frozen = true;\n    this.canvasManager.freeze();\n  }\n\n  public unfreeze() {\n    this.frozen = false;\n    this.canvasManager.unfreeze();\n    this.emit();\n  }\n\n  public isFrozen() {\n    return this.frozen;\n  }\n\n  public lock() {\n    this.locked = true;\n    this.canvasManager.lock();\n  }\n\n  public unlock() {\n    this.locked = false;\n    this.canvasManager.unlock();\n    this.emit();\n  }\n\n  public reset() {\n    this.shadowDomManager.reset();\n    this.canvasManager.reset();\n  }\n\n  public processMutations = (mutations: mutationRecord[]) => {\n    mutations.forEach(this.processMutation); // adds mutations to the buffer\n    this.emit(); // clears buffer if not locked/frozen\n  };\n\n  public emit = () => {\n    if (this.frozen || this.locked) {\n      return;\n    }\n\n    // delay any modification of the mirror until this function\n    // so that the mirror for takeFullSnapshot doesn't get mutated while it's event is being processed\n\n    const adds: addedNodeMutation[] = [];\n    const addedIds = new Set<number>();\n\n    /**\n     * Sometimes child node may be pushed before its newly added\n     * parent, so we init a queue to store these nodes.\n     */\n    const addList = new DoubleLinkedList();\n    const getNextId = (n: Node): number | null => {\n      let ns: Node | null = n;\n      let nextId: number | null = IGNORED_NODE; // slimDOM: ignored\n      while (nextId === IGNORED_NODE) {\n        ns = ns && ns.nextSibling;\n        nextId = ns && this.mirror.getId(ns);\n      }\n      return nextId;\n    };\n    const pushAdd = (n: Node) => {\n      if (\n        !n.parentNode ||\n        !inDom(n) ||\n        (n.parentNode as Element).tagName === 'TEXTAREA'\n      ) {\n        return;\n      }\n      const parentId = isShadowRoot(n.parentNode)\n        ? this.mirror.getId(getShadowHost(n))\n        : this.mirror.getId(n.parentNode);\n      const nextId = getNextId(n);\n      if (parentId === -1 || nextId === -1) {\n        return addList.addNode(n);\n      }\n      const sn = serializeNodeWithId(n, {\n        doc: this.doc,\n        mirror: this.mirror,\n        blockClass: this.blockClass,\n        blockSelector: this.blockSelector,\n        maskTextClass: this.maskTextClass,\n        maskTextSelector: this.maskTextSelector,\n        skipChild: true,\n        newlyAddedElement: true,\n        inlineStylesheet: this.inlineStylesheet,\n        maskInputOptions: this.maskInputOptions,\n        maskTextFn: this.maskTextFn,\n        maskInputFn: this.maskInputFn,\n        slimDOMOptions: this.slimDOMOptions,\n        dataURLOptions: this.dataURLOptions,\n        recordCanvas: this.recordCanvas,\n        inlineImages: this.inlineImages,\n        onSerialize: (currentN) => {\n          if (isSerializedIframe(currentN, this.mirror)) {\n            this.iframeManager.addIframe(currentN as HTMLIFrameElement);\n          }\n          if (isSerializedStylesheet(currentN, this.mirror)) {\n            this.stylesheetManager.trackLinkElement(\n              currentN as HTMLLinkElement,\n            );\n          }\n          if (hasShadowRoot(n)) {\n            this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\n          }\n        },\n        onIframeLoad: (iframe, childSn) => {\n          this.iframeManager.attachIframe(iframe, childSn);\n          this.shadowDomManager.observeAttachShadow(iframe);\n        },\n        onStylesheetLoad: (link, childSn) => {\n          this.stylesheetManager.attachLinkElement(link, childSn);\n        },\n        corruptedRules: this.stylesheetManager.corruptedRules,\n      });\n      if (sn) {\n        adds.push({\n          parentId,\n          nextId,\n          node: sn,\n        });\n        addedIds.add(sn.id);\n      }\n    };\n\n    while (this.mapRemoves.length) {\n      this.mirror.removeNodeFromMap(this.mapRemoves.shift()!);\n    }\n\n    for (const n of this.movedSet) {\n      if (\n        isParentRemoved(this.removes, n, this.mirror) &&\n        !this.movedSet.has(n.parentNode!)\n      ) {\n        continue;\n      }\n      pushAdd(n);\n    }\n\n    for (const n of this.addedSet) {\n      if (\n        !isAncestorInSet(this.droppedSet, n) &&\n        !isParentRemoved(this.removes, n, this.mirror)\n      ) {\n        pushAdd(n);\n      } else if (isAncestorInSet(this.movedSet, n)) {\n        pushAdd(n);\n      } else {\n        this.droppedSet.add(n);\n      }\n    }\n\n    let candidate: DoubleLinkedListNode | null = null;\n    while (addList.length) {\n      let node: DoubleLinkedListNode | null = null;\n      if (candidate) {\n        const parentId = this.mirror.getId(candidate.value.parentNode);\n        const nextId = getNextId(candidate.value);\n        if (parentId !== -1 && nextId !== -1) {\n          node = candidate;\n        }\n      }\n      if (!node) {\n        let tailNode = addList.tail;\n        while (tailNode) {\n          const _node = tailNode;\n          tailNode = tailNode.previous;\n          // ensure _node is defined before attempting to find value\n          if (_node) {\n            const parentId = this.mirror.getId(_node.value.parentNode);\n            const nextId = getNextId(_node.value);\n\n            if (nextId === -1) continue;\n            // nextId !== -1 && parentId !== -1\n            else if (parentId !== -1) {\n              node = _node;\n              break;\n            }\n            // nextId !== -1 && parentId === -1 This branch can happen if the node is the child of shadow root\n            else {\n              const unhandledNode = _node.value;\n              // If the node is the direct child of a shadow root, we treat the shadow host as its parent node.\n              if (\n                unhandledNode.parentNode &&\n                unhandledNode.parentNode.nodeType ===\n                  Node.DOCUMENT_FRAGMENT_NODE\n              ) {\n                const shadowHost = (unhandledNode.parentNode as ShadowRoot)\n                  .host;\n                const parentId = this.mirror.getId(shadowHost);\n                if (parentId !== -1) {\n                  node = _node;\n                  break;\n                }\n              }\n            }\n          }\n        }\n      }\n      if (!node) {\n        /**\n         * If all nodes in queue could not find a serialized parent,\n         * it may be a bug or corner case. We need to escape the\n         * dead while loop at once.\n         */\n        while (addList.head) {\n          addList.removeNode(addList.head.value);\n        }\n        break;\n      }\n      candidate = node.previous;\n      addList.removeNode(node.value);\n      pushAdd(node.value);\n    }\n\n    const payload = {\n      texts: this.texts\n        .map((text): textMutation => {\n          const n = text.node;\n          if (\n            n.parentNode &&\n            (n.parentNode as Element).tagName === 'TEXTAREA'\n          ) {\n            // the node is being ignored as it isn't in the mirror, so shift mutation to attributes on parent textarea\n            this.genTextAreaValueMutation(n.parentNode as HTMLTextAreaElement);\n          }\n\n          const id = this.mirror.getId(n);\n\n          // Try to compute delta if oldValue is available (not masked)\n          if (text.oldValue !== undefined) {\n            const diffResult = computeTextDiff(text.oldValue, text.value);\n            if (shouldUseDelta(diffResult) && diffResult.delta) {\n              // Use delta format - more efficient\n              return {\n                id,\n                delta: diffResult.delta,\n              };\n            }\n          }\n\n          // Use full value (legacy format or when delta isn't beneficial)\n          return {\n            id,\n            value: text.value,\n          };\n        })\n        // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n        .filter((text) => !addedIds.has(text.id))\n        // text mutation's id was not in the mirror map means the target node has been removed\n        .filter((text) => this.mirror.has(text.id)),\n      attributes: this.attributes\n        .map((attribute) => {\n          const { attributes } = attribute;\n          if (typeof attributes.style === 'string') {\n            const diffAsStr = JSON.stringify(attribute.styleDiff);\n            const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n            // check if the style diff is actually shorter than the regular string based mutation\n            // (which was the whole point of #464 'compact style mutation').\n            if (diffAsStr.length < attributes.style.length) {\n              // also: CSSOM fails badly when var() is present on shorthand properties, so only proceed with\n              // the compact style mutation if these have all been accounted for\n              if (\n                (diffAsStr + unchangedAsStr).split('var(').length ===\n                attributes.style.split('var(').length\n              ) {\n                attributes.style = attribute.styleDiff;\n              }\n            }\n          }\n          return {\n            id: this.mirror.getId(attribute.node),\n            attributes: attributes,\n          };\n        })\n        // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n        .filter((attribute) => !addedIds.has(attribute.id))\n        // attribute mutation's id was not in the mirror map means the target node has been removed\n        .filter((attribute) => this.mirror.has(attribute.id)),\n      removes: this.removes,\n      adds,\n    };\n    // payload may be empty if the mutations happened in some blocked elements\n    if (\n      !payload.texts.length &&\n      !payload.attributes.length &&\n      !payload.removes.length &&\n      !payload.adds.length\n    ) {\n      return;\n    }\n\n    // reset\n    this.texts = [];\n    this.attributes = [];\n    this.attributeMap = new WeakMap<Node, attributeCursor>();\n    this.removes = [];\n    this.addedSet = new Set<Node>();\n    this.movedSet = new Set<Node>();\n    this.droppedSet = new Set<Node>();\n    this.movedMap = {};\n\n    this.mutationCb(payload);\n  };\n\n  private genTextAreaValueMutation = (textarea: HTMLTextAreaElement) => {\n    let item = this.attributeMap.get(textarea);\n    if (!item) {\n      item = {\n        node: textarea,\n        attributes: {},\n        styleDiff: {},\n        _unchangedStyles: {},\n      };\n      this.attributes.push(item);\n      this.attributeMap.set(textarea, item);\n    }\n    item.attributes.value = Array.from(\n      textarea.childNodes,\n      (cn) => cn.textContent || '',\n    ).join('');\n  };\n\n  private processMutation = (m: mutationRecord) => {\n    if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n      return;\n    }\n    switch (m.type) {\n      case 'characterData': {\n        const value = m.target.textContent;\n\n        if (\n          !isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\n          value !== m.oldValue\n        ) {\n          const isMasked = needMaskingText(\n            m.target,\n            this.maskTextClass,\n            this.maskTextSelector,\n            true, // checkAncestors\n          );\n\n          const maskedValue =\n            isMasked && value\n              ? this.maskTextFn\n                ? this.maskTextFn(value, closestElementOfNode(m.target))\n                : value.replace(/[\\S]/g, '*')\n              : value;\n\n          this.texts.push({\n            value: maskedValue,\n            node: m.target,\n            // Store oldValue for delta computation (only when not masked)\n            oldValue: isMasked ? undefined : m.oldValue,\n          });\n        }\n        break;\n      }\n      case 'attributes': {\n        const target = m.target as HTMLElement;\n        let attributeName = m.attributeName as string;\n        let value = (m.target as HTMLElement).getAttribute(attributeName);\n\n        if (attributeName === 'value') {\n          const type = getInputType(target);\n\n          const maskResult = maskInputValue({\n            element: target,\n            maskInputOptions: this.maskInputOptions,\n            tagName: target.tagName,\n            type,\n            value,\n            maskInputFn: this.maskInputFn,\n          });\n          value = maskResult.value;\n          // const masked = maskResult.masked;\n        }\n        if (\n          isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n          value === m.oldValue\n        ) {\n          return;\n        }\n\n        let item = this.attributeMap.get(m.target);\n        if (\n          target.tagName === 'IFRAME' &&\n          attributeName === 'src' &&\n          !this.keepIframeSrcFn(value as string)\n        ) {\n          if (!(target as HTMLIFrameElement).contentDocument) {\n            // we can't record it directly as we can't see into it\n            // preserve the src attribute so a decision can be taken at replay time\n            attributeName = 'rr_src';\n          } else {\n            return;\n          }\n        }\n        if (!item) {\n          item = {\n            node: m.target,\n            attributes: {},\n            styleDiff: {},\n            _unchangedStyles: {},\n          };\n          this.attributes.push(item);\n          this.attributeMap.set(m.target, item);\n        }\n\n        // Keep this property on inputs that used to be password inputs\n        // This is used to ensure we do not unmask value when using e.g. a \"Show password\" type button\n        if (\n          attributeName === 'type' &&\n          target.tagName === 'INPUT' &&\n          (m.oldValue || '').toLowerCase() === 'password'\n        ) {\n          target.setAttribute('data-rr-is-password', 'true');\n        }\n\n        if (!ignoreAttribute(target.tagName, attributeName, value)) {\n          // overwrite attribute if the mutations was triggered in same time\n          item.attributes[attributeName] = transformAttribute(\n            this.doc,\n            toLowerCase(target.tagName),\n            toLowerCase(attributeName),\n            value,\n          );\n          if (attributeName === 'style') {\n            if (!this.unattachedDoc) {\n              try {\n                // avoid upsetting original document from a Content Security point of view\n                this.unattachedDoc =\n                  document.implementation.createHTMLDocument();\n              } catch (e) {\n                // fallback to more direct method\n                this.unattachedDoc = this.doc;\n              }\n            }\n            const old = this.unattachedDoc.createElement('span');\n            if (m.oldValue) {\n              old.setAttribute('style', m.oldValue);\n            }\n            for (const pname of Array.from(target.style)) {\n              const newValue = target.style.getPropertyValue(pname);\n              const newPriority = target.style.getPropertyPriority(pname);\n              if (\n                newValue !== old.style.getPropertyValue(pname) ||\n                newPriority !== old.style.getPropertyPriority(pname)\n              ) {\n                if (newPriority === '') {\n                  item.styleDiff[pname] = newValue;\n                } else {\n                  item.styleDiff[pname] = [newValue, newPriority];\n                }\n              } else {\n                // for checking\n                item._unchangedStyles[pname] = [newValue, newPriority];\n              }\n            }\n            for (const pname of Array.from(old.style)) {\n              if (target.style.getPropertyValue(pname) === '') {\n                // \"if not set, returns the empty string\"\n                item.styleDiff[pname] = false; // delete\n              }\n            }\n          }\n        }\n        break;\n      }\n      case 'childList': {\n        /**\n         * Parent is blocked, ignore all child mutations\n         */\n        if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n          return;\n\n        if ((m.target as Element).tagName === 'TEXTAREA') {\n          // children would be ignored in genAdds as they aren't in the mirror\n          this.genTextAreaValueMutation(m.target as HTMLTextAreaElement);\n          return; // any removedNodes won't have been in mirror either\n        }\n\n        m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n        m.removedNodes.forEach((n) => {\n          const nodeId = this.mirror.getId(n);\n          const parentId = isShadowRoot(m.target)\n            ? this.mirror.getId(m.target.host)\n            : this.mirror.getId(m.target);\n          if (\n            isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n            isIgnored(n, this.mirror, this.slimDOMOptions) ||\n            !isSerialized(n, this.mirror)\n          ) {\n            return;\n          }\n          // removed node has not been serialized yet, just remove it from the Set\n          if (this.addedSet.has(n)) {\n            deepDelete(this.addedSet, n);\n            this.droppedSet.add(n);\n          } else if (this.addedSet.has(m.target) && nodeId === -1) {\n            /**\n             * If target was newly added and removed child node was\n             * not serialized, it means the child node has been removed\n             * before callback fired, so we can ignore it because\n             * newly added node will be serialized without child nodes.\n             * TODO: verify this\n             */\n          } else if (isAncestorRemoved(m.target, this.mirror)) {\n            /**\n             * If parent id was not in the mirror map any more, it\n             * means the parent node has already been removed. So\n             * the node is also removed which we do not need to track\n             * and replay.\n             */\n          } else if (\n            this.movedSet.has(n) &&\n            this.movedMap[moveKey(nodeId, parentId)]\n          ) {\n            deepDelete(this.movedSet, n);\n          } else {\n            this.removes.push({\n              parentId,\n              id: nodeId,\n              isShadow:\n                isShadowRoot(m.target) && isNativeShadowDom(m.target)\n                  ? true\n                  : undefined,\n            });\n          }\n          this.mapRemoves.push(n);\n        });\n        break;\n      }\n      default:\n        break;\n    }\n  };\n\n  /**\n   * Make sure you check if `n`'s parent is blocked before calling this function\n   * */\n  private genAdds = (n: Node, target?: Node) => {\n    // this node was already recorded in other buffer, ignore it\n    if (this.processedNodeManager.inOtherBuffer(n, this)) return;\n\n    // if n is added to set, there is no need to travel it and its' children again\n    if (this.addedSet.has(n) || this.movedSet.has(n)) return;\n\n    if (this.mirror.hasNode(n)) {\n      if (isIgnored(n, this.mirror, this.slimDOMOptions)) {\n        return;\n      }\n      this.movedSet.add(n);\n      let targetId: number | null = null;\n      if (target && this.mirror.hasNode(target)) {\n        targetId = this.mirror.getId(target);\n      }\n      if (targetId && targetId !== -1) {\n        this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n      }\n    } else {\n      this.addedSet.add(n);\n      this.droppedSet.delete(n);\n    }\n\n    // if this node is blocked `serializeNode` will turn it into a placeholder element\n    // but we have to remove it's children otherwise they will be added as placeholders too\n    if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\n      n.childNodes.forEach((childN) => this.genAdds(childN));\n      if (hasShadowRoot(n)) {\n        n.shadowRoot.childNodes.forEach((childN) => {\n          this.processedNodeManager.add(childN, this);\n          this.genAdds(childN, n);\n        });\n      }\n    }\n  };\n}\n\n/**\n * Some utils to handle the mutation observer DOM records.\n * It should be more clear to extend the native data structure\n * like Set and Map, but currently Typescript does not support\n * that.\n */\nfunction deepDelete(addsSet: Set<Node>, n: Node) {\n  addsSet.delete(n);\n  n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\n\nfunction isParentRemoved(\n  removes: removedNodeMutation[],\n  n: Node,\n  mirror: Mirror,\n): boolean {\n  if (removes.length === 0) return false;\n  return _isParentRemoved(removes, n, mirror);\n}\n\nfunction _isParentRemoved(\n  removes: removedNodeMutation[],\n  n: Node,\n  mirror: Mirror,\n): boolean {\n  let node: ParentNode | null = n.parentNode;\n  while (node) {\n    const parentId = mirror.getId(node);\n    if (removes.some((r) => r.id === parentId)) {\n      return true;\n    }\n    node = node.parentNode;\n  }\n  return false;\n}\n\nfunction isAncestorInSet(set: Set<Node>, n: Node): boolean {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n);\n}\n\nfunction _isAncestorInSet(set: Set<Node>, n: Node): boolean {\n  const { parentNode } = n;\n  if (!parentNode) {\n    return false;\n  }\n  if (set.has(parentNode)) {\n    return true;\n  }\n  return _isAncestorInSet(set, parentNode);\n}\n","import {\n  Mirror,\n  getInputType,\n  maskInputValue,\n  toLowerCase,\n} from \"@sailfish-rrweb/rrweb-snapshot\";\nimport type {\n  Arguments,\n  IWindow,\n  SelectionRange,\n  canvasMutationCallback,\n  customElementCallback,\n  deviceChangeCallback,\n  fontCallback,\n  fontParam,\n  hookResetter,\n  // hookResetter,\n  hooksParam,\n  inputCallback,\n  inputValue,\n  listenerHandler,\n  mediaInteractionCallback,\n  mouseInteractionCallBack,\n  mousePosition,\n  mousemoveCallBack,\n  mutationCallBack,\n  scrollCallback,\n  selectionCallback,\n  styleDeclarationCallback,\n  styleSheetRuleCallback,\n  typingCallback,\n  viewportResizeCallback,\n} from \"@sailfish-rrweb/types\";\nimport {\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n} from \"@sailfish-rrweb/types\";\nimport type { FontFaceSet } from \"css-font-loading-module\";\nimport type { MutationBufferParam, observerParam } from \"../types\";\nimport {\n  StyleSheetMirror,\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hookSetter,\n  // hookSetter,\n  isBlocked,\n  legacy_isTouchEvent,\n  nowTimestamp,\n  on,\n  patch,\n  throttle,\n} from \"../utils\";\nimport { callbackWrapper } from \"./error-handler\";\nimport MutationBuffer from \"./mutation\";\n\ntype WindowWithStoredMutationObserver = IWindow & {\n  __rrMutationObserver?: MutationObserver;\n};\ntype WindowWithAngularZone = IWindow & {\n  Zone?: {\n    __symbol__?: (key: string) => string;\n  };\n};\n\nexport const mutationBuffers: MutationBuffer[] = [];\n\n// Event.path is non-standard and used in some older browsers\ntype NonStandardEvent = Omit<Event, \"composedPath\"> & {\n  path: EventTarget[];\n};\n\nfunction getEventTarget(event: Event | NonStandardEvent): EventTarget | null {\n  try {\n    if (\"composedPath\" in event) {\n      const path = event.composedPath();\n      if (path.length) {\n        return path[0];\n      }\n    } else if (\"path\" in event && event.path.length) {\n      return event.path[0];\n    }\n  } catch {\n    // fallback to `event.target` below\n  }\n\n  return event && event.target;\n}\n\nexport function initMutationObserver(\n  options: MutationBufferParam,\n  rootEl: Node,\n): MutationObserver {\n  const mutationBuffer = new MutationBuffer();\n  mutationBuffers.push(mutationBuffer);\n  // see mutation.ts for details\n  mutationBuffer.init(options);\n  let mutationObserverCtor =\n    window.MutationObserver ||\n    /**\n     * Some websites may disable MutationObserver by removing it from the window object.\n     * If someone is using rrweb to build a browser extention or things like it, they\n     * could not change the website's code but can have an opportunity to inject some\n     * code before the website executing its JS logic.\n     * Then they can do this to store the native MutationObserver:\n     * window.__rrMutationObserver = MutationObserver\n     */\n    (window as WindowWithStoredMutationObserver).__rrMutationObserver;\n  const angularZoneSymbol = (\n    window as WindowWithAngularZone\n  )?.Zone?.__symbol__?.(\"MutationObserver\");\n  if (\n    angularZoneSymbol &&\n    (window as unknown as Record<string, typeof MutationObserver>)[\n      angularZoneSymbol\n    ]\n  ) {\n    mutationObserverCtor = (\n      window as unknown as Record<string, typeof MutationObserver>\n    )[angularZoneSymbol];\n  }\n  const observer = new (mutationObserverCtor as new (\n    callback: MutationCallback,\n  ) => MutationObserver)(\n    callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)),\n  );\n  observer.observe(rootEl, {\n    attributes: true,\n    attributeOldValue: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n  });\n  return observer;\n}\n\nfunction initMoveObserver({\n  mousemoveCb,\n  sampling,\n  doc,\n  mirror,\n}: observerParam): listenerHandler {\n  if (sampling.mousemove === false) {\n    return () => {\n      //\n    };\n  }\n\n  const threshold =\n    typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n  const callbackThreshold =\n    typeof sampling.mousemoveCallback === \"number\"\n      ? sampling.mousemoveCallback\n      : 500;\n\n  let positions: mousePosition[] = [];\n  let timeBaseline: number | null;\n  const wrappedCb = throttle(\n    callbackWrapper(\n      (\n        source:\n          | IncrementalSource.MouseMove\n          | IncrementalSource.TouchMove\n          | IncrementalSource.Drag,\n      ) => {\n        const totalOffset = Date.now() - timeBaseline!;\n        mousemoveCb(\n          positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n          }),\n          source,\n        );\n        positions = [];\n        timeBaseline = null;\n      },\n    ),\n    callbackThreshold,\n  );\n  const updatePosition = callbackWrapper(\n    throttle<MouseEvent | TouchEvent | DragEvent>(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        // 'legacy' here as we could switch to https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event\n        const { clientX, clientY } = legacy_isTouchEvent(evt)\n          ? evt.changedTouches[0]\n          : evt;\n        if (!timeBaseline) {\n          timeBaseline = nowTimestamp();\n        }\n        positions.push({\n          x: clientX,\n          y: clientY,\n          id: mirror.getId(target as Node),\n          timeOffset: nowTimestamp() - timeBaseline,\n        });\n        // it is possible DragEvent is undefined even on devices\n        // that support event 'drag'\n        wrappedCb(\n          typeof DragEvent !== \"undefined\" && evt instanceof DragEvent\n            ? IncrementalSource.Drag\n            : evt instanceof MouseEvent\n            ? IncrementalSource.MouseMove\n            : IncrementalSource.TouchMove,\n        );\n      }),\n      threshold,\n      {\n        trailing: false,\n      },\n    ),\n  );\n  const handlers = [\n    on(\"mousemove\", updatePosition, doc),\n    on(\"touchmove\", updatePosition, doc),\n    on(\"drag\", updatePosition, doc),\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initMouseInteractionObserver({\n  mouseInteractionCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  sampling,\n}: observerParam): listenerHandler {\n  if (sampling.mouseInteraction === false) {\n    return () => {\n      //\n    };\n  }\n  const disableMap: Record<string, boolean | undefined> =\n    sampling.mouseInteraction === true ||\n    sampling.mouseInteraction === undefined\n      ? {}\n      : sampling.mouseInteraction;\n\n  const handlers: listenerHandler[] = [];\n  let currentPointerType: PointerTypes | null = null;\n  const getHandler = (eventKey: keyof typeof MouseInteractions) => {\n    return (event: MouseEvent | TouchEvent | PointerEvent) => {\n      const target = getEventTarget(event) as Node;\n      if (isBlocked(target, blockClass, blockSelector, true)) {\n        return;\n      }\n      let pointerType: PointerTypes | null = null;\n      let thisEventKey = eventKey;\n      if (\"pointerType\" in event) {\n        switch (event.pointerType) {\n          case \"mouse\":\n            pointerType = PointerTypes.Mouse;\n            break;\n          case \"touch\":\n            pointerType = PointerTypes.Touch;\n            break;\n          case \"pen\":\n            pointerType = PointerTypes.Pen;\n            break;\n        }\n        if (pointerType === PointerTypes.Touch) {\n          if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n            // we are actually listening on 'pointerdown'\n            thisEventKey = \"TouchStart\";\n          } else if (\n            MouseInteractions[eventKey] === MouseInteractions.MouseUp\n          ) {\n            // we are actually listening on 'pointerup'\n            thisEventKey = \"TouchEnd\";\n          }\n        } else if (pointerType === PointerTypes.Pen) {\n          // TODO: these will get incorrectly emitted as MouseDown/MouseUp\n        }\n      } else if (legacy_isTouchEvent(event)) {\n        pointerType = PointerTypes.Touch;\n      }\n      if (pointerType !== null) {\n        currentPointerType = pointerType;\n        if (\n          (thisEventKey.startsWith(\"Touch\") &&\n            pointerType === PointerTypes.Touch) ||\n          (thisEventKey.startsWith(\"Mouse\") &&\n            pointerType === PointerTypes.Mouse)\n        ) {\n          // don't output redundant info\n          pointerType = null;\n        }\n      } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n        pointerType = currentPointerType;\n        currentPointerType = null; // cleanup as we've used it\n      }\n      const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e) {\n        return;\n      }\n      const id = mirror.getId(target);\n      const { clientX, clientY } = e;\n      callbackWrapper(mouseInteractionCb)({\n        type: MouseInteractions[thisEventKey],\n        id,\n        x: clientX,\n        y: clientY,\n        ...(pointerType !== null && { pointerType }),\n      });\n    };\n  };\n  Object.keys(MouseInteractions)\n    .filter(\n      (key) =>\n        Number.isNaN(Number(key)) &&\n        !key.endsWith(\"_Departed\") &&\n        disableMap[key] !== false,\n    )\n    .forEach((eventKey: keyof typeof MouseInteractions) => {\n      let eventName = toLowerCase(eventKey);\n      const handler = getHandler(eventKey);\n      if (window.PointerEvent) {\n        switch (MouseInteractions[eventKey]) {\n          case MouseInteractions.MouseDown:\n          case MouseInteractions.MouseUp:\n            eventName = eventName.replace(\n              \"mouse\",\n              \"pointer\",\n            ) as unknown as typeof eventName;\n            break;\n          case MouseInteractions.TouchStart:\n          case MouseInteractions.TouchEnd:\n            // these are handled by pointerdown/pointerup\n            return;\n        }\n      }\n      handlers.push(on(eventName, handler, doc));\n    });\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nexport function initScrollObserver({\n  scrollCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  sampling,\n}: Pick<\n  observerParam,\n  \"scrollCb\" | \"doc\" | \"mirror\" | \"blockClass\" | \"blockSelector\" | \"sampling\"\n>): listenerHandler {\n  const updatePosition = callbackWrapper(\n    throttle<UIEvent>(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (\n          !target ||\n          isBlocked(target as Node, blockClass, blockSelector, true)\n        ) {\n          return;\n        }\n        const id = mirror.getId(target as Node);\n        if (target === doc && doc.defaultView) {\n          const scrollLeftTop = getWindowScroll(doc.defaultView);\n          scrollCb({\n            id,\n            x: scrollLeftTop.left,\n            y: scrollLeftTop.top,\n          });\n        } else {\n          scrollCb({\n            id,\n            x: (target as HTMLElement).scrollLeft,\n            y: (target as HTMLElement).scrollTop,\n          });\n        }\n      }),\n      sampling.scroll || 100,\n    ),\n  );\n  return on(\"scroll\", updatePosition, doc);\n}\n\nfunction initViewportResizeObserver(\n  { viewportResizeCb }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  let lastH = -1;\n  let lastW = -1;\n  const updateDimension = callbackWrapper(\n    throttle(\n      callbackWrapper(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n          viewportResizeCb({\n            width: Number(width),\n            height: Number(height),\n          });\n          lastH = height;\n          lastW = width;\n        }\n      }),\n      200,\n    ),\n  );\n  return on(\"resize\", updateDimension, win);\n}\n\nexport const INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap: WeakMap<EventTarget, inputValue> = new WeakMap();\nfunction initInputObserver({\n  inputCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  ignoreClass,\n  ignoreSelector,\n  maskInputOptions,\n  maskInputFn,\n  sampling,\n  userTriggeredOnInput,\n}: observerParam): listenerHandler {\n  function eventHandler(event: Event) {\n    let target = getEventTarget(event) as HTMLElement | null;\n    const userTriggered = event.isTrusted;\n    const tagName = target && target.tagName;\n\n    /**\n     * If a site changes the value 'selected' of an option element, the value of its parent element, usually a select element, will be changed as well.\n     * We can treat this change as a value change of the select element the current target belongs to.\n     */\n    if (target && tagName === \"OPTION\") {\n      target = target.parentElement;\n    }\n    if (\n      !target ||\n      !tagName ||\n      INPUT_TAGS.indexOf(tagName) < 0 ||\n      isBlocked(target as Node, blockClass, blockSelector, true)\n    ) {\n      return;\n    }\n\n    if (\n      target.classList.contains(ignoreClass) ||\n      (ignoreSelector && target.matches(ignoreSelector))\n    ) {\n      return;\n    }\n    let text = (target as HTMLInputElement).value;\n    let isChecked = false;\n    const type: Lowercase<string> = getInputType(target) || \"\";\n\n    const { value: maskedValue, masked } = maskInputValue({\n      element: target,\n      maskInputOptions,\n      tagName,\n      type,\n      value: text,\n      maskInputFn,\n    });\n    text = maskedValue;\n\n    if (type === \"radio\" || type === \"checkbox\") {\n      isChecked = (target as HTMLInputElement).checked;\n    }\n    cbWithDedup(\n      target,\n      userTriggeredOnInput\n        ? { text, isChecked, masked, userTriggered }\n        : { text, isChecked, masked },\n    );\n    // if a radio was checked\n    // the other radios with the same name attribute will be unchecked.\n    const name: string | undefined = (target as HTMLInputElement).name;\n    if (type === \"radio\" && name && isChecked) {\n      doc\n        .querySelectorAll(`input[type='radio'][name='${name}']`)\n        .forEach((el) => {\n          if (el !== target) {\n            const text = (el as HTMLInputElement).value;\n            cbWithDedup(\n              el,\n              userTriggeredOnInput\n                ? { text, isChecked: !isChecked, masked, userTriggered: false }\n                : { text, isChecked: !isChecked, masked },\n            );\n          }\n        });\n    }\n  }\n  function cbWithDedup(target: EventTarget, v: inputValue) {\n    const lastInputValue = lastInputValueMap.get(target);\n\n    if (\n      !lastInputValue ||\n      lastInputValue.text !== v.text ||\n      lastInputValue.isChecked !== v.isChecked ||\n      lastInputValue.masked !== v.masked\n    ) {\n      lastInputValueMap.set(target, v);\n      const id = mirror.getId(target as Node);\n      callbackWrapper(inputCb)({\n        ...v,\n        id,\n      });\n    }\n  }\n  const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n  const handlers: Array<listenerHandler | hookResetter> = events.map(\n    (eventName) => on(eventName, callbackWrapper(eventHandler), doc),\n  );\n  const currentWindow = doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n      handlers.forEach((h) => h());\n    };\n  }\n  const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n    currentWindow.HTMLInputElement.prototype,\n    \"value\",\n  );\n  const hookProperties: Array<[HTMLElement, string]> = [\n    [currentWindow.HTMLInputElement.prototype, \"value\"],\n    [currentWindow.HTMLInputElement.prototype, \"checked\"],\n    [currentWindow.HTMLSelectElement.prototype, \"value\"],\n    [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n    // Some UI library use selectedIndex to set select value\n    [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n    [currentWindow.HTMLOptionElement.prototype, \"selected\"],\n  ];\n  if (propertyDescriptor && propertyDescriptor.set) {\n    handlers.push(\n      ...hookProperties.map((p) =>\n        hookSetter<HTMLElement>(\n          p[0],\n          p[1],\n          {\n            set() {\n              // mock to a normal event\n              callbackWrapper(eventHandler)({\n                target: this as EventTarget,\n                isTrusted: false, // userTriggered to false as this could well be programmatic\n              } as Event);\n            },\n          },\n          false,\n          currentWindow,\n        ),\n      ),\n    );\n  }\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initTypingObserver({\n  typingCb,\n  doc,\n  maskInputOptions,\n  maskInputFn,\n}: observerParam): listenerHandler {\n  const handleTyping = (event: KeyboardEvent) => {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    let isMasked = false; // Update this logic if masking is required\n    const keyInfo = {\n      key: event.key, // The actual key pressed (e.g., 'a', 'Enter')\n      code: event.code, // The physical key code (e.g., 'KeyA', 'Space')\n      altKey: event.altKey, // Whether Alt was pressed\n      ctrlKey: event.ctrlKey, // Whether Ctrl was pressed\n      shiftKey: event.shiftKey, // Whether Shift was pressed\n      metaKey: event.metaKey, // Whether Command (Mac) or Windows key was pressed\n    };\n    const tagName = target && target.tagName;\n    const type: Lowercase<string> = getInputType(target) || \"\";\n    let text = target.value;\n    if (target && (target.tagName == \"INPUT\" || target.tagName == \"TEXTAREA\")) {\n      const { value: maskedValue, masked } = maskInputValue({\n        element: target,\n        maskInputOptions,\n        tagName,\n        type,\n        value: text,\n        maskInputFn,\n      });\n      text = maskedValue;\n      isMasked = masked;\n    }\n\n    // Serialize the full DOM path of the focused element\n    const getDomPath = (element: HTMLElement): string => {\n      const path = [];\n      while (element) {\n        let selector = element.tagName.toLowerCase();\n\n        // Add ID if present\n        if (element.id) {\n          selector += `#${element.id}`;\n          path.unshift(selector);\n          break; // IDs are unique, no need to go further up\n        }\n\n        // Add class names if present\n        if (element.className) {\n          const classList = element.className.split(/\\s+/).filter(Boolean);\n          if (classList.length) {\n            selector += `.${classList.join(\".\")}`;\n          }\n        }\n\n        // Add index for sibling elements\n        const siblings = Array.from(element.parentNode?.children || []);\n        if (siblings.length > 1) {\n          const index = siblings.indexOf(element) + 1;\n          selector += `:nth-child(${index})`;\n        }\n\n        path.unshift(selector);\n        element = element.parentElement as HTMLElement;\n      }\n      return path.join(\" > \");\n    };\n\n    typingCb({\n      source: IncrementalSource.Typing,\n      id: target?.id, // Assuming id tracking is in place\n      text: text,\n      isMasked,\n      target: getDomPath(target),\n      keyInfo,\n    });\n  };\n\n  const keydownHandler = on(\"keydown\", handleTyping, doc);\n  return () => {\n    keydownHandler();\n  };\n}\n\nfunction initDeviceChangeObserver({\n  deviceChangeCb,\n}: observerParam): listenerHandler {\n  const handleUSBChange = (event: USBConnectionEvent, action: string) => {\n    const deviceNames = event.device.productName\n      ? [event.device.productName]\n      : [\"Unknown USB Device\"];\n    deviceChangeCb({\n      type: \"USB\",\n      action,\n      devices: deviceNames, // Converted to string[]\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleHIDChange = (event: HIDConnectionEvent, action: string) => {\n    const deviceNames = event.device.productName\n      ? [event.device.productName]\n      : [\"Unknown HID Device\"];\n    deviceChangeCb({\n      type: \"HID\",\n      action,\n      devices: deviceNames, // Converted to string[]\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleGamepadChange = () => {\n    const gamepads = navigator.getGamepads();\n    const devices = Array.from(gamepads)\n      .filter((g) => g)\n      .map((g) => g?.id || \"Unknown Gamepad\");\n\n    if (devices.length === 0) {\n      return;\n    }\n    deviceChangeCb({\n      type: \"Gamepad\",\n      action: \"change\",\n      devices,\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleMediaDeviceChange = () => {\n    navigator.mediaDevices\n      .enumerateDevices()\n      .then((devices) => {\n        const deviceList = devices.map((d) => `${d.kind}: ${d.label}`);\n        deviceChangeCb({\n          type: \"MediaDevices\",\n          action: \"change\",\n          devices: deviceList,\n          timestamp: Date.now(),\n        });\n      })\n      .catch((error) => {\n        console.error(\"[Media Device Enumeration Error]\", error);\n      });\n  };\n\n  // Network change handler remains unchanged\n  const handleNetworkChange = () => {\n    const status = navigator.onLine ? \"online\" : \"offline\";\n    deviceChangeCb({\n      type: \"Network\",\n      action: \"status\",\n      status,\n      timestamp: Date.now(),\n    });\n  };\n\n  const networkHandlers = [\n    on(\n      \"online\",\n      () => {\n        handleNetworkChange();\n      },\n      window,\n    ),\n    on(\n      \"offline\",\n      () => {\n        handleNetworkChange();\n      },\n      window,\n    ),\n  ];\n\n  // Attach event listeners\n  if (\"usb\" in navigator) {\n    navigator.usb.addEventListener(\"connect\", (event: USBConnectionEvent) =>\n      handleUSBChange(event, \"connect\"),\n    );\n    navigator.usb.addEventListener(\"disconnect\", (event: USBConnectionEvent) =>\n      handleUSBChange(event, \"disconnect\"),\n    );\n  }\n\n  if (\"hid\" in navigator) {\n    navigator.hid.addEventListener(\"connect\", (event: HIDConnectionEvent) =>\n      handleHIDChange(event, \"connect\"),\n    );\n    navigator.hid.addEventListener(\"disconnect\", (event: HIDConnectionEvent) =>\n      handleHIDChange(event, \"disconnect\"),\n    );\n  }\n\n  navigator.mediaDevices.addEventListener(\n    \"devicechange\",\n    handleMediaDeviceChange,\n  );\n\n  const gamepadPollInterval = setInterval(() => {\n    handleGamepadChange();\n  }, 10000); // Poll every 10 seconds\n\n  return () => {\n    navigator.usb.removeEventListener(\"connect\", handleUSBChange as any);\n    navigator.usb.removeEventListener(\"disconnect\", handleUSBChange as any);\n    navigator.hid.removeEventListener(\"connect\", handleHIDChange as any);\n    navigator.hid.removeEventListener(\"disconnect\", handleHIDChange as any);\n    networkHandlers.forEach((h) => h());\n    navigator.mediaDevices.removeEventListener(\n      \"devicechange\",\n      handleMediaDeviceChange,\n    );\n    clearInterval(gamepadPollInterval);\n  };\n}\n\ntype GroupingCSSRule =\n  | CSSGroupingRule\n  | CSSMediaRule\n  | CSSSupportsRule\n  | CSSConditionRule;\ntype GroupingCSSRuleTypes =\n  | typeof CSSGroupingRule\n  | typeof CSSMediaRule\n  | typeof CSSSupportsRule\n  | typeof CSSConditionRule;\n\nfunction getNestedCSSRulePositions(rule: CSSRule): number[] {\n  const positions: number[] = [];\n  function recurse(childRule: CSSRule, pos: number[]) {\n    if (\n      (hasNestedCSSRule(\"CSSGroupingRule\") &&\n        childRule.parentRule instanceof CSSGroupingRule) ||\n      (hasNestedCSSRule(\"CSSMediaRule\") &&\n        childRule.parentRule instanceof CSSMediaRule) ||\n      (hasNestedCSSRule(\"CSSSupportsRule\") &&\n        childRule.parentRule instanceof CSSSupportsRule) ||\n      (hasNestedCSSRule(\"CSSConditionRule\") &&\n        childRule.parentRule instanceof CSSConditionRule)\n    ) {\n      const rules = Array.from(\n        (childRule.parentRule as GroupingCSSRule).cssRules,\n      );\n      const index = rules.indexOf(childRule);\n      pos.unshift(index);\n    } else if (childRule.parentStyleSheet) {\n      const rules = Array.from(childRule.parentStyleSheet.cssRules);\n      const index = rules.indexOf(childRule);\n      pos.unshift(index);\n    }\n    return pos;\n  }\n  return recurse(rule, positions);\n}\n\n/**\n * For StyleSheets in Element, this function retrieves id of its host element.\n * For adopted StyleSheets, this function retrieves its styleId from a styleMirror.\n */\nfunction getIdAndStyleId(\n  sheet: CSSStyleSheet | undefined | null,\n  mirror: Mirror,\n  styleMirror: StyleSheetMirror,\n): {\n  styleId?: number;\n  id?: number;\n} {\n  let id, styleId;\n  if (!sheet) return {};\n  if (sheet.ownerNode) id = mirror.getId(sheet.ownerNode as Node);\n  else styleId = styleMirror.getId(sheet);\n  return {\n    styleId,\n    id,\n  };\n}\n\nfunction initStyleSheetObserver(\n  { styleSheetRuleCb, mirror, stylesheetManager }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n    // If, for whatever reason, CSSStyleSheet is not available, we skip the observation of stylesheets.\n    return () => {\n      // Do nothing\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const insertRule = win.CSSStyleSheet.prototype.insertRule;\n  win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n    apply: callbackWrapper(\n      (\n        target: typeof insertRule,\n        thisArg: CSSStyleSheet,\n        argumentsList: [string, number | undefined],\n      ) => {\n        const [rule, index] = argumentsList;\n\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            adds: [{ rule, index }],\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n  win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n    apply: callbackWrapper(\n      (\n        target: typeof deleteRule,\n        thisArg: CSSStyleSheet,\n        argumentsList: [number],\n      ) => {\n        const [index] = argumentsList;\n\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            removes: [{ index }],\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  let replace: (text: string) => Promise<CSSStyleSheet>;\n\n  if (win.CSSStyleSheet.prototype.replace) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    replace = win.CSSStyleSheet.prototype.replace;\n    win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n      apply: callbackWrapper(\n        (\n          target: typeof replace,\n          thisArg: CSSStyleSheet,\n          argumentsList: [string],\n        ) => {\n          const [text] = argumentsList;\n\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror,\n            stylesheetManager.styleMirror,\n          );\n\n          if ((id && id !== -1) || (styleId && styleId !== -1)) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replace: text,\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        },\n      ),\n    });\n  }\n\n  let replaceSync: (text: string) => void;\n  if (win.CSSStyleSheet.prototype.replaceSync) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n    win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n      apply: callbackWrapper(\n        (\n          target: typeof replaceSync,\n          thisArg: CSSStyleSheet,\n          argumentsList: [string],\n        ) => {\n          const [text] = argumentsList;\n\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror,\n            stylesheetManager.styleMirror,\n          );\n\n          if ((id && id !== -1) || (styleId && styleId !== -1)) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replaceSync: text,\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        },\n      ),\n    });\n  }\n\n  const supportedNestedCSSRuleTypes: {\n    [key: string]: GroupingCSSRuleTypes;\n  } = {};\n  if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n    supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n  } else {\n    // Some browsers (Safari) don't support CSSGroupingRule\n    // https://caniuse.com/?search=cssgroupingrule\n    // fall back to monkey patching classes that would have inherited from CSSGroupingRule\n\n    if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n      supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n      supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n      supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n    }\n  }\n\n  const unmodifiedFunctions: {\n    [key: string]: {\n      insertRule: (rule: string, index?: number) => number;\n      deleteRule: (index: number) => void;\n    };\n  } = {};\n\n  Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n    unmodifiedFunctions[typeKey] = {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      insertRule: type.prototype.insertRule,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      deleteRule: type.prototype.deleteRule,\n    };\n\n    type.prototype.insertRule = new Proxy(\n      unmodifiedFunctions[typeKey].insertRule,\n      {\n        apply: callbackWrapper(\n          (\n            target: typeof insertRule,\n            thisArg: CSSRule,\n            argumentsList: [string, number | undefined],\n          ) => {\n            const [rule, index] = argumentsList;\n\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror,\n              stylesheetManager.styleMirror,\n            );\n\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                adds: [\n                  {\n                    rule,\n                    index: [\n                      ...getNestedCSSRulePositions(thisArg),\n                      index || 0, // defaults to 0\n                    ],\n                  },\n                ],\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          },\n        ),\n      },\n    );\n\n    type.prototype.deleteRule = new Proxy(\n      unmodifiedFunctions[typeKey].deleteRule,\n      {\n        apply: callbackWrapper(\n          (\n            target: typeof deleteRule,\n            thisArg: CSSRule,\n            argumentsList: [number],\n          ) => {\n            const [index] = argumentsList;\n\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror,\n              stylesheetManager.styleMirror,\n            );\n\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                removes: [\n                  { index: [...getNestedCSSRulePositions(thisArg), index] },\n                ],\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          },\n        ),\n      },\n    );\n  });\n\n  return callbackWrapper(() => {\n    win.CSSStyleSheet.prototype.insertRule = insertRule;\n    win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n    replace && (win.CSSStyleSheet.prototype.replace = replace);\n    replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n      type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n      type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n    });\n  });\n}\n\nexport function initAdoptedStyleSheetObserver(\n  {\n    mirror,\n    stylesheetManager,\n  }: Pick<observerParam, \"mirror\" | \"stylesheetManager\">,\n  host: Document | ShadowRoot,\n): listenerHandler {\n  let hostId: number | null = null;\n  // host of adoptedStyleSheets is outermost document or IFrame's document\n  if (host.nodeName === \"#document\") hostId = mirror.getId(host);\n  // The host is a ShadowRoot.\n  else hostId = mirror.getId((host as ShadowRoot).host);\n\n  const patchTarget =\n    host.nodeName === \"#document\"\n      ? (host as Document).defaultView?.Document\n      : host.ownerDocument?.defaultView?.ShadowRoot;\n  const originalPropertyDescriptor = patchTarget?.prototype\n    ? Object.getOwnPropertyDescriptor(\n        patchTarget?.prototype,\n        \"adoptedStyleSheets\",\n      )\n    : undefined;\n  if (\n    hostId === null ||\n    hostId === -1 ||\n    !patchTarget ||\n    !originalPropertyDescriptor\n  )\n    return () => {\n      //\n    };\n\n  // Patch adoptedStyleSheets by overriding the original one.\n  Object.defineProperty(host, \"adoptedStyleSheets\", {\n    configurable: originalPropertyDescriptor.configurable,\n    enumerable: originalPropertyDescriptor.enumerable,\n    get(): CSSStyleSheet[] {\n      return originalPropertyDescriptor.get?.call(this) as CSSStyleSheet[];\n    },\n    set(sheets: CSSStyleSheet[]) {\n      const result = originalPropertyDescriptor.set?.call(this, sheets);\n      if (hostId !== null && hostId !== -1) {\n        try {\n          stylesheetManager.adoptStyleSheets(sheets, hostId);\n        } catch (e) {\n          // for safety\n        }\n      }\n      return result;\n    },\n  });\n\n  return callbackWrapper(() => {\n    Object.defineProperty(host, \"adoptedStyleSheets\", {\n      configurable: originalPropertyDescriptor.configurable,\n      enumerable: originalPropertyDescriptor.enumerable,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      get: originalPropertyDescriptor.get,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      set: originalPropertyDescriptor.set,\n    });\n  });\n}\n\nfunction initStyleDeclarationObserver(\n  {\n    styleDeclarationCb,\n    mirror,\n    ignoreCSSAttributes,\n    stylesheetManager,\n  }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n  win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n    apply: callbackWrapper(\n      (\n        target: typeof setProperty,\n        thisArg: CSSStyleDeclaration,\n        argumentsList: [string, string, string],\n      ) => {\n        const [property, value, priority] = argumentsList;\n\n        // ignore this mutation if we do not care about this css attribute\n        if (ignoreCSSAttributes.has(property)) {\n          return setProperty.apply(thisArg, [property, value, priority]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          thisArg.parentRule?.parentStyleSheet,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            set: {\n              property,\n              value,\n              priority,\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule!),\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n  win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n    apply: callbackWrapper(\n      (\n        target: typeof removeProperty,\n        thisArg: CSSStyleDeclaration,\n        argumentsList: [string],\n      ) => {\n        const [property] = argumentsList;\n\n        // ignore this mutation if we do not care about this css attribute\n        if (ignoreCSSAttributes.has(property)) {\n          return removeProperty.apply(thisArg, [property]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          thisArg.parentRule?.parentStyleSheet,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            remove: {\n              property,\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule!),\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  return callbackWrapper(() => {\n    win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n  });\n}\n\nfunction initMediaInteractionObserver({\n  mediaInteractionCb,\n  blockClass,\n  blockSelector,\n  mirror,\n  sampling,\n  doc,\n}: observerParam): listenerHandler {\n  const handler = callbackWrapper((type: MediaInteractions) =>\n    throttle(\n      callbackWrapper((event: Event) => {\n        const target = getEventTarget(event);\n        if (\n          !target ||\n          isBlocked(target as Node, blockClass, blockSelector, true)\n        ) {\n          return;\n        }\n        const { currentTime, volume, muted, playbackRate, loop } =\n          target as HTMLMediaElement;\n        mediaInteractionCb({\n          type,\n          id: mirror.getId(target as Node),\n          currentTime,\n          volume,\n          muted,\n          playbackRate,\n          loop,\n        });\n      }),\n      sampling.media || 500,\n    ),\n  );\n  const handlers = [\n    on(\"play\", handler(MediaInteractions.Play), doc),\n    on(\"pause\", handler(MediaInteractions.Pause), doc),\n    on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n    on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n    on(\"ratechange\", handler(MediaInteractions.RateChange), doc),\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initFontObserver({ fontCb, doc }: observerParam): listenerHandler {\n  const win = doc.defaultView as IWindow;\n  if (!win) {\n    return () => {\n      //\n    };\n  }\n\n  const handlers: listenerHandler[] = [];\n\n  const fontMap = new WeakMap<FontFace, fontParam>();\n\n  const originalFontFace = win.FontFace;\n  win.FontFace = function FontFace(\n    family: string,\n    source: string | ArrayBufferLike,\n    descriptors?: FontFaceDescriptors,\n  ) {\n    const safeSource: string | BufferSource =\n      typeof source === \"string\"\n        ? source\n        : source instanceof SharedArrayBuffer\n        ? new ArrayBuffer(source.byteLength)\n        : source; // already an ArrayBuffer\n\n    // Only perform the copy if source is not a string (and is a SharedArrayBuffer)\n    if (typeof source !== \"string\" && source instanceof SharedArrayBuffer) {\n      // Narrow safeSource to ArrayBuffer since we know it's not a string\n      new Uint8Array(safeSource as ArrayBuffer).set(new Uint8Array(source));\n    }\n\n    const fontFace = new originalFontFace(family, safeSource, descriptors);\n\n    fontMap.set(fontFace, {\n      family,\n      buffer: typeof source !== \"string\",\n      descriptors,\n      fontSource:\n        typeof source === \"string\"\n          ? source\n          : JSON.stringify(\n              Array.from(new Uint8Array(safeSource as ArrayBuffer)),\n            ),\n    });\n\n    return fontFace;\n  } as unknown as typeof FontFace;\n\n  const restoreHandler = patch(\n    doc.fonts,\n    \"add\",\n    function (original: (font: FontFace) => void) {\n      return function (this: FontFaceSet, fontFace: FontFace) {\n        setTimeout(\n          callbackWrapper(() => {\n            const p = fontMap.get(fontFace);\n            if (p) {\n              fontCb(p);\n              fontMap.delete(fontFace);\n            }\n          }),\n          0,\n        );\n        return original.apply(this, [fontFace]);\n      };\n    },\n  );\n\n  handlers.push(() => {\n    win.FontFace = originalFontFace;\n  });\n  handlers.push(restoreHandler);\n\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initSelectionObserver(param: observerParam): listenerHandler {\n  const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\n  let collapsed = true;\n\n  const updateSelection = callbackWrapper(() => {\n    const selection = doc.getSelection();\n\n    if (!selection || (collapsed && selection?.isCollapsed)) return;\n\n    collapsed = selection.isCollapsed || false;\n\n    const ranges: SelectionRange[] = [];\n    const count = selection.rangeCount || 0;\n\n    for (let i = 0; i < count; i++) {\n      const range = selection.getRangeAt(i);\n\n      const { startContainer, startOffset, endContainer, endOffset } = range;\n\n      const blocked =\n        isBlocked(startContainer, blockClass, blockSelector, true) ||\n        isBlocked(endContainer, blockClass, blockSelector, true);\n\n      if (blocked) continue;\n\n      ranges.push({\n        start: mirror.getId(startContainer),\n        startOffset,\n        end: mirror.getId(endContainer),\n        endOffset,\n      });\n    }\n\n    selectionCb({ ranges });\n  });\n\n  updateSelection();\n\n  return on(\"selectionchange\", updateSelection);\n}\n\nfunction initCustomElementObserver({\n  doc,\n  customElementCb,\n}: observerParam): listenerHandler {\n  const win = doc.defaultView as IWindow;\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  if (!win || !win.customElements) return () => {};\n  const restoreHandler = patch(\n    win.customElements,\n    \"define\",\n    function (\n      original: (\n        name: string,\n        constructor: CustomElementConstructor,\n        options?: ElementDefinitionOptions,\n      ) => void,\n    ) {\n      return function (\n        name: string,\n        constructor: CustomElementConstructor,\n        options?: ElementDefinitionOptions,\n      ) {\n        try {\n          customElementCb({\n            define: {\n              name,\n            },\n          });\n        } catch (e) {\n          console.warn(`Custom element callback failed for ${name}`);\n        }\n        return original.apply(this, [name, constructor, options]);\n      };\n    },\n  );\n  return restoreHandler;\n}\n\nfunction mergeHooks(o: observerParam, hooks: hooksParam) {\n  const {\n    mutationCb,\n    mousemoveCb,\n    mouseInteractionCb,\n    scrollCb,\n    viewportResizeCb,\n    inputCb,\n    typingCb,\n    deviceChangeCb,\n    mediaInteractionCb,\n    styleSheetRuleCb,\n    styleDeclarationCb,\n    canvasMutationCb,\n    fontCb,\n    selectionCb,\n    customElementCb,\n  } = o;\n  o.mutationCb = (...p: Arguments<mutationCallBack>) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o.mousemoveCb = (...p: Arguments<mousemoveCallBack>) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o.mouseInteractionCb = (...p: Arguments<mouseInteractionCallBack>) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o.scrollCb = (...p: Arguments<scrollCallback>) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o.viewportResizeCb = (...p: Arguments<viewportResizeCallback>) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o.inputCb = (...p: Arguments<inputCallback>) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o.typingCb = (...p: Arguments<typingCallback>) => {\n    if (hooks.typing) {\n      hooks.typing(...p);\n    }\n    typingCb(...p);\n  };\n  o.deviceChangeCb = (...p: Arguments<deviceChangeCallback>) => {\n    if (hooks.device) {\n      hooks.device(...p);\n    }\n    deviceChangeCb(...p);\n  };\n  o.mediaInteractionCb = (...p: Arguments<mediaInteractionCallback>) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o.styleSheetRuleCb = (...p: Arguments<styleSheetRuleCallback>) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o.styleDeclarationCb = (...p: Arguments<styleDeclarationCallback>) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o.canvasMutationCb = (...p: Arguments<canvasMutationCallback>) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o.fontCb = (...p: Arguments<fontCallback>) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o.selectionCb = (...p: Arguments<selectionCallback>) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o.customElementCb = (...c: Arguments<customElementCallback>) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c);\n    }\n    customElementCb(...c);\n  };\n}\n\nexport function initObservers(\n  o: observerParam,\n  hooks: hooksParam = {},\n): listenerHandler {\n  const currentWindow = o.doc.defaultView; // basically document.window\n  if (!currentWindow) {\n    return () => {\n      //\n    };\n  }\n  mergeHooks(o, hooks);\n  let mutationObserver: MutationObserver | undefined;\n  if (o.recordDOM) {\n    mutationObserver = initMutationObserver(o, o.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o);\n  const mouseInteractionHandler = initMouseInteractionObserver(o);\n  const scrollHandler = initScrollObserver(o);\n  const viewportResizeHandler = initViewportResizeObserver(o, {\n    win: currentWindow,\n  });\n  const inputHandler = initInputObserver(o);\n  const typingHandler = initTypingObserver(o);\n  const mediaDeviceChangeHandler = initDeviceChangeObserver(o);\n  const mediaInteractionHandler = initMediaInteractionObserver(o);\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let styleSheetObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let adoptedStyleSheetObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let styleDeclarationObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let fontObserver = () => {};\n  if (o.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o, {\n      win: currentWindow,\n    });\n    if (o.collectFonts) {\n      fontObserver = initFontObserver(o);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o);\n  const customElementObserver = initCustomElementObserver(o);\n\n  // plugins\n  const pluginHandlers: listenerHandler[] = [];\n  for (const plugin of o.plugins) {\n    pluginHandlers.push(\n      plugin.observer(plugin.callback, currentWindow, plugin.options),\n    );\n  }\n\n  return callbackWrapper(() => {\n    mutationBuffers.forEach((b) => b.reset());\n    mutationObserver?.disconnect();\n    mousemoveHandler();\n    mouseInteractionHandler();\n    scrollHandler();\n    viewportResizeHandler();\n    inputHandler();\n    typingHandler();\n    mediaInteractionHandler();\n    styleSheetObserver();\n    adoptedStyleSheetObserver();\n    styleDeclarationObserver();\n    fontObserver();\n    selectionObserver();\n    customElementObserver();\n    mediaDeviceChangeHandler();\n    pluginHandlers.forEach((h) => h());\n  });\n}\n\ntype CSSGroupingProp =\n  | \"CSSGroupingRule\"\n  | \"CSSMediaRule\"\n  | \"CSSSupportsRule\"\n  | \"CSSConditionRule\";\n\nfunction hasNestedCSSRule(prop: CSSGroupingProp): boolean {\n  return typeof window[prop] !== \"undefined\";\n}\n\nfunction canMonkeyPatchNestedCSSRule(prop: CSSGroupingProp): boolean {\n  return Boolean(\n    typeof window[prop] !== \"undefined\" &&\n      // Note: Generally, this check _shouldn't_ be necessary\n      // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n      window[prop].prototype &&\n      \"insertRule\" in window[prop].prototype &&\n      \"deleteRule\" in window[prop].prototype,\n  );\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 type { CanvasArg, IWindow } from '@sailfish-rrweb/types';\nimport { encode } from 'base64-arraybuffer';\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  CanvasContext,\n  type IWindow,\n  type blockClass,\n  type canvasManagerMutationCallback,\n  type listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { hookSetter, isBlocked, patch } 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): 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 (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\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 '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  blockClass,\n  IWindow,\n  listenerHandler,\n} from '@sailfish-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  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 (!isBlocked(this, blockClass, blockSelector, true)) {\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 {\n  CanvasContext,\n  type IWindow,\n  type blockClass,\n  type canvasManagerMutationCallback,\n  type canvasMutationWithType,\n  type listenerHandler,\n} from '@sailfish-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  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(this.canvas, blockClass, blockSelector, true)\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): 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      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        win,\n      ),\n    );\n  }\n\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n","import type {\n  DataURLOptions,\n  ICanvas,\n  Mirror,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  CanvasArg,\n  IWindow,\n  blockClass,\n  canvasManagerMutationCallback,\n  canvasMutationCallback,\n  canvasMutationCommand,\n  canvasMutationWithType,\n  listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { CanvasContext } from '@sailfish-rrweb/types';\nimport { isBlocked } from '../../../utils';\nimport type { ImageBitmapDataURLRequestWorker } from '../../workers/image-bitmap-data-url-worker';\nimport ImageBitmapDataURLWorker from '../../workers/image-bitmap-data-url-worker?worker&inline';\nimport initCanvas2DMutationObserver from './2d';\nimport initCanvasContextObserver from './canvas';\nimport initCanvasWebGLMutationObserver from './webgl';\n\nexport type RafStamps = { latestId: number; invokeId: number | null };\n\ntype pendingCanvasMutationsMap = Map<\n  HTMLCanvasElement,\n  canvasMutationWithType[]\n>;\n\nexport class CanvasManager {\n  private pendingCanvasMutations: pendingCanvasMutationsMap = new Map();\n  private rafStamps: RafStamps = { latestId: 0, invokeId: null };\n  private mirror: Mirror;\n\n  private mutationCb: canvasMutationCallback;\n  private resetObservers?: listenerHandler;\n  private frozen = false;\n  private locked = false;\n\n  public reset() {\n    this.pendingCanvasMutations.clear();\n    this.resetObservers && this.resetObservers();\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: {\n    recordCanvas: boolean;\n    mutationCb: canvasMutationCallback;\n    win: IWindow;\n    blockClass: blockClass;\n    blockSelector: string | null;\n    mirror: Mirror;\n    sampling?: 'all' | number;\n    dataURLOptions: DataURLOptions;\n  }) {\n    const {\n      sampling = 'all',\n      win,\n      blockClass,\n      blockSelector,\n      recordCanvas,\n      dataURLOptions,\n    } = options;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n\n    if (recordCanvas && sampling === 'all')\n      this.initCanvasMutationObserver(win, blockClass, blockSelector);\n    if (recordCanvas && typeof sampling === 'number')\n      this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n        dataURLOptions,\n      });\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    fps: number,\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n    options: {\n      dataURLOptions: DataURLOptions;\n    },\n  ) {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      true,\n    );\n    const snapshotInProgressMap: Map<number, boolean> = new Map();\n    const worker =\n      new ImageBitmapDataURLWorker() as ImageBitmapDataURLRequestWorker;\n    worker.onmessage = (e) => {\n      const { id } = e.data;\n      snapshotInProgressMap.set(id, false);\n\n      if (!('base64' in e.data)) return;\n\n      const { base64, type, width, height } = e.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            ],\n          },\n        ],\n      });\n    };\n\n    const timeBetweenSnapshots = 1000 / fps;\n    let lastSnapshotTime = 0;\n    let rafId: number;\n\n    const getCanvas = (): HTMLCanvasElement[] => {\n      const matchedCanvas: HTMLCanvasElement[] = [];\n      win.document.querySelectorAll('canvas').forEach((canvas) => {\n        if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n          matchedCanvas.push(canvas);\n        }\n      });\n      return matchedCanvas;\n    };\n\n    const takeCanvasSnapshots = (timestamp: DOMHighResTimeStamp) => {\n      if (\n        lastSnapshotTime &&\n        timestamp - lastSnapshotTime < timeBetweenSnapshots\n      ) {\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        return;\n      }\n      lastSnapshotTime = timestamp;\n\n      getCanvas()\n        // eslint-disable-next-line @typescript-eslint/no-misused-promises\n        .forEach(async (canvas: HTMLCanvasElement) => {\n          const id = this.mirror.getId(canvas);\n          if (snapshotInProgressMap.get(id)) return;\n\n          // The browser throws if the canvas is 0 in size\n          // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0.\n          // Assuming the same happens with height\n          if (canvas.width === 0 || canvas.height === 0) return;\n\n          snapshotInProgressMap.set(id, true);\n          if (['webgl', 'webgl2'].includes((canvas as ICanvas).__context)) {\n            // if the canvas hasn't been modified recently,\n            // its contents won't be in memory and `createImageBitmap`\n            // will return a transparent imageBitmap\n\n            const context = canvas.getContext((canvas as ICanvas).__context) as\n              | WebGLRenderingContext\n              | WebGL2RenderingContext\n              | null;\n            if (\n              context?.getContextAttributes()?.preserveDrawingBuffer === false\n            ) {\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          const bitmap = await createImageBitmap(canvas);\n          worker.postMessage(\n            {\n              id,\n              bitmap,\n              width: canvas.width,\n              height: canvas.height,\n              dataURLOptions: options.dataURLOptions,\n            },\n            [bitmap],\n          );\n        });\n      rafId = requestAnimationFrame(takeCanvasSnapshots);\n    };\n\n    rafId = requestAnimationFrame(takeCanvasSnapshots);\n\n    this.resetObservers = () => {\n      canvasContextReset();\n      cancelAnimationFrame(rafId);\n    };\n  }\n\n  private initCanvasMutationObserver(\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n  ): void {\n    this.startRAFTimestamping();\n    this.startPendingCanvasMutationFlusher();\n\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      false,\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n    );\n\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n    );\n\n    this.resetObservers = () => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    };\n  }\n\n  private startPendingCanvasMutationFlusher() {\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  private startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp: DOMHighResTimeStamp) => {\n      this.rafStamps.latestId = timestamp;\n      requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    requestAnimationFrame(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    requestAnimationFrame(() => 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","import type MutationBuffer from './mutation';\n\n/**\n * Keeps a log of nodes that could show up in multiple mutation buffer but shouldn't be handled twice.\n */\nexport default class ProcessedNodeManager {\n  private nodeMap: WeakMap<Node, Set<MutationBuffer>> = new WeakMap();\n\n  private active = false;\n\n  public inOtherBuffer(node: Node, thisBuffer: MutationBuffer) {\n    const buffers = this.nodeMap.get(node);\n    return (\n      buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer)\n    );\n  }\n\n  public add(node: Node, buffer: MutationBuffer) {\n    if (!this.active) {\n      this.active = true;\n      requestAnimationFrame(() => {\n        this.nodeMap = new WeakMap();\n        this.active = false;\n      });\n    }\n    this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n  }\n\n  public destroy() {\n    // cleanup no longer needed\n  }\n}\n","import type { Mirror } from '@sailfish-rrweb/rrweb-snapshot';\nimport { isNativeShadowDom } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  SamplingStrategy,\n  mutationCallBack,\n  scrollCallback,\n} from '@sailfish-rrweb/types';\nimport type { MutationBufferParam } from '../types';\nimport { inDom, patch } from '../utils';\nimport {\n  initAdoptedStyleSheetObserver,\n  initMutationObserver,\n  initScrollObserver,\n} from './observer';\n\ntype BypassOptions = Omit<\n  MutationBufferParam,\n  'doc' | 'mutationCb' | 'mirror' | 'shadowDomManager'\n> & {\n  sampling: SamplingStrategy;\n};\n\nexport class ShadowDomManager {\n  private shadowDoms = new WeakSet<ShadowRoot>();\n  private mutationCb: mutationCallBack;\n  private scrollCb: scrollCallback;\n  private bypassOptions: BypassOptions;\n  private mirror: Mirror;\n  private restoreHandlers: (() => void)[] = [];\n\n  constructor(options: {\n    mutationCb: mutationCallBack;\n    scrollCb: scrollCallback;\n    bypassOptions: BypassOptions;\n    mirror: Mirror;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.scrollCb = options.scrollCb;\n    this.bypassOptions = options.bypassOptions;\n    this.mirror = options.mirror;\n\n    this.init();\n  }\n\n  public init() {\n    this.reset();\n    // Patch 'attachShadow' to observe newly added shadow doms.\n    this.patchAttachShadow(Element, document);\n  }\n\n  public addShadowRoot(shadowRoot: ShadowRoot, doc: Document) {\n    if (!isNativeShadowDom(shadowRoot)) return;\n    if (this.shadowDoms.has(shadowRoot)) return;\n    this.shadowDoms.add(shadowRoot);\n    const observer = initMutationObserver(\n      {\n        ...this.bypassOptions,\n        doc,\n        mutationCb: this.mutationCb,\n        mirror: this.mirror,\n        shadowDomManager: this,\n      },\n      shadowRoot,\n    );\n    this.restoreHandlers.push(() => observer.disconnect());\n    this.restoreHandlers.push(\n      initScrollObserver({\n        ...this.bypassOptions,\n        scrollCb: this.scrollCb,\n        // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n        // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n        doc: shadowRoot as unknown as Document,\n        mirror: this.mirror,\n      }),\n    );\n    // Defer this to avoid adoptedStyleSheet events being created before the full snapshot is created or attachShadow action is recorded.\n    setTimeout(() => {\n      if (\n        shadowRoot.adoptedStyleSheets &&\n        shadowRoot.adoptedStyleSheets.length > 0\n      )\n        this.bypassOptions.stylesheetManager.adoptStyleSheets(\n          shadowRoot.adoptedStyleSheets,\n          this.mirror.getId(shadowRoot.host),\n        );\n      this.restoreHandlers.push(\n        initAdoptedStyleSheetObserver(\n          {\n            mirror: this.mirror,\n            stylesheetManager: this.bypassOptions.stylesheetManager,\n          },\n          shadowRoot,\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */\n  public observeAttachShadow(iframeElement: HTMLIFrameElement) {\n    if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n\n    this.patchAttachShadow(\n      (\n        iframeElement.contentWindow as Window & {\n          Element: { prototype: Element };\n        }\n      ).Element,\n      iframeElement.contentDocument,\n    );\n  }\n\n  /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */\n  private patchAttachShadow(\n    element: {\n      prototype: Element;\n    },\n    doc: Document,\n  ) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const manager = this;\n    this.restoreHandlers.push(\n      patch(\n        element.prototype,\n        'attachShadow',\n        function (original: (init: ShadowRootInit) => ShadowRoot) {\n          return function (this: Element, option: ShadowRootInit) {\n            const shadowRoot = original.call(this, option);\n            // For the shadow dom elements in the document, monitor their dom mutations.\n            // For shadow dom elements that aren't in the document yet,\n            // we start monitoring them once their shadow dom host is appended to the document.\n            if (this.shadowRoot && inDom(this))\n              manager.addShadowRoot(this.shadowRoot, doc);\n            return shadowRoot;\n          };\n        },\n      ),\n    );\n  }\n\n  public reset() {\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e) {\n        //\n      }\n    });\n    this.restoreHandlers = [];\n    this.shadowDoms = new WeakSet();\n  }\n}\n","import type {\n  CorruptedRuleInfo,\n  elementNode,\n  serializedNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport { stringifyRule } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  adoptedStyleSheetCallback,\n  adoptedStyleSheetParam,\n  attributeMutation,\n  mutationCallBack,\n} from '@sailfish-rrweb/types';\nimport { StyleSheetMirror } from '../utils';\n\nexport class StylesheetManager {\n  private trackedLinkElements: WeakSet<HTMLLinkElement> = new WeakSet();\n  private mutationCb: mutationCallBack;\n  private adoptedStyleSheetCb: adoptedStyleSheetCallback;\n  public styleMirror = new StyleSheetMirror();\n  public corruptedRules: CorruptedRuleInfo[] = [];\n\n  constructor(options: {\n    mutationCb: mutationCallBack;\n    adoptedStyleSheetCb: adoptedStyleSheetCallback;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n  }\n\n  public attachLinkElement(\n    linkEl: HTMLLinkElement,\n    childSn: serializedNodeWithId,\n  ) {\n    if ('_cssText' in (childSn as elementNode).attributes)\n      this.mutationCb({\n        adds: [],\n        removes: [],\n        texts: [],\n        attributes: [\n          {\n            id: childSn.id,\n            attributes: (childSn as elementNode)\n              .attributes as attributeMutation['attributes'],\n          },\n        ],\n      });\n\n    this.trackLinkElement(linkEl);\n  }\n\n  public trackLinkElement(linkEl: HTMLLinkElement) {\n    if (this.trackedLinkElements.has(linkEl)) return;\n\n    this.trackedLinkElements.add(linkEl);\n    this.trackStylesheetInLinkElement(linkEl);\n  }\n\n  public adoptStyleSheets(\n    sheets: CSSStyleSheet[] | readonly CSSStyleSheet[],\n    hostId: number,\n  ) {\n    if (sheets.length === 0) return;\n    const adoptedStyleSheetData: adoptedStyleSheetParam = {\n      id: hostId,\n      styleIds: [] as number[],\n    };\n    const styles: NonNullable<adoptedStyleSheetParam['styles']> = [];\n    for (const sheet of sheets) {\n      let styleId;\n      if (!this.styleMirror.has(sheet)) {\n        styleId = this.styleMirror.add(sheet);\n        styles.push({\n          styleId,\n          rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n            rule: stringifyRule(r),\n            index,\n          })),\n        });\n      } else styleId = this.styleMirror.getId(sheet);\n      adoptedStyleSheetData.styleIds.push(styleId);\n    }\n    if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n    this.adoptedStyleSheetCb(adoptedStyleSheetData);\n  }\n\n  public setCorruptedRules(rules: CorruptedRuleInfo[]) {\n    this.corruptedRules = rules;\n  }\n\n  public reset() {\n    this.styleMirror.reset();\n    this.trackedLinkElements = new WeakSet();\n    this.corruptedRules = [];\n  }\n\n  // TODO: take snapshot on stylesheet reload by applying event listener\n  private trackStylesheetInLinkElement(_linkEl: HTMLLinkElement) {\n    // linkEl.addEventListener('load', () => {\n    //   // re-loaded, maybe take another snapshot?\n    // });\n  }\n}\n","import {\n  createMirror,\n  snapshot,\n  type CorruptedRuleInfo,\n  type MaskInputOptions,\n  type SlimDOMOptions,\n} from \"@sailfish-rrweb/rrweb-snapshot\";\nimport {\n  EventType,\n  IncrementalSource,\n  type adoptedStyleSheetParam,\n  type canvasMutationParam,\n  type eventWithTime,\n  type eventWithoutTime,\n  type listenerHandler,\n  type mutationCallbackParam,\n  type scrollCallback,\n} from \"@sailfish-rrweb/types\";\nimport type {\n  CrossOriginIframeMessageEventContent,\n  recordOptions,\n} from \"../types\";\nimport {\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hasShadowRoot,\n  isSerializedIframe,\n  isSerializedStylesheet,\n  nowTimestamp,\n  on,\n  polyfill,\n} from \"../utils\";\nimport {\n  callbackWrapper,\n  registerErrorHandler,\n  unregisterErrorHandler,\n} from \"./error-handler\";\nimport { IframeManager } from \"./iframe-manager\";\nimport { initObservers, mutationBuffers } from \"./observer\";\nimport { CanvasManager } from \"./observers/canvas/canvas-manager\";\nimport ProcessedNodeManager from \"./processed-node-manager\";\nimport { ShadowDomManager } from \"./shadow-dom-manager\";\nimport { StylesheetManager } from \"./stylesheet-manager\";\n\nlet wrappedEmit!: (e: eventWithoutTime, isCheckout?: boolean) => void;\n\nlet takeFullSnapshot!: (isCheckout?: boolean) => void;\nlet canvasManager!: CanvasManager;\nlet recording = false;\n\n// Multiple tools (i.e. MooTools, Prototype.js) override Array.from and drop support for the 2nd parameter\n// Try to pull a clean implementation from a newly created iframe\ntry {\n  if (Array.from([1], (x) => x * 2)[0] !== 2) {\n    const cleanFrame = document.createElement(\"iframe\");\n    document.body.appendChild(cleanFrame);\n    // eslint-disable-next-line @typescript-eslint/unbound-method -- Array.from is static and doesn't rely on binding\n    Array.from = cleanFrame.contentWindow?.Array.from || Array.from;\n    document.body.removeChild(cleanFrame);\n  }\n} catch (err) {\n  console.debug(\"Unable to override Array.from\", err);\n}\n\nconst mirror = createMirror();\nfunction record<T = eventWithTime>(\n  options: recordOptions<T> = {},\n): listenerHandler | undefined {\n  const {\n    emit,\n    checkoutEveryNms,\n    checkoutEveryNth,\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    ignoreClass = \"rr-ignore\",\n    ignoreSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    maskAllInputs,\n    maskInputOptions: _maskInputOptions,\n    slimDOMOptions: _slimDOMOptions,\n    maskInputFn,\n    maskTextFn,\n    hooks,\n    packFn,\n    sampling = {},\n    dataURLOptions = {},\n    mousemoveWait,\n    recordDOM = true,\n    recordCanvas = false,\n    recordCrossOriginIframes = false,\n    recordAfter = options.recordAfter === \"DOMContentLoaded\"\n      ? options.recordAfter\n      : \"load\",\n    userTriggeredOnInput = false,\n    collectFonts = false,\n    inlineImages = false,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = new Set([]),\n    errorHandler,\n  } = options;\n\n\n  registerErrorHandler(errorHandler);\n\n  const inEmittingFrame = recordCrossOriginIframes\n    ? window.parent === window\n    : true;\n\n  let passEmitsToParent = false;\n  if (!inEmittingFrame) {\n    try {\n      // throws if parent is cross-origin\n      if (window.parent.document) {\n        passEmitsToParent = false; // if parent is same origin we collect iframe events from the parent\n      }\n    } catch (e) {\n      passEmitsToParent = true;\n    }\n  }\n\n  // runtime checks for user options\n  if (inEmittingFrame && !emit) {\n    throw new Error(\"emit function is required\");\n  }\n  if (!inEmittingFrame && !passEmitsToParent) {\n    return () => {\n      /* no-op since in this case we don't need to record anything from this frame in particular */\n    };\n  }\n  // move departed options to new options\n  if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n    sampling.mousemove = mousemoveWait;\n  }\n\n  // reset mirror in case `record` this was called earlier\n  mirror.reset();\n\n  const maskInputOptions: MaskInputOptions =\n    maskAllInputs === true\n      ? {\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          password: true,\n        }\n      : _maskInputOptions !== undefined\n      ? _maskInputOptions\n      : { password: true };\n\n  const slimDOMOptions: SlimDOMOptions =\n    _slimDOMOptions === true || _slimDOMOptions === \"all\"\n      ? {\n          script: true,\n          comment: true,\n          headFavicon: true,\n          headWhitespace: true,\n          headMetaSocial: true,\n          headMetaRobots: true,\n          headMetaHttpEquiv: true,\n          headMetaVerification: true,\n          // the following are off for slimDOMOptions === true,\n          // as they destroy some (hidden) info:\n          headMetaAuthorship: _slimDOMOptions === \"all\",\n          headMetaDescKeywords: _slimDOMOptions === \"all\",\n          headTitleMutations: _slimDOMOptions === \"all\",\n        }\n      : _slimDOMOptions\n      ? _slimDOMOptions\n      : {};\n\n  polyfill();\n\n  let lastFullSnapshotEvent: eventWithTime;\n  let incrementalSnapshotCount = 0;\n\n  const eventProcessor = (e: eventWithTime): T => {\n    for (const plugin of plugins || []) {\n      if (plugin.eventProcessor) {\n        e = plugin.eventProcessor(e);\n      }\n    }\n    if (\n      packFn &&\n      // Disable packing events which will be emitted to parent frames.\n      !passEmitsToParent\n    ) {\n      e = packFn(e) as unknown as eventWithTime;\n    }\n    return e as unknown as T;\n  };\n  wrappedEmit = (r: eventWithoutTime, isCheckout?: boolean) => {\n    const e = r as eventWithTime;\n    e.timestamp = nowTimestamp();\n\n    if (\n      mutationBuffers[0]?.isFrozen() &&\n      e.type !== EventType.FullSnapshot &&\n      !(\n        e.type === EventType.IncrementalSnapshot &&\n        e.data.source === IncrementalSource.Mutation\n      )\n    ) {\n      // we've got a user initiated event so first we need to apply\n      // all DOM changes that have been buffering during paused state\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n\n    if (inEmittingFrame) {\n      emit?.(eventProcessor(e), isCheckout);\n    } else if (passEmitsToParent) {\n      const message: CrossOriginIframeMessageEventContent<T> = {\n        type: \"@sailfish-rrweb/rrweb\",\n        event: eventProcessor(e),\n        origin: window.location.origin,\n        isCheckout,\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n\n    if (e.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e;\n      incrementalSnapshotCount = 0;\n    } else if (e.type === EventType.IncrementalSnapshot) {\n      // attach iframe should be considered as full snapshot\n      if (\n        e.data.source === IncrementalSource.Mutation &&\n        e.data.isAttachIframe\n      ) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount =\n        checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime =\n        checkoutEveryNms &&\n        e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot(true);\n      }\n    }\n  };\n\n  const wrappedMutationEmit = (m: mutationCallbackParam) => {\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Mutation,\n        ...m,\n      },\n    });\n  };\n  const wrappedScrollEmit: scrollCallback = (p) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Scroll,\n        ...p,\n      },\n    });\n  const wrappedCanvasMutationEmit = (p: canvasMutationParam) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.CanvasMutation,\n        ...p,\n      },\n    });\n\n  const wrappedAdoptedStyleSheetEmit = (a: adoptedStyleSheetParam) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.AdoptedStyleSheet,\n        ...a,\n      },\n    });\n\n  const stylesheetManager = new StylesheetManager({\n    mutationCb: wrappedMutationEmit,\n    adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n  });\n\n  const iframeManager = new IframeManager({\n    mirror,\n    mutationCb: wrappedMutationEmit,\n    stylesheetManager: stylesheetManager,\n    recordCrossOriginIframes,\n    wrappedEmit,\n  });\n\n  /**\n   * Exposes mirror to the plugins\n   */\n  for (const plugin of plugins || []) {\n    if (plugin.getMirror)\n      plugin.getMirror({\n        nodeMirror: mirror,\n        crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n        crossOriginIframeStyleMirror:\n          iframeManager.crossOriginIframeStyleMirror,\n      });\n  }\n\n  const processedNodeManager = new ProcessedNodeManager();\n\n  canvasManager = new CanvasManager({\n    recordCanvas,\n    mutationCb: wrappedCanvasMutationEmit,\n    win: window,\n    blockClass,\n    blockSelector,\n    mirror,\n    sampling: sampling.canvas,\n    dataURLOptions,\n  });\n\n  const shadowDomManager = new ShadowDomManager({\n    mutationCb: wrappedMutationEmit,\n    scrollCb: wrappedScrollEmit,\n    bypassOptions: {\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskInputOptions,\n      dataURLOptions,\n      maskTextFn,\n      maskInputFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager,\n    },\n    mirror,\n  });\n\n  takeFullSnapshot = (isCheckout = false) => {\n    if (!recordDOM) {\n      return;\n    }\n    wrappedEmit(\n      {\n        type: EventType.Meta,\n        data: {\n          href: window.location.href,\n          width: getWindowWidth(),\n          height: getWindowHeight(),\n        },\n      },\n      isCheckout,\n    );\n\n    // When we take a full snapshot, old tracked StyleSheets need to be removed.\n    stylesheetManager.reset();\n\n    shadowDomManager.init();\n\n    mutationBuffers.forEach((buf) => buf.lock()); // don't allow any mirror modifications during snapshotting\n    const corruptedRules: CorruptedRuleInfo[] = [];\n    const node = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      corruptedRules,\n      onSerialize: (n) => {\n        if (isSerializedIframe(n, mirror)) {\n          iframeManager.addIframe(n as HTMLIFrameElement);\n        }\n        if (isSerializedStylesheet(n, mirror)) {\n          stylesheetManager.trackLinkElement(n as HTMLLinkElement);\n        }\n        if (hasShadowRoot(n)) {\n          shadowDomManager.addShadowRoot(n.shadowRoot, document);\n        }\n      },\n      onIframeLoad: (iframe, childSn) => {\n        iframeManager.attachIframe(iframe, childSn);\n        shadowDomManager.observeAttachShadow(iframe);\n      },\n      onStylesheetLoad: (linkEl, childSn) => {\n        stylesheetManager.attachLinkElement(linkEl, childSn);\n      },\n      keepIframeSrcFn,\n    });\n\n    if (!node) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n\n    // Store corrupted rules for use during incremental snapshots.\n    stylesheetManager.setCorruptedRules(corruptedRules);\n\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node,\n          initialOffset: getWindowScroll(window),\n        },\n      },\n      isCheckout,\n    );\n    mutationBuffers.forEach((buf) => buf.unlock()); // generate & emit any mutations that happened during snapshotting, as can now apply against the newly built mirror\n\n    // Some old browsers don't support adoptedStyleSheets.\n    if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n      stylesheetManager.adoptStyleSheets(\n        document.adoptedStyleSheets,\n        mirror.getId(document),\n      );\n  };\n\n  try {\n    const handlers: listenerHandler[] = [];\n\n    const observe = (doc: Document) => {\n      return callbackWrapper(initObservers)(\n        {\n          mutationCb: wrappedMutationEmit,\n          mousemoveCb: (positions, source) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source,\n                positions,\n              },\n            }),\n          mouseInteractionCb: (d) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.MouseInteraction,\n                ...d,\n              },\n            }),\n          scrollCb: wrappedScrollEmit,\n          viewportResizeCb: (d) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.ViewportResize,\n                ...d,\n              },\n            }),\n          inputCb: (v) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Input,\n                ...v,\n              },\n            }),\n          mediaInteractionCb: (p) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.MediaInteraction,\n                ...p,\n              },\n            }),\n          styleSheetRuleCb: (r) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.StyleSheetRule,\n                ...r,\n              },\n            }),\n          styleDeclarationCb: (r) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.StyleDeclaration,\n                ...r,\n              },\n            }),\n          canvasMutationCb: wrappedCanvasMutationEmit,\n          fontCb: (p) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Font,\n                ...p,\n              },\n            }),\n          selectionCb: (p) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Selection,\n                ...p,\n              },\n            });\n          },\n          customElementCb: (c) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c,\n              },\n            });\n          },\n          typingCb: (v) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                ...v,\n              },\n            })\n          },\n\n          deviceChangeCb: (v) => {\n            wrappedEmit({\n              type: EventType.Device,\n              data: {\n                ...v,\n              },\n            })\n          },\n\n          blockClass,\n          ignoreClass,\n          ignoreSelector,\n          maskTextClass,\n          maskTextSelector,\n          maskInputOptions,\n          inlineStylesheet,\n          sampling,\n          recordDOM,\n          recordCanvas,\n          inlineImages,\n          userTriggeredOnInput,\n          collectFonts,\n          doc,\n          maskInputFn,\n          maskTextFn,\n          keepIframeSrcFn,\n          blockSelector,\n          slimDOMOptions,\n          dataURLOptions,\n          mirror,\n          iframeManager,\n          stylesheetManager,\n          shadowDomManager,\n          processedNodeManager,\n          canvasManager,\n          ignoreCSSAttributes,\n          plugins:\n            plugins\n              ?.filter((p) => p.observer)\n              ?.map((p) => ({\n                observer: p.observer!,\n                options: p.options,\n                callback: (payload: object) =>\n                  wrappedEmit({\n                    type: EventType.Plugin,\n                    data: {\n                      plugin: p.name,\n                      payload,\n                    },\n                  }),\n              })) || [],\n        },\n        hooks,\n      );\n    };\n\n    iframeManager.addLoadListener((iframeEl) => {\n      try {\n        handlers.push(observe(iframeEl.contentDocument!));\n      } catch (error) {\n        // TODO: handle internal error\n        console.warn(error);\n      }\n    });\n\n    const init = () => {\n      takeFullSnapshot();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if (\n      document.readyState === \"interactive\" ||\n      document.readyState === \"complete\"\n    ) {\n      init();\n    } else {\n      handlers.push(\n        on(\"DOMContentLoaded\", () => {\n          wrappedEmit({\n            type: EventType.DomContentLoaded,\n            data: {},\n          });\n          if (recordAfter === \"DOMContentLoaded\") init();\n        }),\n      );\n      handlers.push(\n        on(\n          \"load\",\n          () => {\n            wrappedEmit({\n              type: EventType.Load,\n              data: {},\n            });\n            if (recordAfter === \"load\") init();\n          },\n          window,\n        ),\n      );\n    }\n    return () => {\n      handlers.forEach((h) => h());\n      processedNodeManager.destroy();\n      recording = false;\n      unregisterErrorHandler();\n    };\n  } catch (error) {\n    // TODO: handle internal error\n    console.warn(error);\n  }\n}\n\nrecord.addCustomEvent = <T>(tag: string, payload: T) => {\n  if (!recording) {\n    throw new Error(\"please add custom event after start recording\");\n  }\n  wrappedEmit({\n    type: EventType.Custom,\n    data: {\n      tag,\n      payload,\n    },\n  });\n};\n\n\nrecord.addSailfishEvent = <T>(type: number, payload: T) => {\n  if (!recording) {\n    throw new Error(\"please add Sailfish event after start recording\");\n  }\n  const tag = \"sailfish-zendesk-test-tag\"\n  wrappedEmit({\n    /// type should come from arguments\n    type,\n    data: {\n      tag,\n      payload\n    },\n  });\n};\n\nrecord.freezePage = () => {\n  mutationBuffers.forEach((buf) => buf.freeze());\n};\n\nrecord.takeFullSnapshot = (isCheckout?: boolean) => {\n  if (!recording) {\n    throw new Error(\"please take full snapshot after start recording\");\n  }\n  takeFullSnapshot(isCheckout);\n};\n\nrecord.mirror = mirror;\n\nexport default record;\n","var ps = Object.defineProperty;\nvar fs = (e, t, s) => t in e ? ps(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;\nvar c = (e, t, s) => fs(e, typeof t != \"symbol\" ? t + \"\" : t, s);\nvar ds = Object.defineProperty, ms = (e, t, s) => t in e ? ds(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s, ee = (e, t, s) => ms(e, typeof t != \"symbol\" ? t + \"\" : t, s), d = /* @__PURE__ */ ((e) => (e[e.Document = 0] = \"Document\", e[e.DocumentType = 1] = \"DocumentType\", e[e.Element = 2] = \"Element\", e[e.Text = 3] = \"Text\", e[e.CDATA = 4] = \"CDATA\", e[e.Comment = 5] = \"Comment\", e))(d || {});\nclass gs {\n  constructor() {\n    ee(this, \"idNodeMap\", /* @__PURE__ */ new Map()), ee(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(t) {\n    var s;\n    return t ? ((s = this.getMeta(t)) == null ? void 0 : s.id) ?? -1 : -1;\n  }\n  getNode(t) {\n    return this.idNodeMap.get(t) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(t) {\n    return this.nodeMetaMap.get(t) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(t) {\n    const s = this.getId(t);\n    this.idNodeMap.delete(s), t.childNodes && t.childNodes.forEach(\n      (r) => this.removeNodeFromMap(r)\n    );\n  }\n  has(t) {\n    return this.idNodeMap.has(t);\n  }\n  hasNode(t) {\n    return this.nodeMetaMap.has(t);\n  }\n  add(t, s) {\n    const r = s.id;\n    this.idNodeMap.set(r, t), this.nodeMetaMap.set(t, s);\n  }\n  replace(t, s) {\n    const r = this.getNode(t);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(s, i);\n    }\n    this.idNodeMap.set(t, s);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction ws() {\n  return new gs();\n}\nfunction ys(e) {\n  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nfunction bs(e) {\n  if (e.__esModule) return e;\n  var t = e.default;\n  if (typeof t == \"function\") {\n    var s = function r() {\n      return this instanceof r ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);\n    };\n    s.prototype = t.prototype;\n  } else s = {};\n  return Object.defineProperty(s, \"__esModule\", { value: !0 }), Object.keys(e).forEach(function(r) {\n    var i = Object.getOwnPropertyDescriptor(e, r);\n    Object.defineProperty(s, r, i.get ? i : {\n      enumerable: !0,\n      get: function() {\n        return e[r];\n      }\n    });\n  }), s;\n}\nvar jt = { exports: {} }, f = String, Ee = function() {\n  return { isColorSupported: !1, reset: f, bold: f, dim: f, italic: f, underline: f, inverse: f, hidden: f, strikethrough: f, black: f, red: f, green: f, yellow: f, blue: f, magenta: f, cyan: f, white: f, gray: f, bgBlack: f, bgRed: f, bgGreen: f, bgYellow: f, bgBlue: f, bgMagenta: f, bgCyan: f, bgWhite: f, blackBright: f, redBright: f, greenBright: f, yellowBright: f, blueBright: f, magentaBright: f, cyanBright: f, whiteBright: f, bgBlackBright: f, bgRedBright: f, bgGreenBright: f, bgYellowBright: f, bgBlueBright: f, bgMagentaBright: f, bgCyanBright: f, bgWhiteBright: f };\n};\njt.exports = Ee();\njt.exports.createColors = Ee;\nvar Es = jt.exports;\nconst xs = {}, Cs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: xs\n}, Symbol.toStringTag, { value: \"Module\" })), S = /* @__PURE__ */ bs(Cs);\nlet se = Es, re = S, Ct = class xe extends Error {\n  constructor(t, s, r, i, n, a) {\n    super(t), this.name = \"CssSyntaxError\", this.reason = t, n && (this.file = n), i && (this.source = i), a && (this.plugin = a), typeof s < \"u\" && typeof r < \"u\" && (typeof s == \"number\" ? (this.line = s, this.column = r) : (this.line = s.line, this.column = s.column, this.endLine = r.line, this.endColumn = r.column)), this.setMessage(), Error.captureStackTrace && Error.captureStackTrace(this, xe);\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\", this.message += this.file ? this.file : \"<css input>\", typeof this.line < \"u\" && (this.message += \":\" + this.line + \":\" + this.column), this.message += \": \" + this.reason;\n  }\n  showSourceCode(t) {\n    if (!this.source) return \"\";\n    let s = this.source;\n    t == null && (t = se.isColorSupported);\n    let r = (u) => u, i = (u) => u, n = (u) => u;\n    if (t) {\n      let { bold: u, gray: m, red: w } = se.createColors(!0);\n      i = (E) => u(w(E)), r = (E) => m(E), re && (n = (E) => re(E));\n    }\n    let a = s.split(/\\r?\\n/), o = Math.max(this.line - 3, 0), l = Math.min(this.line + 2, a.length), p = String(l).length;\n    return a.slice(o, l).map((u, m) => {\n      let w = o + 1 + m, E = \" \" + (\" \" + w).slice(-p) + \" | \";\n      if (w === this.line) {\n        if (u.length > 160) {\n          let h = 20, v = Math.max(0, this.column - h), N = Math.max(\n            this.column + h,\n            this.endColumn + h\n          ), x = u.slice(v, N), b = r(E.replace(/\\d/g, \" \")) + u.slice(0, Math.min(this.column - 1, h - 1)).replace(/[^\\t]/g, \" \");\n          return i(\">\") + r(E) + n(x) + `\n ` + b + i(\"^\");\n        }\n        let D = r(E.replace(/\\d/g, \" \")) + u.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return i(\">\") + r(E) + n(u) + `\n ` + D + i(\"^\");\n      }\n      return \" \" + r(E) + n(u);\n    }).join(`\n`);\n  }\n  toString() {\n    let t = this.showSourceCode();\n    return t && (t = `\n\n` + t + `\n`), this.name + \": \" + this.message + t;\n  }\n};\nvar zt = Ct;\nCt.default = Ct;\nconst ie = {\n  after: `\n`,\n  beforeClose: `\n`,\n  beforeComment: `\n`,\n  beforeDecl: `\n`,\n  beforeOpen: \" \",\n  beforeRule: `\n`,\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: !1\n};\nfunction Rs(e) {\n  return e[0].toUpperCase() + e.slice(1);\n}\nlet Rt = class {\n  constructor(e) {\n    this.builder = e;\n  }\n  atrule(e, t) {\n    let s = \"@\" + e.name, r = e.params ? this.rawValue(e, \"params\") : \"\";\n    if (typeof e.raws.afterName < \"u\" ? s += e.raws.afterName : r && (s += \" \"), e.nodes)\n      this.block(e, s + r);\n    else {\n      let i = (e.raws.between || \"\") + (t ? \";\" : \"\");\n      this.builder(s + r + i, e);\n    }\n  }\n  beforeAfter(e, t) {\n    let s;\n    e.type === \"decl\" ? s = this.raw(e, null, \"beforeDecl\") : e.type === \"comment\" ? s = this.raw(e, null, \"beforeComment\") : t === \"before\" ? s = this.raw(e, null, \"beforeRule\") : s = this.raw(e, null, \"beforeClose\");\n    let r = e.parent, i = 0;\n    for (; r && r.type !== \"root\"; )\n      i += 1, r = r.parent;\n    if (s.includes(`\n`)) {\n      let n = this.raw(e, null, \"indent\");\n      if (n.length)\n        for (let a = 0; a < i; a++) s += n;\n    }\n    return s;\n  }\n  block(e, t) {\n    let s = this.raw(e, \"between\", \"beforeOpen\");\n    this.builder(t + s + \"{\", e, \"start\");\n    let r;\n    e.nodes && e.nodes.length ? (this.body(e), r = this.raw(e, \"after\")) : r = this.raw(e, \"after\", \"emptyBody\"), r && this.builder(r), this.builder(\"}\", e, \"end\");\n  }\n  body(e) {\n    let t = e.nodes.length - 1;\n    for (; t > 0 && e.nodes[t].type === \"comment\"; )\n      t -= 1;\n    let s = this.raw(e, \"semicolon\");\n    for (let r = 0; r < e.nodes.length; r++) {\n      let i = e.nodes[r], n = this.raw(i, \"before\");\n      n && this.builder(n), this.stringify(i, t !== r || s);\n    }\n  }\n  comment(e) {\n    let t = this.raw(e, \"left\", \"commentLeft\"), s = this.raw(e, \"right\", \"commentRight\");\n    this.builder(\"/*\" + t + e.text + s + \"*/\", e);\n  }\n  decl(e, t) {\n    let s = this.raw(e, \"between\", \"colon\"), r = e.prop + s + this.rawValue(e, \"value\");\n    e.important && (r += e.raws.important || \" !important\"), t && (r += \";\"), this.builder(r, e);\n  }\n  document(e) {\n    this.body(e);\n  }\n  raw(e, t, s) {\n    let r;\n    if (s || (s = t), t && (r = e.raws[t], typeof r < \"u\"))\n      return r;\n    let i = e.parent;\n    if (s === \"before\" && (!i || i.type === \"root\" && i.first === e || i && i.type === \"document\"))\n      return \"\";\n    if (!i) return ie[s];\n    let n = e.root();\n    if (n.rawCache || (n.rawCache = {}), typeof n.rawCache[s] < \"u\")\n      return n.rawCache[s];\n    if (s === \"before\" || s === \"after\")\n      return this.beforeAfter(e, s);\n    {\n      let a = \"raw\" + Rs(s);\n      this[a] ? r = this[a](n, e) : n.walk((o) => {\n        if (r = o.raws[t], typeof r < \"u\") return !1;\n      });\n    }\n    return typeof r > \"u\" && (r = ie[s]), n.rawCache[s] = r, r;\n  }\n  rawBeforeClose(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length > 0 && typeof s.raws.after < \"u\")\n        return t = s.raws.after, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawBeforeComment(e, t) {\n    let s;\n    return e.walkComments((r) => {\n      if (typeof r.raws.before < \"u\")\n        return s = r.raws.before, s.includes(`\n`) && (s = s.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof s > \"u\" ? s = this.raw(t, null, \"beforeDecl\") : s && (s = s.replace(/\\S/g, \"\")), s;\n  }\n  rawBeforeDecl(e, t) {\n    let s;\n    return e.walkDecls((r) => {\n      if (typeof r.raws.before < \"u\")\n        return s = r.raws.before, s.includes(`\n`) && (s = s.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof s > \"u\" ? s = this.raw(t, null, \"beforeRule\") : s && (s = s.replace(/\\S/g, \"\")), s;\n  }\n  rawBeforeOpen(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.type !== \"decl\" && (t = s.raws.between, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawBeforeRule(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && (s.parent !== e || e.first !== s) && typeof s.raws.before < \"u\")\n        return t = s.raws.before, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawColon(e) {\n    let t;\n    return e.walkDecls((s) => {\n      if (typeof s.raws.between < \"u\")\n        return t = s.raws.between.replace(/[^\\s:]/g, \"\"), !1;\n    }), t;\n  }\n  rawEmptyBody(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length === 0 && (t = s.raws.after, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawIndent(e) {\n    if (e.raws.indent) return e.raws.indent;\n    let t;\n    return e.walk((s) => {\n      let r = s.parent;\n      if (r && r !== e && r.parent && r.parent === e && typeof s.raws.before < \"u\") {\n        let i = s.raws.before.split(`\n`);\n        return t = i[i.length - 1], t = t.replace(/\\S/g, \"\"), !1;\n      }\n    }), t;\n  }\n  rawSemicolon(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length && s.last.type === \"decl\" && (t = s.raws.semicolon, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawValue(e, t) {\n    let s = e[t], r = e.raws[t];\n    return r && r.value === s ? r.raw : s;\n  }\n  root(e) {\n    this.body(e), e.raws.after && this.builder(e.raws.after);\n  }\n  rule(e) {\n    this.block(e, this.rawValue(e, \"selector\")), e.raws.ownSemicolon && this.builder(e.raws.ownSemicolon, e, \"end\");\n  }\n  stringify(e, t) {\n    if (!this[e.type])\n      throw new Error(\n        \"Unknown AST node type \" + e.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    this[e.type](e, t);\n  }\n};\nvar Ce = Rt;\nRt.default = Rt;\nlet Ns = Ce;\nfunction Nt(e, t) {\n  new Ns(t).stringify(e);\n}\nvar ct = Nt;\nNt.default = Nt;\nvar Y = {};\nY.isClean = Symbol(\"isClean\");\nY.my = Symbol(\"my\");\nlet Ss = zt, vs = Ce, Os = ct, { isClean: F, my: Ds } = Y;\nfunction St(e, t) {\n  let s = new e.constructor();\n  for (let r in e) {\n    if (!Object.prototype.hasOwnProperty.call(e, r) || r === \"proxyCache\") continue;\n    let i = e[r], n = typeof i;\n    r === \"parent\" && n === \"object\" ? t && (s[r] = t) : r === \"source\" ? s[r] = i : Array.isArray(i) ? s[r] = i.map((a) => St(a, s)) : (n === \"object\" && i !== null && (i = St(i)), s[r] = i);\n  }\n  return s;\n}\nfunction B(e, t) {\n  if (t && typeof t.offset < \"u\")\n    return t.offset;\n  let s = 1, r = 1, i = 0;\n  for (let n = 0; n < e.length; n++) {\n    if (r === t.line && s === t.column) {\n      i = n;\n      break;\n    }\n    e[n] === `\n` ? (s = 1, r += 1) : s += 1;\n  }\n  return i;\n}\nlet vt = class {\n  get proxyOf() {\n    return this;\n  }\n  constructor(e = {}) {\n    this.raws = {}, this[F] = !1, this[Ds] = !0;\n    for (let t in e)\n      if (t === \"nodes\") {\n        this.nodes = [];\n        for (let s of e[t])\n          typeof s.clone == \"function\" ? this.append(s.clone()) : this.append(s);\n      } else\n        this[t] = e[t];\n  }\n  addToError(e) {\n    if (e.postcssNode = this, e.stack && this.source && /\\n\\s{4}at /.test(e.stack)) {\n      let t = this.source;\n      e.stack = e.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${t.input.from}:${t.start.line}:${t.start.column}$&`\n      );\n    }\n    return e;\n  }\n  after(e) {\n    return this.parent.insertAfter(this, e), this;\n  }\n  assign(e = {}) {\n    for (let t in e)\n      this[t] = e[t];\n    return this;\n  }\n  before(e) {\n    return this.parent.insertBefore(this, e), this;\n  }\n  cleanRaws(e) {\n    delete this.raws.before, delete this.raws.after, e || delete this.raws.between;\n  }\n  clone(e = {}) {\n    let t = St(this);\n    for (let s in e)\n      t[s] = e[s];\n    return t;\n  }\n  cloneAfter(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertAfter(this, t), t;\n  }\n  cloneBefore(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertBefore(this, t), t;\n  }\n  error(e, t = {}) {\n    if (this.source) {\n      let { end: s, start: r } = this.rangeBy(t);\n      return this.source.input.error(\n        e,\n        { column: r.column, line: r.line },\n        { column: s.column, line: s.line },\n        t\n      );\n    }\n    return new Ss(e);\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : t === \"root\" ? () => e.root().toProxy() : e[t];\n      },\n      set(e, t, s) {\n        return e[t] === s || (e[t] = s, (t === \"prop\" || t === \"value\" || t === \"name\" || t === \"params\" || t === \"important\" || /* c8 ignore next */\n        t === \"text\") && e.markDirty()), !0;\n      }\n    };\n  }\n  /* c8 ignore next 3 */\n  markClean() {\n    this[F] = !0;\n  }\n  markDirty() {\n    if (this[F]) {\n      this[F] = !1;\n      let e = this;\n      for (; e = e.parent; )\n        e[F] = !1;\n    }\n  }\n  next() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e + 1];\n  }\n  positionBy(e) {\n    let t = this.source.start;\n    if (e.index)\n      t = this.positionInside(e.index);\n    else if (e.word) {\n      let s = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, r = s.slice(\n        B(s, this.source.start),\n        B(s, this.source.end)\n      ).indexOf(e.word);\n      r !== -1 && (t = this.positionInside(r));\n    }\n    return t;\n  }\n  positionInside(e) {\n    let t = this.source.start.column, s = this.source.start.line, r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, i = B(r, this.source.start), n = i + e;\n    for (let a = i; a < n; a++)\n      r[a] === `\n` ? (t = 1, s += 1) : t += 1;\n    return { column: t, line: s };\n  }\n  prev() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e - 1];\n  }\n  rangeBy(e) {\n    let t = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }, s = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: t.column + 1,\n      line: t.line\n    };\n    if (e.word) {\n      let r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, i = r.slice(\n        B(r, this.source.start),\n        B(r, this.source.end)\n      ).indexOf(e.word);\n      i !== -1 && (t = this.positionInside(i), s = this.positionInside(\n        i + e.word.length\n      ));\n    } else\n      e.start ? t = {\n        column: e.start.column,\n        line: e.start.line\n      } : e.index && (t = this.positionInside(e.index)), e.end ? s = {\n        column: e.end.column,\n        line: e.end.line\n      } : typeof e.endIndex == \"number\" ? s = this.positionInside(e.endIndex) : e.index && (s = this.positionInside(e.index + 1));\n    return (s.line < t.line || s.line === t.line && s.column <= t.column) && (s = { column: t.column + 1, line: t.line }), { end: s, start: t };\n  }\n  raw(e, t) {\n    return new vs().raw(this, e, t);\n  }\n  remove() {\n    return this.parent && this.parent.removeChild(this), this.parent = void 0, this;\n  }\n  replaceWith(...e) {\n    if (this.parent) {\n      let t = this, s = !1;\n      for (let r of e)\n        r === this ? s = !0 : s ? (this.parent.insertAfter(t, r), t = r) : this.parent.insertBefore(t, r);\n      s || this.remove();\n    }\n    return this;\n  }\n  root() {\n    let e = this;\n    for (; e.parent && e.parent.type !== \"document\"; )\n      e = e.parent;\n    return e;\n  }\n  toJSON(e, t) {\n    let s = {}, r = t == null;\n    t = t || /* @__PURE__ */ new Map();\n    let i = 0;\n    for (let n in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, n) || n === \"parent\" || n === \"proxyCache\") continue;\n      let a = this[n];\n      if (Array.isArray(a))\n        s[n] = a.map((o) => typeof o == \"object\" && o.toJSON ? o.toJSON(null, t) : o);\n      else if (typeof a == \"object\" && a.toJSON)\n        s[n] = a.toJSON(null, t);\n      else if (n === \"source\") {\n        let o = t.get(a.input);\n        o == null && (o = i, t.set(a.input, i), i++), s[n] = {\n          end: a.end,\n          inputId: o,\n          start: a.start\n        };\n      } else\n        s[n] = a;\n    }\n    return r && (s.inputs = [...t.keys()].map((n) => n.toJSON())), s;\n  }\n  toProxy() {\n    return this.proxyCache || (this.proxyCache = new Proxy(this, this.getProxyProcessor())), this.proxyCache;\n  }\n  toString(e = Os) {\n    e.stringify && (e = e.stringify);\n    let t = \"\";\n    return e(this, (s) => {\n      t += s;\n    }), t;\n  }\n  warn(e, t, s) {\n    let r = { node: this };\n    for (let i in s) r[i] = s[i];\n    return e.warn(t, r);\n  }\n};\nvar ht = vt;\nvt.default = vt;\nlet Ms = ht, Ot = class extends Ms {\n  constructor(e) {\n    super(e), this.type = \"comment\";\n  }\n};\nvar pt = Ot;\nOt.default = Ot;\nlet ks = ht, Dt = class extends ks {\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n  constructor(e) {\n    e && typeof e.value < \"u\" && typeof e.value != \"string\" && (e = { ...e, value: String(e.value) }), super(e), this.type = \"decl\";\n  }\n};\nvar ft = Dt;\nDt.default = Dt;\nlet Re = pt, Ne = ft, As = ht, { isClean: Se, my: ve } = Y, $t, Oe, De, Gt;\nfunction Me(e) {\n  return e.map((t) => (t.nodes && (t.nodes = Me(t.nodes)), delete t.source, t));\n}\nfunction ke(e) {\n  if (e[Se] = !1, e.proxyOf.nodes)\n    for (let t of e.proxyOf.nodes)\n      ke(t);\n}\nlet k = class Ae extends As {\n  get first() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n  append(...t) {\n    for (let s of t) {\n      let r = this.normalize(s, this.last);\n      for (let i of r) this.proxyOf.nodes.push(i);\n    }\n    return this.markDirty(), this;\n  }\n  cleanRaws(t) {\n    if (super.cleanRaws(t), this.nodes)\n      for (let s of this.nodes) s.cleanRaws(t);\n  }\n  each(t) {\n    if (!this.proxyOf.nodes) return;\n    let s = this.getIterator(), r, i;\n    for (; this.indexes[s] < this.proxyOf.nodes.length && (r = this.indexes[s], i = t(this.proxyOf.nodes[r], r), i !== !1); )\n      this.indexes[s] += 1;\n    return delete this.indexes[s], i;\n  }\n  every(t) {\n    return this.nodes.every(t);\n  }\n  getIterator() {\n    this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1;\n    let t = this.lastEach;\n    return this.indexes[t] = 0, t;\n  }\n  getProxyProcessor() {\n    return {\n      get(t, s) {\n        return s === \"proxyOf\" ? t : t[s] ? s === \"each\" || typeof s == \"string\" && s.startsWith(\"walk\") ? (...r) => t[s](\n          ...r.map((i) => typeof i == \"function\" ? (n, a) => i(n.toProxy(), a) : i)\n        ) : s === \"every\" || s === \"some\" ? (r) => t[s](\n          (i, ...n) => r(i.toProxy(), ...n)\n        ) : s === \"root\" ? () => t.root().toProxy() : s === \"nodes\" ? t.nodes.map((r) => r.toProxy()) : s === \"first\" || s === \"last\" ? t[s].toProxy() : t[s] : t[s];\n      },\n      set(t, s, r) {\n        return t[s] === r || (t[s] = r, (s === \"name\" || s === \"params\" || s === \"selector\") && t.markDirty()), !0;\n      }\n    };\n  }\n  index(t) {\n    return typeof t == \"number\" ? t : (t.proxyOf && (t = t.proxyOf), this.proxyOf.nodes.indexOf(t));\n  }\n  insertAfter(t, s) {\n    let r = this.index(t), i = this.normalize(s, this.proxyOf.nodes[r]).reverse();\n    r = this.index(t);\n    for (let a of i) this.proxyOf.nodes.splice(r + 1, 0, a);\n    let n;\n    for (let a in this.indexes)\n      n = this.indexes[a], r < n && (this.indexes[a] = n + i.length);\n    return this.markDirty(), this;\n  }\n  insertBefore(t, s) {\n    let r = this.index(t), i = r === 0 ? \"prepend\" : !1, n = this.normalize(\n      s,\n      this.proxyOf.nodes[r],\n      i\n    ).reverse();\n    r = this.index(t);\n    for (let o of n) this.proxyOf.nodes.splice(r, 0, o);\n    let a;\n    for (let o in this.indexes)\n      a = this.indexes[o], r <= a && (this.indexes[o] = a + n.length);\n    return this.markDirty(), this;\n  }\n  normalize(t, s) {\n    if (typeof t == \"string\")\n      t = Me(Oe(t).nodes);\n    else if (typeof t > \"u\")\n      t = [];\n    else if (Array.isArray(t)) {\n      t = t.slice(0);\n      for (let r of t)\n        r.parent && r.parent.removeChild(r, \"ignore\");\n    } else if (t.type === \"root\" && this.type !== \"document\") {\n      t = t.nodes.slice(0);\n      for (let r of t)\n        r.parent && r.parent.removeChild(r, \"ignore\");\n    } else if (t.type)\n      t = [t];\n    else if (t.prop) {\n      if (typeof t.value > \"u\")\n        throw new Error(\"Value field is missed in node creation\");\n      typeof t.value != \"string\" && (t.value = String(t.value)), t = [new Ne(t)];\n    } else if (t.selector || t.selectors)\n      t = [new Gt(t)];\n    else if (t.name)\n      t = [new $t(t)];\n    else if (t.text)\n      t = [new Re(t)];\n    else\n      throw new Error(\"Unknown node type in node creation\");\n    return t.map((r) => (r[ve] || Ae.rebuild(r), r = r.proxyOf, r.parent && r.parent.removeChild(r), r[Se] && ke(r), r.raws || (r.raws = {}), typeof r.raws.before > \"u\" && s && typeof s.raws.before < \"u\" && (r.raws.before = s.raws.before.replace(/\\S/g, \"\")), r.parent = this.proxyOf, r));\n  }\n  prepend(...t) {\n    t = t.reverse();\n    for (let s of t) {\n      let r = this.normalize(s, this.first, \"prepend\").reverse();\n      for (let i of r) this.proxyOf.nodes.unshift(i);\n      for (let i in this.indexes)\n        this.indexes[i] = this.indexes[i] + r.length;\n    }\n    return this.markDirty(), this;\n  }\n  push(t) {\n    return t.parent = this, this.proxyOf.nodes.push(t), this;\n  }\n  removeAll() {\n    for (let t of this.proxyOf.nodes) t.parent = void 0;\n    return this.proxyOf.nodes = [], this.markDirty(), this;\n  }\n  removeChild(t) {\n    t = this.index(t), this.proxyOf.nodes[t].parent = void 0, this.proxyOf.nodes.splice(t, 1);\n    let s;\n    for (let r in this.indexes)\n      s = this.indexes[r], s >= t && (this.indexes[r] = s - 1);\n    return this.markDirty(), this;\n  }\n  replaceValues(t, s, r) {\n    return r || (r = s, s = {}), this.walkDecls((i) => {\n      s.props && !s.props.includes(i.prop) || s.fast && !i.value.includes(s.fast) || (i.value = i.value.replace(t, r));\n    }), this.markDirty(), this;\n  }\n  some(t) {\n    return this.nodes.some(t);\n  }\n  walk(t) {\n    return this.each((s, r) => {\n      let i;\n      try {\n        i = t(s, r);\n      } catch (n) {\n        throw s.addToError(n);\n      }\n      return i !== !1 && s.walk && (i = s.walk(t)), i;\n    });\n  }\n  walkAtRules(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"atrule\" && t.test(r.name))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"atrule\" && r.name === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"atrule\")\n        return s(r, i);\n    }));\n  }\n  walkComments(t) {\n    return this.walk((s, r) => {\n      if (s.type === \"comment\")\n        return t(s, r);\n    });\n  }\n  walkDecls(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"decl\" && t.test(r.prop))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"decl\" && r.prop === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"decl\")\n        return s(r, i);\n    }));\n  }\n  walkRules(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"rule\" && t.test(r.selector))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"rule\" && r.selector === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"rule\")\n        return s(r, i);\n    }));\n  }\n};\nk.registerParse = (e) => {\n  Oe = e;\n};\nk.registerRule = (e) => {\n  Gt = e;\n};\nk.registerAtRule = (e) => {\n  $t = e;\n};\nk.registerRoot = (e) => {\n  De = e;\n};\nvar T = k;\nk.default = k;\nk.rebuild = (e) => {\n  e.type === \"atrule\" ? Object.setPrototypeOf(e, $t.prototype) : e.type === \"rule\" ? Object.setPrototypeOf(e, Gt.prototype) : e.type === \"decl\" ? Object.setPrototypeOf(e, Ne.prototype) : e.type === \"comment\" ? Object.setPrototypeOf(e, Re.prototype) : e.type === \"root\" && Object.setPrototypeOf(e, De.prototype), e[ve] = !0, e.nodes && e.nodes.forEach((t) => {\n    k.rebuild(t);\n  });\n};\nlet Te = T, ot = class extends Te {\n  constructor(e) {\n    super(e), this.type = \"atrule\";\n  }\n  append(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.append(...e);\n  }\n  prepend(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.prepend(...e);\n  }\n};\nvar Wt = ot;\not.default = ot;\nTe.registerAtRule(ot);\nlet Ts = T, Ie, _e, $ = class extends Ts {\n  constructor(e) {\n    super({ type: \"document\", ...e }), this.nodes || (this.nodes = []);\n  }\n  toResult(e = {}) {\n    return new Ie(new _e(), this, e).stringify();\n  }\n};\n$.registerLazyResult = (e) => {\n  Ie = e;\n};\n$.registerProcessor = (e) => {\n  _e = e;\n};\nvar Vt = $;\n$.default = $;\nlet Is = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\", _s = (e = 21) => {\n  let t = \"\", s = e | 0;\n  for (; s--; )\n    t += Is[Math.random() * 64 | 0];\n  return t;\n};\nvar Ps = { nanoid: _s };\nlet { existsSync: Us, readFileSync: Ls } = S, { dirname: yt, join: Fs } = S, { SourceMapConsumer: ne, SourceMapGenerator: oe } = S;\nfunction Bs(e) {\n  return Buffer ? Buffer.from(e, \"base64\").toString() : window.atob(e);\n}\nlet Mt = class {\n  constructor(e, t) {\n    if (t.map === !1) return;\n    this.loadAnnotation(e), this.inline = this.startWith(this.annotation, \"data:\");\n    let s = t.map ? t.map.prev : void 0, r = this.loadMap(t.from, s);\n    !this.mapFile && t.from && (this.mapFile = t.from), this.mapFile && (this.root = yt(this.mapFile)), r && (this.text = r);\n  }\n  consumer() {\n    return this.consumerCache || (this.consumerCache = new ne(this.text)), this.consumerCache;\n  }\n  decodeInline(e) {\n    let t = /^data:application\\/json;charset=utf-?8;base64,/, s = /^data:application\\/json;base64,/, r = /^data:application\\/json;charset=utf-?8,/, i = /^data:application\\/json,/, n = e.match(r) || e.match(i);\n    if (n)\n      return decodeURIComponent(e.substr(n[0].length));\n    let a = e.match(t) || e.match(s);\n    if (a)\n      return Bs(e.substr(a[0].length));\n    let o = e.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + o);\n  }\n  getAnnotationURL(e) {\n    return e.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(e) {\n    return typeof e != \"object\" ? !1 : typeof e.mappings == \"string\" || typeof e._mappings == \"string\" || Array.isArray(e.sections);\n  }\n  loadAnnotation(e) {\n    let t = e.match(/\\/\\*\\s*# sourceMappingURL=/g);\n    if (!t) return;\n    let s = e.lastIndexOf(t.pop()), r = e.indexOf(\"*/\", s);\n    s > -1 && r > -1 && (this.annotation = this.getAnnotationURL(e.substring(s, r)));\n  }\n  loadFile(e) {\n    if (this.root = yt(e), Us(e))\n      return this.mapFile = e, Ls(e, \"utf-8\").toString().trim();\n  }\n  loadMap(e, t) {\n    if (t === !1) return !1;\n    if (t) {\n      if (typeof t == \"string\")\n        return t;\n      if (typeof t == \"function\") {\n        let s = t(e);\n        if (s) {\n          let r = this.loadFile(s);\n          if (!r)\n            throw new Error(\n              \"Unable to load previous source map: \" + s.toString()\n            );\n          return r;\n        }\n      } else {\n        if (t instanceof ne)\n          return oe.fromSourceMap(t).toString();\n        if (t instanceof oe)\n          return t.toString();\n        if (this.isMap(t))\n          return JSON.stringify(t);\n        throw new Error(\n          \"Unsupported previous source map format: \" + t.toString()\n        );\n      }\n    } else {\n      if (this.inline)\n        return this.decodeInline(this.annotation);\n      if (this.annotation) {\n        let s = this.annotation;\n        return e && (s = Fs(yt(e), s)), this.loadFile(s);\n      }\n    }\n  }\n  startWith(e, t) {\n    return e ? e.substr(0, t.length) === t : !1;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar Pe = Mt;\nMt.default = Mt;\nlet { nanoid: js } = Ps, { isAbsolute: kt, resolve: At } = S, { SourceMapConsumer: zs, SourceMapGenerator: $s } = S, { fileURLToPath: ae, pathToFileURL: X } = S, le = zt, Gs = Pe, bt = S, Et = Symbol(\"fromOffsetCache\"), Ws = !!(zs && $s), ue = !!(At && kt), at = class {\n  get from() {\n    return this.file || this.id;\n  }\n  constructor(e, t = {}) {\n    if (e === null || typeof e > \"u\" || typeof e == \"object\" && !e.toString)\n      throw new Error(`PostCSS received ${e} instead of CSS string`);\n    if (this.css = e.toString(), this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\" ? (this.hasBOM = !0, this.css = this.css.slice(1)) : this.hasBOM = !1, this.document = this.css, t.document && (this.document = t.document.toString()), t.from && (!ue || /^\\w+:\\/\\//.test(t.from) || kt(t.from) ? this.file = t.from : this.file = At(t.from)), ue && Ws) {\n      let s = new Gs(this.css, t);\n      if (s.text) {\n        this.map = s;\n        let r = s.consumer().file;\n        !this.file && r && (this.file = this.mapResolve(r));\n      }\n    }\n    this.file || (this.id = \"<input css \" + js(6) + \">\"), this.map && (this.map.file = this.from);\n  }\n  error(e, t, s, r = {}) {\n    let i, n, a;\n    if (t && typeof t == \"object\") {\n      let l = t, p = s;\n      if (typeof l.offset == \"number\") {\n        let u = this.fromOffset(l.offset);\n        t = u.line, s = u.col;\n      } else\n        t = l.line, s = l.column;\n      if (typeof p.offset == \"number\") {\n        let u = this.fromOffset(p.offset);\n        n = u.line, i = u.col;\n      } else\n        n = p.line, i = p.column;\n    } else if (!s) {\n      let l = this.fromOffset(t);\n      t = l.line, s = l.col;\n    }\n    let o = this.origin(t, s, n, i);\n    return o ? a = new le(\n      e,\n      o.endLine === void 0 ? o.line : { column: o.column, line: o.line },\n      o.endLine === void 0 ? o.column : { column: o.endColumn, line: o.endLine },\n      o.source,\n      o.file,\n      r.plugin\n    ) : a = new le(\n      e,\n      n === void 0 ? t : { column: s, line: t },\n      n === void 0 ? s : { column: i, line: n },\n      this.css,\n      this.file,\n      r.plugin\n    ), a.input = { column: s, endColumn: i, endLine: n, line: t, source: this.css }, this.file && (X && (a.input.url = X(this.file).toString()), a.input.file = this.file), a;\n  }\n  fromOffset(e) {\n    let t, s;\n    if (this[Et])\n      s = this[Et];\n    else {\n      let i = this.css.split(`\n`);\n      s = new Array(i.length);\n      let n = 0;\n      for (let a = 0, o = i.length; a < o; a++)\n        s[a] = n, n += i[a].length + 1;\n      this[Et] = s;\n    }\n    t = s[s.length - 1];\n    let r = 0;\n    if (e >= t)\n      r = s.length - 1;\n    else {\n      let i = s.length - 2, n;\n      for (; r < i; )\n        if (n = r + (i - r >> 1), e < s[n])\n          i = n - 1;\n        else if (e >= s[n + 1])\n          r = n + 1;\n        else {\n          r = n;\n          break;\n        }\n    }\n    return {\n      col: e - s[r] + 1,\n      line: r + 1\n    };\n  }\n  mapResolve(e) {\n    return /^\\w+:\\/\\//.test(e) ? e : At(this.map.consumer().sourceRoot || this.map.root || \".\", e);\n  }\n  origin(e, t, s, r) {\n    if (!this.map) return !1;\n    let i = this.map.consumer(), n = i.originalPositionFor({ column: t, line: e });\n    if (!n.source) return !1;\n    let a;\n    typeof s == \"number\" && (a = i.originalPositionFor({ column: r, line: s }));\n    let o;\n    kt(n.source) ? o = X(n.source) : o = new URL(\n      n.source,\n      this.map.consumer().sourceRoot || X(this.map.mapFile)\n    );\n    let l = {\n      column: n.column,\n      endColumn: a && a.column,\n      endLine: a && a.line,\n      line: n.line,\n      url: o.toString()\n    };\n    if (o.protocol === \"file:\")\n      if (ae)\n        l.file = ae(o);\n      else\n        throw new Error(\"file: protocol is not available in this PostCSS build\");\n    let p = i.sourceContentFor(n.source);\n    return p && (l.source = p), l;\n  }\n  toJSON() {\n    let e = {};\n    for (let t of [\"hasBOM\", \"css\", \"file\", \"id\"])\n      this[t] != null && (e[t] = this[t]);\n    return this.map && (e.map = { ...this.map }, e.map.consumerCache && (e.map.consumerCache = void 0)), e;\n  }\n};\nvar dt = at;\nat.default = at;\nbt && bt.registerInput && bt.registerInput(at);\nlet Ue = T, Le, Fe, P = class extends Ue {\n  constructor(e) {\n    super(e), this.type = \"root\", this.nodes || (this.nodes = []);\n  }\n  normalize(e, t, s) {\n    let r = super.normalize(e);\n    if (t) {\n      if (s === \"prepend\")\n        this.nodes.length > 1 ? t.raws.before = this.nodes[1].raws.before : delete t.raws.before;\n      else if (this.first !== t)\n        for (let i of r)\n          i.raws.before = t.raws.before;\n    }\n    return r;\n  }\n  removeChild(e, t) {\n    let s = this.index(e);\n    return !t && s === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[s].raws.before), super.removeChild(e);\n  }\n  toResult(e = {}) {\n    return new Le(new Fe(), this, e).stringify();\n  }\n};\nP.registerLazyResult = (e) => {\n  Le = e;\n};\nP.registerProcessor = (e) => {\n  Fe = e;\n};\nvar J = P;\nP.default = P;\nUe.registerRoot(P);\nlet G = {\n  comma(e) {\n    return G.split(e, [\",\"], !0);\n  },\n  space(e) {\n    let t = [\" \", `\n`, \"\t\"];\n    return G.split(e, t);\n  },\n  split(e, t, s) {\n    let r = [], i = \"\", n = !1, a = 0, o = !1, l = \"\", p = !1;\n    for (let u of e)\n      p ? p = !1 : u === \"\\\\\" ? p = !0 : o ? u === l && (o = !1) : u === '\"' || u === \"'\" ? (o = !0, l = u) : u === \"(\" ? a += 1 : u === \")\" ? a > 0 && (a -= 1) : a === 0 && t.includes(u) && (n = !0), n ? (i !== \"\" && r.push(i.trim()), i = \"\", n = !1) : i += u;\n    return (s || i !== \"\") && r.push(i.trim()), r;\n  }\n};\nvar Be = G;\nG.default = G;\nlet je = T, Vs = Be, lt = class extends je {\n  get selectors() {\n    return Vs.comma(this.selector);\n  }\n  set selectors(e) {\n    let t = this.selector ? this.selector.match(/,\\s*/) : null, s = t ? t[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = e.join(s);\n  }\n  constructor(e) {\n    super(e), this.type = \"rule\", this.nodes || (this.nodes = []);\n  }\n};\nvar Yt = lt;\nlt.default = lt;\nje.registerRule(lt);\nlet Ys = Wt, Js = pt, Hs = ft, Xs = dt, Zs = Pe, qs = J, Ks = Yt;\nfunction W(e, t) {\n  if (Array.isArray(e)) return e.map((i) => W(i));\n  let { inputs: s, ...r } = e;\n  if (s) {\n    t = [];\n    for (let i of s) {\n      let n = { ...i, __proto__: Xs.prototype };\n      n.map && (n.map = {\n        ...n.map,\n        __proto__: Zs.prototype\n      }), t.push(n);\n    }\n  }\n  if (r.nodes && (r.nodes = e.nodes.map((i) => W(i, t))), r.source) {\n    let { inputId: i, ...n } = r.source;\n    r.source = n, i != null && (r.source.input = t[i]);\n  }\n  if (r.type === \"root\")\n    return new qs(r);\n  if (r.type === \"decl\")\n    return new Hs(r);\n  if (r.type === \"rule\")\n    return new Ks(r);\n  if (r.type === \"comment\")\n    return new Js(r);\n  if (r.type === \"atrule\")\n    return new Ys(r);\n  throw new Error(\"Unknown node type: \" + e.type);\n}\nvar Qs = W;\nW.default = W;\nlet { dirname: rt, relative: ze, resolve: $e, sep: Ge } = S, { SourceMapConsumer: We, SourceMapGenerator: it } = S, { pathToFileURL: ce } = S, tr = dt, er = !!(We && it), sr = !!(rt && $e && ze && Ge), rr = class {\n  constructor(e, t, s, r) {\n    this.stringify = e, this.mapOpts = s.map || {}, this.root = t, this.opts = s, this.css = r, this.originalCSS = r, this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute, this.memoizedFileURLs = /* @__PURE__ */ new Map(), this.memoizedPaths = /* @__PURE__ */ new Map(), this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let e;\n    this.isInline() ? e = \"data:application/json;base64,\" + this.toBase64(this.map.toString()) : typeof this.mapOpts.annotation == \"string\" ? e = this.mapOpts.annotation : typeof this.mapOpts.annotation == \"function\" ? e = this.mapOpts.annotation(this.opts.to, this.root) : e = this.outputFile() + \".map\";\n    let t = `\n`;\n    this.css.includes(`\\r\n`) && (t = `\\r\n`), this.css += t + \"/*# sourceMappingURL=\" + e + \" */\";\n  }\n  applyPrevMaps() {\n    for (let e of this.previous()) {\n      let t = this.toUrl(this.path(e.file)), s = e.root || rt(e.file), r;\n      this.mapOpts.sourcesContent === !1 ? (r = new We(e.text), r.sourcesContent && (r.sourcesContent = null)) : r = e.consumer(), this.map.applySourceMap(r, t, this.toUrl(this.path(s)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation !== !1)\n      if (this.root) {\n        let e;\n        for (let t = this.root.nodes.length - 1; t >= 0; t--)\n          e = this.root.nodes[t], e.type === \"comment\" && e.text.startsWith(\"# sourceMappingURL=\") && this.root.removeChild(t);\n      } else this.css && (this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\"));\n  }\n  generate() {\n    if (this.clearAnnotation(), sr && er && this.isMap())\n      return this.generateMap();\n    {\n      let e = \"\";\n      return this.stringify(this.root, (t) => {\n        e += t;\n      }), [e];\n    }\n  }\n  generateMap() {\n    if (this.root)\n      this.generateString();\n    else if (this.previous().length === 1) {\n      let e = this.previous()[0].consumer();\n      e.file = this.outputFile(), this.map = it.fromSourceMap(e, {\n        ignoreInvalidMapping: !0\n      });\n    } else\n      this.map = new it({\n        file: this.outputFile(),\n        ignoreInvalidMapping: !0\n      }), this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    return this.isSourcesContent() && this.setSourcesContent(), this.root && this.previous().length > 0 && this.applyPrevMaps(), this.isAnnotation() && this.addAnnotation(), this.isInline() ? [this.css] : [this.css, this.map];\n  }\n  generateString() {\n    this.css = \"\", this.map = new it({\n      file: this.outputFile(),\n      ignoreInvalidMapping: !0\n    });\n    let e = 1, t = 1, s = \"<no source>\", r = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    }, i, n;\n    this.stringify(this.root, (a, o, l) => {\n      if (this.css += a, o && l !== \"end\" && (r.generated.line = e, r.generated.column = t - 1, o.source && o.source.start ? (r.source = this.sourcePath(o), r.original.line = o.source.start.line, r.original.column = o.source.start.column - 1, this.map.addMapping(r)) : (r.source = s, r.original.line = 1, r.original.column = 0, this.map.addMapping(r))), n = a.match(/\\n/g), n ? (e += n.length, i = a.lastIndexOf(`\n`), t = a.length - i) : t += a.length, o && l !== \"start\") {\n        let p = o.parent || { raws: {} };\n        (!(o.type === \"decl\" || o.type === \"atrule\" && !o.nodes) || o !== p.last || p.raws.semicolon) && (o.source && o.source.end ? (r.source = this.sourcePath(o), r.original.line = o.source.end.line, r.original.column = o.source.end.column - 1, r.generated.line = e, r.generated.column = t - 2, this.map.addMapping(r)) : (r.source = s, r.original.line = 1, r.original.column = 0, r.generated.line = e, r.generated.column = t - 1, this.map.addMapping(r)));\n      }\n    });\n  }\n  isAnnotation() {\n    return this.isInline() ? !0 : typeof this.mapOpts.annotation < \"u\" ? this.mapOpts.annotation : this.previous().length ? this.previous().some((e) => e.annotation) : !0;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline < \"u\")\n      return this.mapOpts.inline;\n    let e = this.mapOpts.annotation;\n    return typeof e < \"u\" && e !== !0 ? !1 : this.previous().length ? this.previous().some((t) => t.inline) : !0;\n  }\n  isMap() {\n    return typeof this.opts.map < \"u\" ? !!this.opts.map : this.previous().length > 0;\n  }\n  isSourcesContent() {\n    return typeof this.mapOpts.sourcesContent < \"u\" ? this.mapOpts.sourcesContent : this.previous().length ? this.previous().some((e) => e.withContent()) : !0;\n  }\n  outputFile() {\n    return this.opts.to ? this.path(this.opts.to) : this.opts.from ? this.path(this.opts.from) : \"to.css\";\n  }\n  path(e) {\n    if (this.mapOpts.absolute || e.charCodeAt(0) === 60 || /^\\w+:\\/\\//.test(e)) return e;\n    let t = this.memoizedPaths.get(e);\n    if (t) return t;\n    let s = this.opts.to ? rt(this.opts.to) : \".\";\n    typeof this.mapOpts.annotation == \"string\" && (s = rt($e(s, this.mapOpts.annotation)));\n    let r = ze(s, e);\n    return this.memoizedPaths.set(e, r), r;\n  }\n  previous() {\n    if (!this.previousMaps)\n      if (this.previousMaps = [], this.root)\n        this.root.walk((e) => {\n          if (e.source && e.source.input.map) {\n            let t = e.source.input.map;\n            this.previousMaps.includes(t) || this.previousMaps.push(t);\n          }\n        });\n      else {\n        let e = new tr(this.originalCSS, this.opts);\n        e.map && this.previousMaps.push(e.map);\n      }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let e = {};\n    if (this.root)\n      this.root.walk((t) => {\n        if (t.source) {\n          let s = t.source.input.from;\n          if (s && !e[s]) {\n            e[s] = !0;\n            let r = this.usesFileUrls ? this.toFileUrl(s) : this.toUrl(this.path(s));\n            this.map.setSourceContent(r, t.source.input.css);\n          }\n        }\n      });\n    else if (this.css) {\n      let t = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(t, this.css);\n    }\n  }\n  sourcePath(e) {\n    return this.mapOpts.from ? this.toUrl(this.mapOpts.from) : this.usesFileUrls ? this.toFileUrl(e.source.input.from) : this.toUrl(this.path(e.source.input.from));\n  }\n  toBase64(e) {\n    return Buffer ? Buffer.from(e).toString(\"base64\") : window.btoa(unescape(encodeURIComponent(e)));\n  }\n  toFileUrl(e) {\n    let t = this.memoizedFileURLs.get(e);\n    if (t) return t;\n    if (ce) {\n      let s = ce(e).toString();\n      return this.memoizedFileURLs.set(e, s), s;\n    } else\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n  }\n  toUrl(e) {\n    let t = this.memoizedURLs.get(e);\n    if (t) return t;\n    Ge === \"\\\\\" && (e = e.replace(/\\\\/g, \"/\"));\n    let s = encodeURI(e).replace(/[#?]/g, encodeURIComponent);\n    return this.memoizedURLs.set(e, s), s;\n  }\n};\nvar Ve = rr;\nconst xt = 39, he = 34, Z = 92, pe = 47, q = 10, j = 32, K = 12, Q = 9, tt = 13, ir = 91, nr = 93, or = 40, ar = 41, lr = 123, ur = 125, cr = 59, hr = 42, pr = 58, fr = 64, et = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g, st = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g, dr = /.[\\r\\n\"'(/\\\\]/, fe = /[\\da-f]/i;\nvar mr = function(e, t = {}) {\n  let s = e.css.valueOf(), r = t.ignoreErrors, i, n, a, o, l, p, u, m, w, E, D = s.length, h = 0, v = [], N = [];\n  function x() {\n    return h;\n  }\n  function b(I) {\n    throw e.error(\"Unclosed \" + I, h);\n  }\n  function M() {\n    return N.length === 0 && h >= D;\n  }\n  function gt(I) {\n    if (N.length) return N.pop();\n    if (h >= D) return;\n    let wt = I ? I.ignoreUnclosed : !1;\n    switch (i = s.charCodeAt(h), i) {\n      case q:\n      case j:\n      case Q:\n      case tt:\n      case K: {\n        o = h;\n        do\n          o += 1, i = s.charCodeAt(o);\n        while (i === j || i === q || i === Q || i === tt || i === K);\n        p = [\"space\", s.slice(h, o)], h = o - 1;\n        break;\n      }\n      case ir:\n      case nr:\n      case lr:\n      case ur:\n      case pr:\n      case cr:\n      case ar: {\n        let te = String.fromCharCode(i);\n        p = [te, te, h];\n        break;\n      }\n      case or: {\n        if (E = v.length ? v.pop()[1] : \"\", w = s.charCodeAt(h + 1), E === \"url\" && w !== xt && w !== he && w !== j && w !== q && w !== Q && w !== K && w !== tt) {\n          o = h;\n          do {\n            if (u = !1, o = s.indexOf(\")\", o + 1), o === -1)\n              if (r || wt) {\n                o = h;\n                break;\n              } else\n                b(\"bracket\");\n            for (m = o; s.charCodeAt(m - 1) === Z; )\n              m -= 1, u = !u;\n          } while (u);\n          p = [\"brackets\", s.slice(h, o + 1), h, o], h = o;\n        } else\n          o = s.indexOf(\")\", h + 1), n = s.slice(h, o + 1), o === -1 || dr.test(n) ? p = [\"(\", \"(\", h] : (p = [\"brackets\", n, h, o], h = o);\n        break;\n      }\n      case xt:\n      case he: {\n        l = i === xt ? \"'\" : '\"', o = h;\n        do {\n          if (u = !1, o = s.indexOf(l, o + 1), o === -1)\n            if (r || wt) {\n              o = h + 1;\n              break;\n            } else\n              b(\"string\");\n          for (m = o; s.charCodeAt(m - 1) === Z; )\n            m -= 1, u = !u;\n        } while (u);\n        p = [\"string\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      case fr: {\n        et.lastIndex = h + 1, et.test(s), et.lastIndex === 0 ? o = s.length - 1 : o = et.lastIndex - 2, p = [\"at-word\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      case Z: {\n        for (o = h, a = !0; s.charCodeAt(o + 1) === Z; )\n          o += 1, a = !a;\n        if (i = s.charCodeAt(o + 1), a && i !== pe && i !== j && i !== q && i !== Q && i !== tt && i !== K && (o += 1, fe.test(s.charAt(o)))) {\n          for (; fe.test(s.charAt(o + 1)); )\n            o += 1;\n          s.charCodeAt(o + 1) === j && (o += 1);\n        }\n        p = [\"word\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      default: {\n        i === pe && s.charCodeAt(h + 1) === hr ? (o = s.indexOf(\"*/\", h + 2) + 1, o === 0 && (r || wt ? o = s.length : b(\"comment\")), p = [\"comment\", s.slice(h, o + 1), h, o], h = o) : (st.lastIndex = h + 1, st.test(s), st.lastIndex === 0 ? o = s.length - 1 : o = st.lastIndex - 2, p = [\"word\", s.slice(h, o + 1), h, o], v.push(p), h = o);\n        break;\n      }\n    }\n    return h++, p;\n  }\n  function hs(I) {\n    N.push(I);\n  }\n  return {\n    back: hs,\n    endOfFile: M,\n    nextToken: gt,\n    position: x\n  };\n};\nlet gr = Wt, wr = pt, yr = ft, br = J, de = Yt, Er = mr;\nconst me = {\n  empty: !0,\n  space: !0\n};\nfunction xr(e) {\n  for (let t = e.length - 1; t >= 0; t--) {\n    let s = e[t], r = s[3] || s[2];\n    if (r) return r;\n  }\n}\nlet Cr = class {\n  constructor(e) {\n    this.input = e, this.root = new br(), this.current = this.root, this.spaces = \"\", this.semicolon = !1, this.createTokenizer(), this.root.source = { input: e, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(e) {\n    let t = new gr();\n    t.name = e[1].slice(1), t.name === \"\" && this.unnamedAtrule(t, e), this.init(t, e[2]);\n    let s, r, i, n = !1, a = !1, o = [], l = [];\n    for (; !this.tokenizer.endOfFile(); ) {\n      if (e = this.tokenizer.nextToken(), s = e[0], s === \"(\" || s === \"[\" ? l.push(s === \"(\" ? \")\" : \"]\") : s === \"{\" && l.length > 0 ? l.push(\"}\") : s === l[l.length - 1] && l.pop(), l.length === 0)\n        if (s === \";\") {\n          t.source.end = this.getPosition(e[2]), t.source.end.offset++, this.semicolon = !0;\n          break;\n        } else if (s === \"{\") {\n          a = !0;\n          break;\n        } else if (s === \"}\") {\n          if (o.length > 0) {\n            for (i = o.length - 1, r = o[i]; r && r[0] === \"space\"; )\n              r = o[--i];\n            r && (t.source.end = this.getPosition(r[3] || r[2]), t.source.end.offset++);\n          }\n          this.end(e);\n          break;\n        } else\n          o.push(e);\n      else\n        o.push(e);\n      if (this.tokenizer.endOfFile()) {\n        n = !0;\n        break;\n      }\n    }\n    t.raws.between = this.spacesAndCommentsFromEnd(o), o.length ? (t.raws.afterName = this.spacesAndCommentsFromStart(o), this.raw(t, \"params\", o), n && (e = o[o.length - 1], t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++, this.spaces = t.raws.between, t.raws.between = \"\")) : (t.raws.afterName = \"\", t.params = \"\"), a && (t.nodes = [], this.current = t);\n  }\n  checkMissedSemicolon(e) {\n    let t = this.colon(e);\n    if (t === !1) return;\n    let s = 0, r;\n    for (let i = t - 1; i >= 0 && (r = e[i], !(r[0] !== \"space\" && (s += 1, s === 2))); i--)\n      ;\n    throw this.input.error(\n      \"Missed semicolon\",\n      r[0] === \"word\" ? r[3] + 1 : r[2]\n    );\n  }\n  colon(e) {\n    let t = 0, s, r, i;\n    for (let [n, a] of e.entries()) {\n      if (r = a, i = r[0], i === \"(\" && (t += 1), i === \")\" && (t -= 1), t === 0 && i === \":\")\n        if (!s)\n          this.doubleColon(r);\n        else {\n          if (s[0] === \"word\" && s[1] === \"progid\")\n            continue;\n          return n;\n        }\n      s = r;\n    }\n    return !1;\n  }\n  comment(e) {\n    let t = new wr();\n    this.init(t, e[2]), t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++;\n    let s = e[1].slice(2, -2);\n    if (/^\\s*$/.test(s))\n      t.text = \"\", t.raws.left = s, t.raws.right = \"\";\n    else {\n      let r = s.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      t.text = r[2], t.raws.left = r[1], t.raws.right = r[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = Er(this.input);\n  }\n  decl(e, t) {\n    let s = new yr();\n    this.init(s, e[0][2]);\n    let r = e[e.length - 1];\n    for (r[0] === \";\" && (this.semicolon = !0, e.pop()), s.source.end = this.getPosition(\n      r[3] || r[2] || xr(e)\n    ), s.source.end.offset++; e[0][0] !== \"word\"; )\n      e.length === 1 && this.unknownWord(e), s.raws.before += e.shift()[1];\n    for (s.source.start = this.getPosition(e[0][2]), s.prop = \"\"; e.length; ) {\n      let o = e[0][0];\n      if (o === \":\" || o === \"space\" || o === \"comment\")\n        break;\n      s.prop += e.shift()[1];\n    }\n    s.raws.between = \"\";\n    let i;\n    for (; e.length; )\n      if (i = e.shift(), i[0] === \":\") {\n        s.raws.between += i[1];\n        break;\n      } else\n        i[0] === \"word\" && /\\w/.test(i[1]) && this.unknownWord([i]), s.raws.between += i[1];\n    (s.prop[0] === \"_\" || s.prop[0] === \"*\") && (s.raws.before += s.prop[0], s.prop = s.prop.slice(1));\n    let n = [], a;\n    for (; e.length && (a = e[0][0], !(a !== \"space\" && a !== \"comment\")); )\n      n.push(e.shift());\n    this.precheckMissedSemicolon(e);\n    for (let o = e.length - 1; o >= 0; o--) {\n      if (i = e[o], i[1].toLowerCase() === \"!important\") {\n        s.important = !0;\n        let l = this.stringFrom(e, o);\n        l = this.spacesFromEnd(e) + l, l !== \" !important\" && (s.raws.important = l);\n        break;\n      } else if (i[1].toLowerCase() === \"important\") {\n        let l = e.slice(0), p = \"\";\n        for (let u = o; u > 0; u--) {\n          let m = l[u][0];\n          if (p.trim().startsWith(\"!\") && m !== \"space\")\n            break;\n          p = l.pop()[1] + p;\n        }\n        p.trim().startsWith(\"!\") && (s.important = !0, s.raws.important = p, e = l);\n      }\n      if (i[0] !== \"space\" && i[0] !== \"comment\")\n        break;\n    }\n    e.some((o) => o[0] !== \"space\" && o[0] !== \"comment\") && (s.raws.between += n.map((o) => o[1]).join(\"\"), n = []), this.raw(s, \"value\", n.concat(e), t), s.value.includes(\":\") && !t && this.checkMissedSemicolon(e);\n  }\n  doubleColon(e) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: e[2] },\n      { offset: e[2] + e[1].length }\n    );\n  }\n  emptyRule(e) {\n    let t = new de();\n    this.init(t, e[2]), t.selector = \"\", t.raws.between = \"\", this.current = t;\n  }\n  end(e) {\n    this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = !1, this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.spaces = \"\", this.current.parent ? (this.current.source.end = this.getPosition(e[2]), this.current.source.end.offset++, this.current = this.current.parent) : this.unexpectedClose(e);\n  }\n  endFile() {\n    this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(e) {\n    if (this.spaces += e[1], this.current.nodes) {\n      let t = this.current.nodes[this.current.nodes.length - 1];\n      t && t.type === \"rule\" && !t.raws.ownSemicolon && (t.raws.ownSemicolon = this.spaces, this.spaces = \"\", t.source.end = this.getPosition(e[2]), t.source.end.offset += t.raws.ownSemicolon.length);\n    }\n  }\n  // Helpers\n  getPosition(e) {\n    let t = this.input.fromOffset(e);\n    return {\n      column: t.col,\n      line: t.line,\n      offset: e\n    };\n  }\n  init(e, t) {\n    this.current.push(e), e.source = {\n      input: this.input,\n      start: this.getPosition(t)\n    }, e.raws.before = this.spaces, this.spaces = \"\", e.type !== \"comment\" && (this.semicolon = !1);\n  }\n  other(e) {\n    let t = !1, s = null, r = !1, i = null, n = [], a = e[1].startsWith(\"--\"), o = [], l = e;\n    for (; l; ) {\n      if (s = l[0], o.push(l), s === \"(\" || s === \"[\")\n        i || (i = l), n.push(s === \"(\" ? \")\" : \"]\");\n      else if (a && r && s === \"{\")\n        i || (i = l), n.push(\"}\");\n      else if (n.length === 0)\n        if (s === \";\")\n          if (r) {\n            this.decl(o, a);\n            return;\n          } else\n            break;\n        else if (s === \"{\") {\n          this.rule(o);\n          return;\n        } else if (s === \"}\") {\n          this.tokenizer.back(o.pop()), t = !0;\n          break;\n        } else s === \":\" && (r = !0);\n      else s === n[n.length - 1] && (n.pop(), n.length === 0 && (i = null));\n      l = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile() && (t = !0), n.length > 0 && this.unclosedBracket(i), t && r) {\n      if (!a)\n        for (; o.length && (l = o[o.length - 1][0], !(l !== \"space\" && l !== \"comment\")); )\n          this.tokenizer.back(o.pop());\n      this.decl(o, a);\n    } else\n      this.unknownWord(o);\n  }\n  parse() {\n    let e;\n    for (; !this.tokenizer.endOfFile(); )\n      switch (e = this.tokenizer.nextToken(), e[0]) {\n        case \"space\":\n          this.spaces += e[1];\n          break;\n        case \";\":\n          this.freeSemicolon(e);\n          break;\n        case \"}\":\n          this.end(e);\n          break;\n        case \"comment\":\n          this.comment(e);\n          break;\n        case \"at-word\":\n          this.atrule(e);\n          break;\n        case \"{\":\n          this.emptyRule(e);\n          break;\n        default:\n          this.other(e);\n          break;\n      }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(e, t, s, r) {\n    let i, n, a = s.length, o = \"\", l = !0, p, u;\n    for (let m = 0; m < a; m += 1)\n      i = s[m], n = i[0], n === \"space\" && m === a - 1 && !r ? l = !1 : n === \"comment\" ? (u = s[m - 1] ? s[m - 1][0] : \"empty\", p = s[m + 1] ? s[m + 1][0] : \"empty\", !me[u] && !me[p] ? o.slice(-1) === \",\" ? l = !1 : o += i[1] : l = !1) : o += i[1];\n    if (!l) {\n      let m = s.reduce((w, E) => w + E[1], \"\");\n      e.raws[t] = { raw: m, value: o };\n    }\n    e[t] = o;\n  }\n  rule(e) {\n    e.pop();\n    let t = new de();\n    this.init(t, e[0][2]), t.raws.between = this.spacesAndCommentsFromEnd(e), this.raw(t, \"selector\", e), this.current = t;\n  }\n  spacesAndCommentsFromEnd(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[e.length - 1][0], !(t !== \"space\" && t !== \"comment\")); )\n      s = e.pop()[1] + s;\n    return s;\n  }\n  // Errors\n  spacesAndCommentsFromStart(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[0][0], !(t !== \"space\" && t !== \"comment\")); )\n      s += e.shift()[1];\n    return s;\n  }\n  spacesFromEnd(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[e.length - 1][0], t === \"space\"); )\n      s = e.pop()[1] + s;\n    return s;\n  }\n  stringFrom(e, t) {\n    let s = \"\";\n    for (let r = t; r < e.length; r++)\n      s += e[r][1];\n    return e.splice(t, e.length - t), s;\n  }\n  unclosedBlock() {\n    let e = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", e.line, e.column);\n  }\n  unclosedBracket(e) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unexpectedClose(e) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unknownWord(e) {\n    throw this.input.error(\n      \"Unknown word \" + e[0][1],\n      { offset: e[0][2] },\n      { offset: e[0][2] + e[0][1].length }\n    );\n  }\n  unnamedAtrule(e, t) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: t[2] },\n      { offset: t[2] + t[1].length }\n    );\n  }\n};\nvar Rr = Cr;\nlet Nr = T, Sr = dt, vr = Rr;\nfunction ut(e, t) {\n  let s = new Sr(e, t), r = new vr(s);\n  try {\n    r.parse();\n  } catch (i) {\n    throw process.env.NODE_ENV !== \"production\" && i.name === \"CssSyntaxError\" && t && t.from && (/\\.scss$/i.test(t.from) ? i.message += `\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser` : /\\.sass/i.test(t.from) ? i.message += `\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser` : /\\.less$/i.test(t.from) && (i.message += `\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)), i;\n  }\n  return r.root;\n}\nvar Jt = ut;\nut.default = ut;\nNr.registerParse(ut);\nlet Tt = class {\n  constructor(e, t = {}) {\n    if (this.type = \"warning\", this.text = e, t.node && t.node.source) {\n      let s = t.node.rangeBy(t);\n      this.line = s.start.line, this.column = s.start.column, this.endLine = s.end.line, this.endColumn = s.end.column;\n    }\n    for (let s in t) this[s] = t[s];\n  }\n  toString() {\n    return this.node ? this.node.error(this.text, {\n      index: this.index,\n      plugin: this.plugin,\n      word: this.word\n    }).message : this.plugin ? this.plugin + \": \" + this.text : this.text;\n  }\n};\nvar Ye = Tt;\nTt.default = Tt;\nlet Or = Ye, It = class {\n  get content() {\n    return this.css;\n  }\n  constructor(e, t, s) {\n    this.processor = e, this.messages = [], this.root = t, this.opts = s, this.css = void 0, this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(e, t = {}) {\n    t.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (t.plugin = this.lastPlugin.postcssPlugin);\n    let s = new Or(e, t);\n    return this.messages.push(s), s;\n  }\n  warnings() {\n    return this.messages.filter((e) => e.type === \"warning\");\n  }\n};\nvar Ht = It;\nIt.default = It;\nlet ge = {};\nvar Je = function(e) {\n  ge[e] || (ge[e] = !0, typeof console < \"u\" && console.warn && console.warn(e));\n};\nlet Dr = T, Mr = Vt, kr = Ve, Ar = Jt, we = Ht, Tr = J, Ir = ct, { isClean: O, my: _r } = Y, Pr = Je;\nconst Ur = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n}, Lr = {\n  AtRule: !0,\n  AtRuleExit: !0,\n  Comment: !0,\n  CommentExit: !0,\n  Declaration: !0,\n  DeclarationExit: !0,\n  Document: !0,\n  DocumentExit: !0,\n  Once: !0,\n  OnceExit: !0,\n  postcssPlugin: !0,\n  prepare: !0,\n  Root: !0,\n  RootExit: !0,\n  Rule: !0,\n  RuleExit: !0\n}, Fr = {\n  Once: !0,\n  postcssPlugin: !0,\n  prepare: !0\n}, U = 0;\nfunction z(e) {\n  return typeof e == \"object\" && typeof e.then == \"function\";\n}\nfunction He(e) {\n  let t = !1, s = Ur[e.type];\n  return e.type === \"decl\" ? t = e.prop.toLowerCase() : e.type === \"atrule\" && (t = e.name.toLowerCase()), t && e.append ? [\n    s,\n    s + \"-\" + t,\n    U,\n    s + \"Exit\",\n    s + \"Exit-\" + t\n  ] : t ? [s, s + \"-\" + t, s + \"Exit\", s + \"Exit-\" + t] : e.append ? [s, U, s + \"Exit\"] : [s, s + \"Exit\"];\n}\nfunction ye(e) {\n  let t;\n  return e.type === \"document\" ? t = [\"Document\", U, \"DocumentExit\"] : e.type === \"root\" ? t = [\"Root\", U, \"RootExit\"] : t = He(e), {\n    eventIndex: 0,\n    events: t,\n    iterator: 0,\n    node: e,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction _t(e) {\n  return e[O] = !1, e.nodes && e.nodes.forEach((t) => _t(t)), e;\n}\nlet Pt = {}, L = class Xe {\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n  constructor(t, s, r) {\n    this.stringified = !1, this.processed = !1;\n    let i;\n    if (typeof s == \"object\" && s !== null && (s.type === \"root\" || s.type === \"document\"))\n      i = _t(s);\n    else if (s instanceof Xe || s instanceof we)\n      i = _t(s.root), s.map && (typeof r.map > \"u\" && (r.map = {}), r.map.inline || (r.map.inline = !1), r.map.prev = s.map);\n    else {\n      let n = Ar;\n      r.syntax && (n = r.syntax.parse), r.parser && (n = r.parser), n.parse && (n = n.parse);\n      try {\n        i = n(s, r);\n      } catch (a) {\n        this.processed = !0, this.error = a;\n      }\n      i && !i[_r] && Dr.rebuild(i);\n    }\n    this.result = new we(t, i, r), this.helpers = { ...Pt, postcss: Pt, result: this.result }, this.plugins = this.processor.plugins.map((n) => typeof n == \"object\" && n.prepare ? { ...n, ...n.prepare(this.result) } : n);\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : this.processed ? Promise.resolve(this.result) : (this.processing || (this.processing = this.runAsync()), this.processing);\n  }\n  catch(t) {\n    return this.async().catch(t);\n  }\n  finally(t) {\n    return this.async().then(t, t);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(t, s) {\n    let r = this.result.lastPlugin;\n    try {\n      if (s && s.addToError(t), this.error = t, t.name === \"CssSyntaxError\" && !t.plugin)\n        t.plugin = r.postcssPlugin, t.setMessage();\n      else if (r.postcssVersion && process.env.NODE_ENV !== \"production\") {\n        let i = r.postcssPlugin, n = r.postcssVersion, a = this.result.processor.version, o = n.split(\".\"), l = a.split(\".\");\n        (o[0] !== l[0] || parseInt(o[1]) > parseInt(l[1])) && console.error(\n          \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + a + \", but \" + i + \" uses \" + n + \". Perhaps this is the source of the error below.\"\n        );\n      }\n    } catch (i) {\n      console && console.error && console.error(i);\n    }\n    return t;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let t = (s, r, i) => {\n      this.listeners[r] || (this.listeners[r] = []), this.listeners[r].push([s, i]);\n    };\n    for (let s of this.plugins)\n      if (typeof s == \"object\")\n        for (let r in s) {\n          if (!Lr[r] && /^[A-Z]/.test(r))\n            throw new Error(\n              `Unknown event ${r} in ${s.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          if (!Fr[r])\n            if (typeof s[r] == \"object\")\n              for (let i in s[r])\n                i === \"*\" ? t(s, r, s[r][i]) : t(\n                  s,\n                  r + \"-\" + i.toLowerCase(),\n                  s[r][i]\n                );\n            else typeof s[r] == \"function\" && t(s, r, s[r]);\n        }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let t = 0; t < this.plugins.length; t++) {\n      let s = this.plugins[t], r = this.runOnRoot(s);\n      if (z(r))\n        try {\n          await r;\n        } catch (i) {\n          throw this.handleError(i);\n        }\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let t = this.result.root;\n      for (; !t[O]; ) {\n        t[O] = !0;\n        let s = [ye(t)];\n        for (; s.length > 0; ) {\n          let r = this.visitTick(s);\n          if (z(r))\n            try {\n              await r;\n            } catch (i) {\n              let n = s[s.length - 1].node;\n              throw this.handleError(i, n);\n            }\n        }\n      }\n      if (this.listeners.OnceExit)\n        for (let [s, r] of this.listeners.OnceExit) {\n          this.result.lastPlugin = s;\n          try {\n            if (t.type === \"document\") {\n              let i = t.nodes.map(\n                (n) => r(n, this.helpers)\n              );\n              await Promise.all(i);\n            } else\n              await r(t, this.helpers);\n          } catch (i) {\n            throw this.handleError(i);\n          }\n        }\n    }\n    return this.processed = !0, this.stringify();\n  }\n  runOnRoot(t) {\n    this.result.lastPlugin = t;\n    try {\n      if (typeof t == \"object\" && t.Once) {\n        if (this.result.root.type === \"document\") {\n          let s = this.result.root.nodes.map(\n            (r) => t.Once(r, this.helpers)\n          );\n          return z(s[0]) ? Promise.all(s) : s;\n        }\n        return t.Once(this.result.root, this.helpers);\n      } else if (typeof t == \"function\")\n        return t(this.result.root, this.result);\n    } catch (s) {\n      throw this.handleError(s);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = !0, this.sync();\n    let t = this.result.opts, s = Ir;\n    t.syntax && (s = t.syntax.stringify), t.stringifier && (s = t.stringifier), s.stringify && (s = s.stringify);\n    let r = new kr(s, this.result.root, this.result.opts).generate();\n    return this.result.css = r[0], this.result.map = r[1], this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    if (this.processed = !0, this.processing)\n      throw this.getAsyncError();\n    for (let t of this.plugins) {\n      let s = this.runOnRoot(t);\n      if (z(s))\n        throw this.getAsyncError();\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let t = this.result.root;\n      for (; !t[O]; )\n        t[O] = !0, this.walkSync(t);\n      if (this.listeners.OnceExit)\n        if (t.type === \"document\")\n          for (let s of t.nodes)\n            this.visitSync(this.listeners.OnceExit, s);\n        else\n          this.visitSync(this.listeners.OnceExit, t);\n    }\n    return this.result;\n  }\n  then(t, s) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this.opts || Pr(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(t, s);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(t, s) {\n    for (let [r, i] of t) {\n      this.result.lastPlugin = r;\n      let n;\n      try {\n        n = i(s, this.helpers);\n      } catch (a) {\n        throw this.handleError(a, s.proxyOf);\n      }\n      if (s.type !== \"root\" && s.type !== \"document\" && !s.parent)\n        return !0;\n      if (z(n))\n        throw this.getAsyncError();\n    }\n  }\n  visitTick(t) {\n    let s = t[t.length - 1], { node: r, visitors: i } = s;\n    if (r.type !== \"root\" && r.type !== \"document\" && !r.parent) {\n      t.pop();\n      return;\n    }\n    if (i.length > 0 && s.visitorIndex < i.length) {\n      let [a, o] = i[s.visitorIndex];\n      s.visitorIndex += 1, s.visitorIndex === i.length && (s.visitors = [], s.visitorIndex = 0), this.result.lastPlugin = a;\n      try {\n        return o(r.toProxy(), this.helpers);\n      } catch (l) {\n        throw this.handleError(l, r);\n      }\n    }\n    if (s.iterator !== 0) {\n      let a = s.iterator, o;\n      for (; o = r.nodes[r.indexes[a]]; )\n        if (r.indexes[a] += 1, !o[O]) {\n          o[O] = !0, t.push(ye(o));\n          return;\n        }\n      s.iterator = 0, delete r.indexes[a];\n    }\n    let n = s.events;\n    for (; s.eventIndex < n.length; ) {\n      let a = n[s.eventIndex];\n      if (s.eventIndex += 1, a === U) {\n        r.nodes && r.nodes.length && (r[O] = !0, s.iterator = r.getIterator());\n        return;\n      } else if (this.listeners[a]) {\n        s.visitors = this.listeners[a];\n        return;\n      }\n    }\n    t.pop();\n  }\n  walkSync(t) {\n    t[O] = !0;\n    let s = He(t);\n    for (let r of s)\n      if (r === U)\n        t.nodes && t.each((i) => {\n          i[O] || this.walkSync(i);\n        });\n      else {\n        let i = this.listeners[r];\n        if (i && this.visitSync(i, t.toProxy()))\n          return;\n      }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n};\nL.registerPostcss = (e) => {\n  Pt = e;\n};\nvar Ze = L;\nL.default = L;\nTr.registerLazyResult(L);\nMr.registerLazyResult(L);\nlet Br = Ve, jr = Jt;\nconst zr = Ht;\nlet $r = ct, Gr = Je, Ut = class {\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root)\n      return this._root;\n    let e, t = jr;\n    try {\n      e = t(this._css, this._opts);\n    } catch (s) {\n      this.error = s;\n    }\n    if (this.error)\n      throw this.error;\n    return this._root = e, e;\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n  constructor(e, t, s) {\n    t = t.toString(), this.stringified = !1, this._processor = e, this._css = t, this._opts = s, this._map = void 0;\n    let r, i = $r;\n    this.result = new zr(this._processor, r, this._opts), this.result.css = t;\n    let n = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return n.root;\n      }\n    });\n    let a = new Br(i, r, this._opts, t);\n    if (a.isMap()) {\n      let [o, l] = a.generate();\n      o && (this.result.css = o), l && (this.result.map = l);\n    } else\n      a.clearAnnotation(), this.result.css = a.css;\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : Promise.resolve(this.result);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this._opts || Gr(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(e, t);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n};\nvar Wr = Ut;\nUt.default = Ut;\nlet Vr = Vt, Yr = Ze, Jr = Wr, Hr = J, V = class {\n  constructor(e = []) {\n    this.version = \"8.5.3\", this.plugins = this.normalize(e);\n  }\n  normalize(e) {\n    let t = [];\n    for (let s of e)\n      if (s.postcss === !0 ? s = s() : s.postcss && (s = s.postcss), typeof s == \"object\" && Array.isArray(s.plugins))\n        t = t.concat(s.plugins);\n      else if (typeof s == \"object\" && s.postcssPlugin)\n        t.push(s);\n      else if (typeof s == \"function\")\n        t.push(s);\n      else if (typeof s == \"object\" && (s.parse || s.stringify)) {\n        if (process.env.NODE_ENV !== \"production\")\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n      } else\n        throw new Error(s + \" is not a PostCSS plugin\");\n    return t;\n  }\n  process(e, t = {}) {\n    return !this.plugins.length && !t.parser && !t.stringifier && !t.syntax ? new Jr(this, e, t) : new Yr(this, e, t);\n  }\n  use(e) {\n    return this.plugins = this.plugins.concat(this.normalize([e])), this;\n  }\n};\nvar Xr = V;\nV.default = V;\nHr.registerProcessor(V);\nVr.registerProcessor(V);\nlet qe = Wt, Ke = pt, Zr = T, qr = zt, Qe = ft, ts = Vt, Kr = Qs, Qr = dt, ti = Ze, ei = Be, si = ht, ri = Jt, Xt = Xr, ii = Ht, es = J, ss = Yt, ni = ct, oi = Ye;\nfunction g(...e) {\n  return e.length === 1 && Array.isArray(e[0]) && (e = e[0]), new Xt(e);\n}\ng.plugin = function(e, t) {\n  let s = !1;\n  function r(...n) {\n    console && console.warn && !s && (s = !0, console.warn(\n      e + `: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`\n    ), process.env.LANG && process.env.LANG.startsWith(\"cn\") && console.warn(\n      e + `: 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226`\n    ));\n    let a = t(...n);\n    return a.postcssPlugin = e, a.postcssVersion = new Xt().version, a;\n  }\n  let i;\n  return Object.defineProperty(r, \"postcss\", {\n    get() {\n      return i || (i = r()), i;\n    }\n  }), r.process = function(n, a, o) {\n    return g([r(o)]).process(n, a);\n  }, r;\n};\ng.stringify = ni;\ng.parse = ri;\ng.fromJSON = Kr;\ng.list = ei;\ng.comment = (e) => new Ke(e);\ng.atRule = (e) => new qe(e);\ng.decl = (e) => new Qe(e);\ng.rule = (e) => new ss(e);\ng.root = (e) => new es(e);\ng.document = (e) => new ts(e);\ng.CssSyntaxError = qr;\ng.Declaration = Qe;\ng.Container = Zr;\ng.Processor = Xt;\ng.Document = ts;\ng.Comment = Ke;\ng.Warning = oi;\ng.AtRule = qe;\ng.Result = ii;\ng.Input = Qr;\ng.Rule = ss;\ng.Root = es;\ng.Node = si;\nti.registerPostcss(g);\nvar ai = g;\ng.default = g;\nconst y = /* @__PURE__ */ ys(ai);\ny.stringify;\ny.fromJSON;\ny.plugin;\ny.parse;\ny.list;\ny.document;\ny.comment;\ny.atRule;\ny.rule;\ny.decl;\ny.root;\ny.CssSyntaxError;\ny.Declaration;\ny.Container;\ny.Processor;\ny.Document;\ny.Comment;\ny.Warning;\ny.AtRule;\ny.Result;\ny.Input;\ny.Rule;\ny.Root;\ny.Node;\nfunction li(e) {\n  const t = {}, s = /;(?![^(]*\\))/g, r = /:(.+)/, i = /\\/\\*.*?\\*\\//g;\n  return e.replace(i, \"\").split(s).forEach(function(n) {\n    if (n) {\n      const a = n.split(r);\n      a.length > 1 && (t[Lt(a[0].trim())] = a[1].trim());\n    }\n  }), t;\n}\nfunction be(e) {\n  const t = [];\n  for (const s in e) {\n    const r = e[s];\n    if (typeof r != \"string\") continue;\n    const i = pi(s);\n    t.push(`${i}: ${r};`);\n  }\n  return t.join(\" \");\n}\nconst ui = /-([a-z])/g, ci = /^--[a-zA-Z0-9-]+$/, Lt = (e) => ci.test(e) ? e : e.replace(ui, (t, s) => s ? s.toUpperCase() : \"\"), hi = /\\B([A-Z])/g, pi = (e) => e.replace(hi, \"-$1\").toLowerCase();\nclass A {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(...t) {\n    c(this, \"parentElement\", null);\n    c(this, \"parentNode\", null);\n    c(this, \"ownerDocument\");\n    c(this, \"firstChild\", null);\n    c(this, \"lastChild\", null);\n    c(this, \"previousSibling\", null);\n    c(this, \"nextSibling\", null);\n    c(this, \"ELEMENT_NODE\", 1);\n    c(this, \"TEXT_NODE\", 3);\n    // corresponding nodeType value of standard HTML Node\n    c(this, \"nodeType\");\n    c(this, \"nodeName\");\n    c(this, \"RRNodeType\");\n  }\n  get childNodes() {\n    const t = [];\n    let s = this.firstChild;\n    for (; s; )\n      t.push(s), s = s.nextSibling;\n    return t;\n  }\n  contains(t) {\n    if (t instanceof A) {\n      if (t.ownerDocument !== this.ownerDocument) return !1;\n      if (t === this) return !0;\n    } else return !1;\n    for (; t.parentNode; ) {\n      if (t.parentNode === this) return !0;\n      t = t.parentNode;\n    }\n    return !1;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  appendChild(t) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\"\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  insertBefore(t, s) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\"\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  removeChild(t) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\"\n    );\n  }\n  toString() {\n    return \"RRNode\";\n  }\n}\nclass Zt extends A {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(...s) {\n    super(s);\n    c(this, \"nodeType\", 9);\n    c(this, \"nodeName\", \"#document\");\n    c(this, \"compatMode\", \"CSS1Compat\");\n    c(this, \"RRNodeType\", d.Document);\n    c(this, \"textContent\", null);\n    this.ownerDocument = this;\n  }\n  get documentElement() {\n    return this.childNodes.find(\n      (s) => s.RRNodeType === d.Element && s.tagName === \"HTML\"\n    ) || null;\n  }\n  get body() {\n    var s;\n    return ((s = this.documentElement) == null ? void 0 : s.childNodes.find(\n      (r) => r.RRNodeType === d.Element && r.tagName === \"BODY\"\n    )) || null;\n  }\n  get head() {\n    var s;\n    return ((s = this.documentElement) == null ? void 0 : s.childNodes.find(\n      (r) => r.RRNodeType === d.Element && r.tagName === \"HEAD\"\n    )) || null;\n  }\n  get implementation() {\n    return this;\n  }\n  get firstElementChild() {\n    return this.documentElement;\n  }\n  appendChild(s) {\n    const r = s.RRNodeType;\n    if ((r === d.Element || r === d.DocumentType) && this.childNodes.some((n) => n.RRNodeType === r))\n      throw new Error(\n        `RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${r === d.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n      );\n    const i = Kt(this, s);\n    return i.parentElement = null, i;\n  }\n  insertBefore(s, r) {\n    const i = s.RRNodeType;\n    if ((i === d.Element || i === d.DocumentType) && this.childNodes.some((a) => a.RRNodeType === i))\n      throw new Error(\n        `RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${i === d.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n      );\n    const n = as(this, s, r);\n    return n.parentElement = null, n;\n  }\n  removeChild(s) {\n    return ls(this, s);\n  }\n  open() {\n    this.firstChild = null, this.lastChild = null;\n  }\n  close() {\n  }\n  /**\n   * Adhoc implementation for setting xhtml namespace in rebuilt.ts (rrweb-snapshot).\n   * There are two lines used this function:\n   * 1. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\"\\>')\n   * 2. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\"\\>')\n   */\n  write(s) {\n    let r;\n    if (s === '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">' ? r = \"-//W3C//DTD XHTML 1.0 Transitional//EN\" : s === '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">' && (r = \"-//W3C//DTD HTML 4.0 Transitional//EN\"), r) {\n      const i = this.createDocumentType(\"html\", r, \"\");\n      this.open(), this.appendChild(i);\n    }\n  }\n  createDocument(s, r, i) {\n    return new Zt();\n  }\n  createDocumentType(s, r, i) {\n    const n = new rs(s, r, i);\n    return n.ownerDocument = this, n;\n  }\n  createElement(s) {\n    const r = new qt(s);\n    return r.ownerDocument = this, r;\n  }\n  createElementNS(s, r) {\n    return this.createElement(r);\n  }\n  createTextNode(s) {\n    const r = new is(s);\n    return r.ownerDocument = this, r;\n  }\n  createComment(s) {\n    const r = new ns(s);\n    return r.ownerDocument = this, r;\n  }\n  createCDATASection(s) {\n    const r = new os(s);\n    return r.ownerDocument = this, r;\n  }\n  toString() {\n    return \"RRDocument\";\n  }\n}\nclass rs extends A {\n  constructor(s, r, i) {\n    super();\n    c(this, \"nodeType\", 10);\n    c(this, \"RRNodeType\", d.DocumentType);\n    c(this, \"name\");\n    c(this, \"publicId\");\n    c(this, \"systemId\");\n    c(this, \"textContent\", null);\n    this.name = s, this.publicId = r, this.systemId = i, this.nodeName = s;\n  }\n  toString() {\n    return \"RRDocumentType\";\n  }\n}\nclass qt extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 1);\n    c(this, \"RRNodeType\", d.Element);\n    c(this, \"tagName\");\n    c(this, \"attributes\", {});\n    c(this, \"shadowRoot\", null);\n    c(this, \"scrollLeft\");\n    c(this, \"scrollTop\");\n    this.tagName = s.toUpperCase(), this.nodeName = s.toUpperCase();\n  }\n  get textContent() {\n    let s = \"\";\n    return this.childNodes.forEach((r) => s += r.textContent), s;\n  }\n  set textContent(s) {\n    this.firstChild = null, this.lastChild = null, this.appendChild(this.ownerDocument.createTextNode(s));\n  }\n  get classList() {\n    return new di(\n      this.attributes.class,\n      (s) => {\n        this.attributes.class = s;\n      }\n    );\n  }\n  get id() {\n    return this.attributes.id || \"\";\n  }\n  get className() {\n    return this.attributes.class || \"\";\n  }\n  get style() {\n    const s = this.attributes.style ? li(this.attributes.style) : {}, r = /\\B([A-Z])/g;\n    return s.setProperty = (i, n, a) => {\n      if (r.test(i)) return;\n      const o = Lt(i);\n      n ? s[o] = n : delete s[o], a === \"important\" && (s[o] += \" !important\"), this.attributes.style = be(s);\n    }, s.removeProperty = (i) => {\n      if (r.test(i)) return \"\";\n      const n = Lt(i), a = s[n] || \"\";\n      return delete s[n], this.attributes.style = be(s), a;\n    }, s;\n  }\n  getAttribute(s) {\n    return this.attributes[s] || null;\n  }\n  setAttribute(s, r) {\n    this.attributes[s] = r;\n  }\n  setAttributeNS(s, r, i) {\n    this.setAttribute(r, i);\n  }\n  removeAttribute(s) {\n    delete this.attributes[s];\n  }\n  appendChild(s) {\n    return Kt(this, s);\n  }\n  insertBefore(s, r) {\n    return as(this, s, r);\n  }\n  removeChild(s) {\n    return ls(this, s);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(s) {\n    const r = this.ownerDocument.createElement(\"SHADOWROOT\");\n    return this.shadowRoot = r, r;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  dispatchEvent(s) {\n    return !0;\n  }\n  toString() {\n    let s = \"\";\n    for (const r in this.attributes)\n      s += `${r}=\"${this.attributes[r]}\" `;\n    return `${this.tagName} ${s}`;\n  }\n}\nclass fi extends qt {\n  constructor() {\n    super(...arguments);\n    c(this, \"currentTime\");\n    c(this, \"volume\");\n    c(this, \"paused\");\n    c(this, \"muted\");\n    c(this, \"playbackRate\");\n    c(this, \"loop\");\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(s) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow\"\n    );\n  }\n  play() {\n    this.paused = !1;\n  }\n  pause() {\n    this.paused = !0;\n  }\n}\nclass is extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 3);\n    c(this, \"nodeName\", \"#text\");\n    c(this, \"RRNodeType\", d.Text);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRText text=${JSON.stringify(this.data)}`;\n  }\n}\nclass ns extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 8);\n    c(this, \"nodeName\", \"#comment\");\n    c(this, \"RRNodeType\", d.Comment);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRComment text=${JSON.stringify(this.data)}`;\n  }\n}\nclass os extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeName\", \"#cdata-section\");\n    c(this, \"nodeType\", 4);\n    c(this, \"RRNodeType\", d.CDATA);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRCDATASection data=${JSON.stringify(this.data)}`;\n  }\n}\nclass di {\n  constructor(t, s) {\n    c(this, \"onChange\");\n    c(this, \"classes\", []);\n    c(this, \"add\", (...t) => {\n      for (const s of t) {\n        const r = String(s);\n        this.classes.indexOf(r) >= 0 || this.classes.push(r);\n      }\n      this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    c(this, \"remove\", (...t) => {\n      this.classes = this.classes.filter(\n        (s) => t.indexOf(s) === -1\n      ), this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    if (t) {\n      const r = t.trim().split(/\\s+/);\n      this.classes.push(...r);\n    }\n    this.onChange = s;\n  }\n}\nfunction Kt(e, t) {\n  return t.parentNode && t.parentNode.removeChild(t), e.lastChild ? (e.lastChild.nextSibling = t, t.previousSibling = e.lastChild) : (e.firstChild = t, t.previousSibling = null), e.lastChild = t, t.nextSibling = null, t.parentNode = e, t.parentElement = e, t.ownerDocument = e.ownerDocument, t;\n}\nfunction as(e, t, s) {\n  if (!s) return Kt(e, t);\n  if (s.parentNode !== e)\n    throw new Error(\n      \"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\"\n    );\n  return t === s || (t.parentNode && t.parentNode.removeChild(t), t.previousSibling = s.previousSibling, s.previousSibling = t, t.nextSibling = s, t.previousSibling ? t.previousSibling.nextSibling = t : e.firstChild = t, t.parentElement = e, t.parentNode = e, t.ownerDocument = e.ownerDocument), t;\n}\nfunction ls(e, t) {\n  if (t.parentNode !== e)\n    throw new Error(\n      \"Failed to execute 'removeChild' on 'RRNode': The RRNode to be removed is not a child of this RRNode.\"\n    );\n  return t.previousSibling ? t.previousSibling.nextSibling = t.nextSibling : e.firstChild = t.nextSibling, t.nextSibling ? t.nextSibling.previousSibling = t.previousSibling : e.lastChild = t.previousSibling, t.previousSibling = null, t.nextSibling = null, t.parentElement = null, t.parentNode = null, t;\n}\nvar C = /* @__PURE__ */ ((e) => (e[e.PLACEHOLDER = 0] = \"PLACEHOLDER\", e[e.ELEMENT_NODE = 1] = \"ELEMENT_NODE\", e[e.ATTRIBUTE_NODE = 2] = \"ATTRIBUTE_NODE\", e[e.TEXT_NODE = 3] = \"TEXT_NODE\", e[e.CDATA_SECTION_NODE = 4] = \"CDATA_SECTION_NODE\", e[e.ENTITY_REFERENCE_NODE = 5] = \"ENTITY_REFERENCE_NODE\", e[e.ENTITY_NODE = 6] = \"ENTITY_NODE\", e[e.PROCESSING_INSTRUCTION_NODE = 7] = \"PROCESSING_INSTRUCTION_NODE\", e[e.COMMENT_NODE = 8] = \"COMMENT_NODE\", e[e.DOCUMENT_NODE = 9] = \"DOCUMENT_NODE\", e[e.DOCUMENT_TYPE_NODE = 10] = \"DOCUMENT_TYPE_NODE\", e[e.DOCUMENT_FRAGMENT_NODE = 11] = \"DOCUMENT_FRAGMENT_NODE\", e))(C || {});\nconst Ft = {\n  svg: \"http://www.w3.org/2000/svg\",\n  \"xlink:href\": \"http://www.w3.org/1999/xlink\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n}, mi = {\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};\nlet R = null;\nfunction us(e, t, s, r = t.mirror || t.ownerDocument.mirror) {\n  e = gi(\n    e,\n    t,\n    s,\n    r\n  ), cs(e, t, s, r), wi(e, t, s);\n}\nfunction gi(e, t, s, r) {\n  var i;\n  if (s.afterAppend && !R && (R = /* @__PURE__ */ new WeakSet(), setTimeout(() => {\n    R = null;\n  }, 0)), !Qt(e, t)) {\n    const n = Bt(\n      t,\n      s.mirror,\n      r\n    );\n    (i = e.parentNode) == null || i.replaceChild(n, e), e = n;\n  }\n  switch (t.RRNodeType) {\n    case d.Document: {\n      if (!_(e, t, s.mirror, r)) {\n        const n = r.getMeta(t);\n        n && (s.mirror.removeNodeFromMap(e), e.close(), e.open(), s.mirror.add(e, n), R == null || R.add(e));\n      }\n      break;\n    }\n    case d.Element: {\n      const n = e, a = t;\n      switch (a.tagName) {\n        case \"IFRAME\": {\n          const o = e.contentDocument;\n          if (!o) break;\n          us(\n            o,\n            t.contentDocument,\n            s,\n            r\n          );\n          break;\n        }\n      }\n      a.shadowRoot && (n.shadowRoot || n.attachShadow({ mode: \"open\" }), cs(\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        n.shadowRoot,\n        a.shadowRoot,\n        s,\n        r\n      )), yi(n, a, r);\n      break;\n    }\n  }\n  return e;\n}\nfunction wi(e, t, s) {\n  var r;\n  switch (t.RRNodeType) {\n    case d.Document: {\n      const i = t.scrollData;\n      i && s.applyScroll(i, !0);\n      break;\n    }\n    case d.Element: {\n      const i = e, n = t;\n      switch (n.scrollData && s.applyScroll(n.scrollData, !0), n.inputData && s.applyInput(n.inputData), n.tagName) {\n        case \"AUDIO\":\n        case \"VIDEO\": {\n          const a = e, o = n;\n          o.paused !== void 0 && (o.paused ? a.pause() : a.play()), o.muted !== void 0 && (a.muted = o.muted), o.volume !== void 0 && (a.volume = o.volume), o.currentTime !== void 0 && (a.currentTime = o.currentTime), o.playbackRate !== void 0 && (a.playbackRate = o.playbackRate), o.loop !== void 0 && (a.loop = o.loop);\n          break;\n        }\n        case \"CANVAS\": {\n          const a = t;\n          if (a.rr_dataURL !== null) {\n            const o = document.createElement(\"img\");\n            o.onload = () => {\n              const l = i.getContext(\"2d\");\n              l && l.drawImage(o, 0, 0, o.width, o.height);\n            }, o.src = a.rr_dataURL;\n          }\n          a.canvasMutations.forEach(\n            (o) => s.applyCanvas(\n              o.event,\n              o.mutation,\n              e\n            )\n          );\n          break;\n        }\n        case \"STYLE\": {\n          const a = i.sheet;\n          a && t.rules.forEach(\n            (o) => s.applyStyleSheetMutation(o, a)\n          );\n          break;\n        }\n      }\n      break;\n    }\n    case d.Text:\n    case d.Comment:\n    case d.CDATA: {\n      e.textContent !== t.data && (e.textContent = t.data);\n      break;\n    }\n  }\n  R != null && R.has(e) && (R.delete(e), (r = s.afterAppend) == null || r.call(s, e, s.mirror.getId(e)));\n}\nfunction yi(e, t, s) {\n  const r = e.attributes, i = t.attributes;\n  for (const n in i) {\n    const a = i[n], o = s.getMeta(t);\n    if (o != null && o.isSVG && Ft[n])\n      e.setAttributeNS(Ft[n], n, a);\n    else if (t.tagName === \"CANVAS\" && n === \"rr_dataURL\") {\n      const l = document.createElement(\"img\");\n      l.src = a, l.onload = () => {\n        const p = e.getContext(\"2d\");\n        p && p.drawImage(l, 0, 0, l.width, l.height);\n      };\n    } else {\n      if (t.tagName === \"IFRAME\" && n === \"srcdoc\") continue;\n      e.setAttribute(n, a);\n    }\n  }\n  for (const { name: n } of Array.from(r))\n    n in i || e.removeAttribute(n);\n  t.scrollLeft && (e.scrollLeft = t.scrollLeft), t.scrollTop && (e.scrollTop = t.scrollTop);\n}\nfunction cs(e, t, s, r) {\n  const i = Array.from(e.childNodes), n = t.childNodes;\n  if (i.length === 0 && n.length === 0) return;\n  let a = 0, o = i.length - 1, l = 0, p = n.length - 1, u = i[a], m = i[o], w = n[l], E = n[p], D, h;\n  for (; a <= o && l <= p; )\n    if (u === void 0)\n      u = i[++a];\n    else if (m === void 0)\n      m = i[--o];\n    else if (\n      // same first node?\n      _(u, w, s.mirror, r)\n    )\n      u = i[++a], w = n[++l];\n    else if (\n      // same last node?\n      _(m, E, s.mirror, r)\n    )\n      m = i[--o], E = n[--p];\n    else if (\n      // is the first old node the same as the last new node?\n      _(u, E, s.mirror, r)\n    ) {\n      try {\n        e.insertBefore(u, m.nextSibling);\n      } catch (x) {\n        console.warn(x);\n      }\n      u = i[++a], E = n[--p];\n    } else if (\n      // is the last old node the same as the first new node?\n      _(m, w, s.mirror, r)\n    ) {\n      try {\n        e.insertBefore(m, u);\n      } catch (x) {\n        console.warn(x);\n      }\n      m = i[--o], w = n[++l];\n    } else {\n      if (!D) {\n        D = {};\n        for (let b = a; b <= o; b++) {\n          const M = i[b];\n          M && s.mirror.hasNode(M) && (D[s.mirror.getId(M)] = b);\n        }\n      }\n      h = D[r.getId(w)];\n      const x = i[h];\n      if (h !== void 0 && x && _(x, w, s.mirror, r)) {\n        try {\n          e.insertBefore(x, u);\n        } catch (b) {\n          console.warn(b);\n        }\n        i[h] = void 0;\n      } else {\n        const b = Bt(\n          w,\n          s.mirror,\n          r\n        );\n        e.nodeName === \"#document\" && u && /**\n        * Special case 1: one document isn't allowed to have two doctype nodes at the same time, so we need to remove the old one first before inserting the new one.\n        * How this case happens: A parent document in the old tree already has a doctype node with an id e.g. #1. A new full snapshot rebuilds the replayer with a new doctype node with another id #2. According to the algorithm, the new doctype node will be inserted before the old one, which is not allowed by the Document standard.\n        */\n        (b.nodeType === b.DOCUMENT_TYPE_NODE && u.nodeType === u.DOCUMENT_TYPE_NODE || /**\n        * Special case 2: one document isn't allowed to have two HTMLElements at the same time, so we need to remove the old one first before inserting the new one.\n        * How this case happens: A mounted iframe element has an automatically created HTML element. We should delete it before inserting a serialized one. Otherwise, an error 'Only one element on document allowed' will be thrown.\n        */\n        b.nodeType === b.ELEMENT_NODE && u.nodeType === u.ELEMENT_NODE) && (e.removeChild(u), s.mirror.removeNodeFromMap(u), u = i[++a]);\n        try {\n          e.insertBefore(b, u || null);\n        } catch (M) {\n          console.warn(M);\n        }\n      }\n      w = n[++l];\n    }\n  if (a > o) {\n    const x = n[p + 1];\n    let b = null;\n    for (x && (b = s.mirror.getNode(\n      r.getId(x)\n    )); l <= p; ++l) {\n      const M = Bt(\n        n[l],\n        s.mirror,\n        r\n      );\n      try {\n        e.insertBefore(M, b);\n      } catch (gt) {\n        console.warn(gt);\n      }\n    }\n  } else if (l > p)\n    for (; a <= o; a++) {\n      const x = i[a];\n      if (!(!x || x.parentNode !== e))\n        try {\n          e.removeChild(x), s.mirror.removeNodeFromMap(x);\n        } catch (b) {\n          console.warn(b);\n        }\n    }\n  let v = e.firstChild, N = t.firstChild;\n  for (; v !== null && N !== null; )\n    us(v, N, s, r), v = v.nextSibling, N = N.nextSibling;\n}\nfunction Bt(e, t, s) {\n  const r = s.getId(e), i = s.getMeta(e);\n  let n = null;\n  if (r > -1 && (n = t.getNode(r)), n !== null && Qt(n, e)) return n;\n  switch (e.RRNodeType) {\n    case d.Document:\n      n = new Document();\n      break;\n    case d.DocumentType:\n      n = document.implementation.createDocumentType(\n        e.name,\n        e.publicId,\n        e.systemId\n      );\n      break;\n    case d.Element: {\n      let a = e.tagName.toLowerCase();\n      a = mi[a] || a, i && \"isSVG\" in i && (i != null && i.isSVG) ? n = document.createElementNS(Ft.svg, a) : n = document.createElement(e.tagName);\n      break;\n    }\n    case d.Text:\n      n = document.createTextNode(e.data);\n      break;\n    case d.Comment:\n      n = document.createComment(e.data);\n      break;\n    case d.CDATA:\n      n = document.createCDATASection(e.data);\n      break;\n  }\n  i && t.add(n, { ...i });\n  try {\n    R == null || R.add(n);\n  } catch {\n  }\n  return n;\n}\nfunction Qt(e, t) {\n  return e.nodeType !== t.nodeType ? !1 : e.nodeType !== e.ELEMENT_NODE || e.tagName.toUpperCase() === t.tagName;\n}\nfunction _(e, t, s, r) {\n  const i = s.getId(e), n = r.getId(t);\n  return i === -1 || i !== n ? !1 : Qt(e, t);\n}\nclass H extends Zt {\n  constructor(s) {\n    super();\n    c(this, \"UNSERIALIZED_STARTING_ID\", -2);\n    // In the rrweb replayer, there are some unserialized nodes like the element that stores the injected style rules.\n    // These unserialized nodes may interfere the execution of the diff algorithm.\n    // The id of serialized node is larger than 0. So this value less than 0 is used as id for these unserialized nodes.\n    c(this, \"_unserializedId\", this.UNSERIALIZED_STARTING_ID);\n    c(this, \"mirror\", Mi());\n    c(this, \"scrollData\", null);\n    s && (this.mirror = s);\n  }\n  /**\n   * Every time the id is used, it will minus 1 automatically to avoid collisions.\n   */\n  get unserializedId() {\n    return this._unserializedId--;\n  }\n  createDocument(s, r, i) {\n    return new H();\n  }\n  createDocumentType(s, r, i) {\n    const n = new bi(\n      s,\n      r,\n      i\n    );\n    return n.ownerDocument = this, n;\n  }\n  createElement(s) {\n    const r = s.toUpperCase();\n    let i;\n    switch (r) {\n      case \"AUDIO\":\n      case \"VIDEO\":\n        i = new Ei(r);\n        break;\n      case \"IFRAME\":\n        i = new Ri(r, this.mirror);\n        break;\n      case \"CANVAS\":\n        i = new xi(r);\n        break;\n      case \"STYLE\":\n        i = new Ci(r);\n        break;\n      default:\n        i = new mt(r);\n        break;\n    }\n    return i.ownerDocument = this, i;\n  }\n  createComment(s) {\n    const r = new Si(s);\n    return r.ownerDocument = this, r;\n  }\n  createCDATASection(s) {\n    const r = new vi(s);\n    return r.ownerDocument = this, r;\n  }\n  createTextNode(s) {\n    const r = new Ni(s);\n    return r.ownerDocument = this, r;\n  }\n  destroyTree() {\n    this.firstChild = null, this.lastChild = null, this.mirror.reset();\n  }\n  open() {\n    super.open(), this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n  }\n}\nconst bi = rs;\nclass mt extends qt {\n  constructor() {\n    super(...arguments);\n    c(this, \"inputData\", null);\n    c(this, \"scrollData\", null);\n  }\n}\nclass Ei extends fi {\n}\nclass xi extends mt {\n  constructor() {\n    super(...arguments);\n    c(this, \"rr_dataURL\", null);\n    c(this, \"canvasMutations\", []);\n  }\n  /**\n   * This is a dummy implementation to distinguish RRCanvasElement from real HTMLCanvasElement.\n   */\n  getContext() {\n    return null;\n  }\n}\nclass Ci extends mt {\n  constructor() {\n    super(...arguments);\n    c(this, \"rules\", []);\n  }\n}\nclass Ri extends mt {\n  constructor(s, r) {\n    super(s);\n    c(this, \"contentDocument\", new H());\n    this.contentDocument.mirror = r;\n  }\n}\nconst Ni = is, Si = ns, vi = os;\nfunction Oi(e) {\n  return e instanceof HTMLFormElement ? \"FORM\" : e.tagName.toUpperCase();\n}\nfunction Di(e, t, s, r) {\n  let i;\n  switch (e.nodeType) {\n    case C.DOCUMENT_NODE:\n      r && r.nodeName === \"IFRAME\" ? i = r.contentDocument : (i = t, i.compatMode = e.compatMode);\n      break;\n    case C.DOCUMENT_TYPE_NODE: {\n      const a = e;\n      i = t.createDocumentType(\n        a.name,\n        a.publicId,\n        a.systemId\n      );\n      break;\n    }\n    case C.ELEMENT_NODE: {\n      const a = e, o = Oi(a);\n      i = t.createElement(o);\n      const l = i;\n      for (const { name: p, value: u } of Array.from(a.attributes))\n        l.attributes[p] = u;\n      a.scrollLeft && (l.scrollLeft = a.scrollLeft), a.scrollTop && (l.scrollTop = a.scrollTop);\n      break;\n    }\n    case C.TEXT_NODE:\n      i = t.createTextNode(e.textContent || \"\");\n      break;\n    case C.CDATA_SECTION_NODE:\n      i = t.createCDATASection(e.data);\n      break;\n    case C.COMMENT_NODE:\n      i = t.createComment(e.textContent || \"\");\n      break;\n    case C.DOCUMENT_FRAGMENT_NODE:\n      i = r.attachShadow({ mode: \"open\" });\n      break;\n    default:\n      return null;\n  }\n  let n = s.getMeta(e);\n  return t instanceof H && (n || (n = Ai(i, t.unserializedId), s.add(e, n)), t.mirror.add(i, { ...n })), i;\n}\nfunction Ii(e, t = ws(), s = new H()) {\n  function r(i, n) {\n    const a = Di(i, s, t, n);\n    if (a !== null)\n      if (\n        // if the parentRRNode isn't a RRIFrameElement\n        (n == null ? void 0 : n.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n        i.nodeType !== C.DOCUMENT_FRAGMENT_NODE && (n == null || n.appendChild(a), a.parentNode = n, a.parentElement = n), i.nodeName === \"IFRAME\"\n      ) {\n        const o = i.contentDocument;\n        o && r(o, a);\n      } else (i.nodeType === C.DOCUMENT_NODE || i.nodeType === C.ELEMENT_NODE || i.nodeType === C.DOCUMENT_FRAGMENT_NODE) && (i.nodeType === C.ELEMENT_NODE && i.shadowRoot && r(i.shadowRoot, a), i.childNodes.forEach((o) => r(o, a)));\n  }\n  return r(e, null), s;\n}\nfunction Mi() {\n  return new ki();\n}\nclass ki {\n  constructor() {\n    c(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    c(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(t) {\n    var r;\n    return t ? ((r = this.getMeta(t)) == null ? void 0 : r.id) ?? -1 : -1;\n  }\n  getNode(t) {\n    return this.idNodeMap.get(t) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(t) {\n    return this.nodeMetaMap.get(t) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(t) {\n    const s = this.getId(t);\n    this.idNodeMap.delete(s), t.childNodes && t.childNodes.forEach((r) => this.removeNodeFromMap(r));\n  }\n  has(t) {\n    return this.idNodeMap.has(t);\n  }\n  hasNode(t) {\n    return this.nodeMetaMap.has(t);\n  }\n  add(t, s) {\n    const r = s.id;\n    this.idNodeMap.set(r, t), this.nodeMetaMap.set(t, s);\n  }\n  replace(t, s) {\n    const r = this.getNode(t);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(s, i);\n    }\n    this.idNodeMap.set(t, s);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction Ai(e, t) {\n  switch (e.RRNodeType) {\n    case d.Document:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        childNodes: []\n      };\n    case d.DocumentType: {\n      const s = e;\n      return {\n        id: t,\n        type: e.RRNodeType,\n        name: s.name,\n        publicId: s.publicId,\n        systemId: s.systemId\n      };\n    }\n    case d.Element:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        tagName: e.tagName.toLowerCase(),\n        // In rrweb data, all tagNames are lowercase.\n        attributes: {},\n        childNodes: []\n      };\n    case d.Text:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: e.textContent || \"\"\n      };\n    case d.Comment:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: e.textContent || \"\"\n      };\n    case d.CDATA:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: \"\"\n      };\n  }\n}\nfunction _i(e, t) {\n  return nt(e, t, \"\");\n}\nfunction nt(e, t, s) {\n  let r = `${s}${t.getId(e)} ${e.toString()}\n`;\n  if (e.RRNodeType === d.Element) {\n    const i = e;\n    i.shadowRoot && (r += nt(i.shadowRoot, t, s + \"  \"));\n  }\n  for (const i of e.childNodes)\n    r += nt(i, t, s + \"  \");\n  return e.nodeName === \"IFRAME\" && (r += nt(\n    e.contentDocument,\n    t,\n    s + \"  \"\n  )), r;\n}\nexport {\n  os as BaseRRCDATASection,\n  ns as BaseRRComment,\n  Zt as BaseRRDocument,\n  rs as BaseRRDocumentType,\n  qt as BaseRRElement,\n  fi as BaseRRMediaElement,\n  A as BaseRRNode,\n  is as BaseRRText,\n  di as ClassList,\n  ki as Mirror,\n  C as NodeType,\n  vi as RRCDATASection,\n  xi as RRCanvasElement,\n  Si as RRComment,\n  H as RRDocument,\n  bi as RRDocumentType,\n  mt as RRElement,\n  Ri as RRIFrameElement,\n  Ei as RRMediaElement,\n  A as RRNode,\n  Ci as RRStyleElement,\n  Ni as RRText,\n  Ii as buildFromDom,\n  Di as buildFromNode,\n  Mi as createMirror,\n  Bt as createOrGetNode,\n  us as diff,\n  Ai as getDefaultSN,\n  _i as printRRDom\n};\n//# sourceMappingURL=rrdom.js.map\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","import type { CanvasArg, SerializedCanvasArg } from '@sailfish-rrweb/types';\nimport { decode } from 'base64-arraybuffer';\nimport type { Replayer } from '../';\n\n// TODO: add ability to wipe this list\ntype GLVarMap = Map<string, any[]>;\nconst webGLVarMap: Map<\n  CanvasRenderingContext2D | WebGLRenderingContext | WebGL2RenderingContext,\n  GLVarMap\n> = new Map();\nexport function variableListFor(\n  ctx:\n    | CanvasRenderingContext2D\n    | WebGLRenderingContext\n    | WebGL2RenderingContext,\n  ctor: string,\n) {\n  let contextMap = webGLVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = new Map();\n    webGLVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n  return contextMap.get(ctor) as any[];\n}\n\nexport function isSerializedArg(arg: unknown): arg is SerializedCanvasArg {\n  return Boolean(arg && typeof arg === 'object' && 'rr_type' in arg);\n}\n\nexport function deserializeArg(\n  imageMap: Replayer['imageMap'],\n  ctx:\n    | CanvasRenderingContext2D\n    | WebGLRenderingContext\n    | WebGL2RenderingContext\n    | null,\n  preload?: {\n    isUnchanged: boolean;\n  },\n): (arg: CanvasArg) => Promise<any> {\n  return async (arg: CanvasArg): Promise<any> => {\n    if (arg && typeof arg === 'object' && 'rr_type' in arg) {\n      if (preload) preload.isUnchanged = false;\n      if (arg.rr_type === 'ImageBitmap' && 'args' in arg) {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        const args = await deserializeArg(imageMap, ctx, preload)(arg.args);\n        // eslint-disable-next-line prefer-spread\n        return await createImageBitmap.apply(null, args);\n      } else if ('index' in arg) {\n        if (preload || ctx === null) return arg; // we are preloading, ctx is unknown\n        const { rr_type: name, index } = arg;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return variableListFor(ctx, name)[index];\n      } else if ('args' in arg) {\n        const { rr_type: name, args } = arg;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        const ctor = window[name as keyof Window];\n\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n        return new ctor(\n          ...(await Promise.all(\n            args.map(deserializeArg(imageMap, ctx, preload)),\n          )),\n        );\n      } else if ('base64' in arg) {\n        return decode(arg.base64);\n      } else if ('src' in arg) {\n        const image = imageMap.get(arg.src);\n        if (image) {\n          return image;\n        } else {\n          const image = new Image();\n          image.src = arg.src;\n          imageMap.set(arg.src, image);\n          return image;\n        }\n      } else if ('data' in arg && arg.rr_type === 'Blob') {\n        const blobContents = await Promise.all(\n          arg.data.map(deserializeArg(imageMap, ctx, preload)),\n        );\n        const blob = new Blob(blobContents, {\n          type: arg.type,\n        });\n        return blob;\n      }\n    } else if (Array.isArray(arg)) {\n      const result = await Promise.all(\n        arg.map(deserializeArg(imageMap, ctx, preload)),\n      );\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return result;\n    }\n    return arg;\n  };\n}\n","import type { canvasMutationCommand } from '@sailfish-rrweb/types';\nimport type { Replayer } from '../';\nimport { deserializeArg } from './deserialize-args';\n\nexport default async function canvasMutation({\n  event,\n  mutations,\n  target,\n  imageMap,\n  errorHandler,\n}: {\n  event: Parameters<Replayer['applyIncremental']>[0];\n  mutations: canvasMutationCommand[];\n  target: HTMLCanvasElement;\n  imageMap: Replayer['imageMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  const ctx = target.getContext('2d');\n\n  if (!ctx) {\n    errorHandler(mutations[0], new Error('Canvas context is null'));\n    return;\n  }\n\n  // step 1, deserialize args, they may be async\n  const mutationArgsPromises = mutations.map(\n    async (mutation: canvasMutationCommand): Promise<unknown[]> => {\n      return Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\n    },\n  );\n  const args = await Promise.all(mutationArgsPromises);\n  // step 2 apply all mutations\n  args.forEach((args, index) => {\n    const mutation = mutations[index];\n    try {\n      if (mutation.setter) {\n        // skip some read-only type checks\n        (ctx as unknown as Record<string, unknown>)[mutation.property] =\n          mutation.args[0];\n        return;\n      }\n      const original = ctx[\n        mutation.property as Exclude<keyof typeof ctx, 'canvas'>\n      ] as (ctx: CanvasRenderingContext2D, args: unknown[]) => void;\n\n      /**\n       * We have serialized the image source into base64 string during recording,\n       * which has been preloaded before replay.\n       * So we can get call drawImage SYNCHRONOUSLY which avoid some fragile cast.\n       */\n      if (\n        mutation.property === 'drawImage' &&\n        typeof mutation.args[0] === 'string'\n      ) {\n        imageMap.get(event);\n        original.apply(ctx, mutation.args);\n      } else {\n        original.apply(ctx, args);\n      }\n    } catch (error) {\n      errorHandler(mutation, error);\n    }\n\n    return;\n  });\n}\n","import {\n  CanvasContext,\n  type canvasMutationCommand,\n} from '@sailfish-rrweb/types';\nimport type { Replayer } from '../';\nimport { deserializeArg, variableListFor } from './deserialize-args';\n\nfunction getContext(\n  target: HTMLCanvasElement,\n  type: CanvasContext,\n): WebGLRenderingContext | WebGL2RenderingContext | null {\n  // Note to whomever is going to implement support for `contextAttributes`:\n  // if `preserveDrawingBuffer` is set to true,\n  // you might have to do `ctx.flush()` before every webgl canvas event\n  try {\n    if (type === CanvasContext.WebGL) {\n      return (\n        target.getContext('webgl')! || target.getContext('experimental-webgl')\n      );\n    }\n    return target.getContext('webgl2')!;\n  } catch (e) {\n    return null;\n  }\n}\n\nconst WebGLVariableConstructorsNames = [\n  'WebGLActiveInfo',\n  'WebGLBuffer',\n  'WebGLFramebuffer',\n  'WebGLProgram',\n  'WebGLRenderbuffer',\n  'WebGLShader',\n  'WebGLShaderPrecisionFormat',\n  'WebGLTexture',\n  'WebGLUniformLocation',\n  'WebGLVertexArrayObject',\n];\n\nfunction saveToWebGLVarMap(\n  ctx: WebGLRenderingContext | WebGL2RenderingContext,\n  result: any,\n) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (!result?.constructor) return; // probably null or undefined\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n  const { name } = result.constructor;\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  if (!WebGLVariableConstructorsNames.includes(name)) return; // not a WebGL variable\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  const variables = variableListFor(ctx, name);\n  if (!variables.includes(result)) variables.push(result);\n}\n\nexport default async function webglMutation({\n  mutation,\n  target,\n  type,\n  imageMap,\n  errorHandler,\n}: {\n  mutation: canvasMutationCommand;\n  target: HTMLCanvasElement;\n  type: CanvasContext;\n  imageMap: Replayer['imageMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  try {\n    const ctx = getContext(target, type);\n    if (!ctx) return;\n\n    // NOTE: if `preserveDrawingBuffer` is set to true,\n    // we must flush the buffers on every new canvas event\n    // if (mutation.newFrame) ctx.flush();\n\n    if (mutation.setter) {\n      // skip some read-only type checks\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      (ctx as any)[mutation.property] = mutation.args[0];\n      return;\n    }\n    const original = ctx[\n      mutation.property as Exclude<keyof typeof ctx, 'canvas'>\n    ] as (\n      ctx: WebGLRenderingContext | WebGL2RenderingContext,\n      args: unknown[],\n    ) => void;\n\n    const args = await Promise.all(\n      mutation.args.map(deserializeArg(imageMap, ctx)),\n    );\n    const result = original.apply(ctx, args);\n    saveToWebGLVarMap(ctx, result);\n\n    // Slows down replay considerably, only use for debugging\n    const debugMode = false;\n    if (debugMode) {\n      if (mutation.property === 'compileShader') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        if (!ctx.getShaderParameter(args[0], ctx.COMPILE_STATUS))\n          console.warn(\n            'something went wrong in replay',\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            ctx.getShaderInfoLog(args[0]),\n          );\n      } else if (mutation.property === 'linkProgram') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        ctx.validateProgram(args[0]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        if (!ctx.getProgramParameter(args[0], ctx.LINK_STATUS))\n          console.warn(\n            'something went wrong in replay',\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            ctx.getProgramInfoLog(args[0]),\n          );\n      }\n      const webglError = ctx.getError();\n      if (webglError !== ctx.NO_ERROR) {\n        console.warn(\n          'WEBGL ERROR',\n          webglError,\n          'on command:',\n          mutation.property,\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n          ...args,\n        );\n      }\n    }\n  } catch (error) {\n    errorHandler(mutation, error);\n  }\n}\n","import {\n  CanvasContext,\n  type canvasMutationCommand,\n  type canvasMutationData,\n  type canvasMutationParam,\n} from '@sailfish-rrweb/types';\nimport type { Replayer } from '..';\nimport canvas2DMutation from './2d';\nimport webglMutation from './webgl';\n\nexport default async function canvasMutation({\n  event,\n  mutation,\n  target,\n  imageMap,\n  canvasEventMap,\n  errorHandler,\n}: {\n  event: Parameters<Replayer['applyIncremental']>[0];\n  mutation: canvasMutationData;\n  target: HTMLCanvasElement;\n  imageMap: Replayer['imageMap'];\n  canvasEventMap: Replayer['canvasEventMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  try {\n    const precomputedMutation: canvasMutationParam =\n      canvasEventMap.get(event) || mutation;\n\n    const commands: canvasMutationCommand[] =\n      'commands' in precomputedMutation\n        ? precomputedMutation.commands\n        : [precomputedMutation];\n\n    if ([CanvasContext.WebGL, CanvasContext.WebGL2].includes(mutation.type)) {\n      for (let i = 0; i < commands.length; i++) {\n        const command = commands[i];\n        await webglMutation({\n          mutation: command,\n          type: mutation.type,\n          target,\n          imageMap,\n          errorHandler,\n        });\n      }\n      return;\n    }\n    // default is '2d' for backwards compatibility (rrweb below 1.1.x)\n    await canvas2DMutation({\n      event,\n      mutations: commands,\n      target,\n      imageMap,\n      errorHandler,\n    });\n  } catch (error) {\n    errorHandler(mutation, error);\n  }\n}\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction t(t,n){var e=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var r,o,i=e.call(t),a=[];try{for(;(void 0===n||n-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return a}var n;!function(t){t[t.NotStarted=0]=\"NotStarted\",t[t.Running=1]=\"Running\",t[t.Stopped=2]=\"Stopped\"}(n||(n={}));var e={type:\"xstate.init\"};function r(t){return void 0===t?[]:[].concat(t)}function o(t){return{type:\"xstate.assign\",assignment:t}}function i(t,n){return\"string\"==typeof(t=\"string\"==typeof t&&n&&n[t]?n[t]:t)?{type:t}:\"function\"==typeof t?{type:t.name,exec:t}:t}function a(t){return function(n){return t===n}}function u(t){return\"string\"==typeof t?{type:t}:t}function c(t,n){return{value:t,context:n,actions:[],changed:!1,matches:a(t)}}function f(t,n,e){var r=n,o=!1;return[t.filter((function(t){if(\"xstate.assign\"===t.type){o=!0;var n=Object.assign({},r);return\"function\"==typeof t.assignment?n=t.assignment(r,e):Object.keys(t.assignment).forEach((function(o){n[o]=\"function\"==typeof t.assignment[o]?t.assignment[o](r,e):t.assignment[o]})),r=n,!1}return!0})),r,o]}function s(n,o){void 0===o&&(o={});var s=t(f(r(n.states[n.initial].entry).map((function(t){return i(t,o.actions)})),n.context,e),2),l=s[0],v=s[1],y={config:n,_options:o,initialState:{value:n.initial,actions:l,context:v,matches:a(n.initial)},transition:function(e,o){var s,l,v=\"string\"==typeof e?{value:e,context:n.context}:e,p=v.value,g=v.context,d=u(o),x=n.states[p];if(x.on){var m=r(x.on[d.type]);try{for(var h=function(t){var n=\"function\"==typeof Symbol&&Symbol.iterator,e=n&&t[n],r=0;if(e)return e.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}(m),b=h.next();!b.done;b=h.next()){var S=b.value;if(void 0===S)return c(p,g);var w=\"string\"==typeof S?{target:S}:S,j=w.target,E=w.actions,R=void 0===E?[]:E,N=w.cond,O=void 0===N?function(){return!0}:N,_=void 0===j,k=null!=j?j:p,T=n.states[k];if(O(g,d)){var q=t(f((_?r(R):[].concat(x.exit,R,T.entry).filter((function(t){return t}))).map((function(t){return i(t,y._options.actions)})),g,d),3),z=q[0],A=q[1],B=q[2],C=null!=j?j:p;return{value:C,context:A,actions:z,changed:j!==p||z.length>0||B,matches:a(C)}}}}catch(t){s={error:t}}finally{try{b&&!b.done&&(l=h.return)&&l.call(h)}finally{if(s)throw s.error}}}return c(p,g)}};return y}var l=function(t,n){return t.actions.forEach((function(e){var r=e.exec;return r&&r(t.context,n)}))};function v(t){var r=t.initialState,o=n.NotStarted,i=new Set,c={_machine:t,send:function(e){o===n.Running&&(r=t.transition(r,e),l(r,u(e)),i.forEach((function(t){return t(r)})))},subscribe:function(t){return i.add(t),t(r),{unsubscribe:function(){return i.delete(t)}}},start:function(i){if(i){var u=\"object\"==typeof i?i:{context:t.config.context,value:i};r={value:u.value,actions:[],context:u.context,matches:a(u.value)}}return o=n.Running,l(r,e),c},stop:function(){return o=n.Stopped,i.clear(),c},get state(){return r},get status(){return o}};return c}export{n as InterpreterStatus,o as assign,s as createMachine,v as interpret};\n","import {\n  EventType,\n  IncrementalSource,\n  type actionWithDelay,\n  type eventWithTime,\n} from '@sailfish-rrweb/types';\n\nexport class Timer {\n  public timeOffset = 0;\n  public speed: number;\n\n  private actions: actionWithDelay[];\n  private raf: number | true | null = null;\n  private lastTimestamp: number;\n\n  constructor(\n    actions: actionWithDelay[] = [],\n    config: {\n      speed: number;\n    },\n  ) {\n    this.actions = actions;\n    this.speed = config.speed;\n  }\n  /**\n   * Add an action, possibly after the timer starts.\n   */\n  public addAction(action: actionWithDelay) {\n    const rafWasActive = this.raf === true;\n    if (\n      !this.actions.length ||\n      this.actions[this.actions.length - 1].delay <= action.delay\n    ) {\n      // 'fast track'\n      this.actions.push(action);\n    } else {\n      // binary search - events can arrive out of order in a realtime context\n      const index = this.findActionIndex(action);\n      this.actions.splice(index, 0, action);\n    }\n    if (rafWasActive) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    }\n  }\n\n  public start() {\n    this.timeOffset = 0;\n    this.lastTimestamp = performance.now();\n    this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n  }\n\n  private rafCheck() {\n    const time = performance.now();\n    this.timeOffset += (time - this.lastTimestamp) * this.speed;\n    this.lastTimestamp = time;\n    while (this.actions.length) {\n      const action = this.actions[0];\n\n      if (this.timeOffset >= action.delay) {\n        this.actions.shift();\n        action.doAction();\n      } else {\n        break;\n      }\n    }\n    if (this.actions.length > 0) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    } else {\n      this.raf = true; // was active\n    }\n  }\n\n  public clear() {\n    if (this.raf) {\n      if (this.raf !== true) {\n        cancelAnimationFrame(this.raf);\n      }\n      this.raf = null;\n    }\n    this.actions.length = 0;\n  }\n\n  public setSpeed(speed: number) {\n    this.speed = speed;\n  }\n\n  public isActive() {\n    return this.raf !== null;\n  }\n\n  private findActionIndex(action: actionWithDelay): number {\n    let start = 0;\n    let end = this.actions.length - 1;\n    while (start <= end) {\n      const mid = Math.floor((start + end) / 2);\n      if (this.actions[mid].delay < action.delay) {\n        start = mid + 1;\n      } else if (this.actions[mid].delay > action.delay) {\n        end = mid - 1;\n      } else {\n        // already an action with same delay (timestamp)\n        // the plus one will splice the new one after the existing one\n        return mid + 1;\n      }\n    }\n    return start;\n  }\n}\n\n// TODO: add speed to mouse move timestamp calculation\nexport function addDelay(event: eventWithTime, baselineTime: number): number {\n  // Mouse move events was recorded in a throttle function,\n  // so we need to find the real timestamp by traverse the time offsets.\n  if (\n    event.type === EventType.IncrementalSnapshot &&\n    event.data.source === IncrementalSource.MouseMove &&\n    event.data.positions &&\n    event.data.positions.length\n  ) {\n    const firstOffset = event.data.positions[0].timeOffset;\n    // timeOffset is a negative offset to event.timestamp\n    const firstTimestamp = event.timestamp + firstOffset;\n    event.delay = firstTimestamp - baselineTime;\n    return firstTimestamp - baselineTime;\n  }\n\n  event.delay = event.timestamp - baselineTime;\n  return event.delay;\n}\n","import {\n  EventType,\n  ReplayerEvents,\n  type Emitter,\n  type eventWithTime,\n} from '@sailfish-rrweb/types';\nimport {\n  assign,\n  createMachine,\n  interpret,\n  type StateMachine,\n} from '@xstate/fsm';\nimport type { playerConfig } from '../types';\nimport { Timer, addDelay } from './timer';\n\nexport type PlayerContext = {\n  events: eventWithTime[];\n  timer: Timer;\n  timeOffset: number;\n  baselineTime: number;\n  lastPlayedEvent: eventWithTime | null;\n};\nexport type PlayerEvent =\n  | {\n      type: 'PLAY';\n      payload: {\n        timeOffset: number;\n      };\n    }\n  | {\n      type: 'CAST_EVENT';\n      payload: {\n        event: eventWithTime;\n      };\n    }\n  | { type: 'PAUSE' }\n  | { type: 'TO_LIVE'; payload: { baselineTime?: number } }\n  | {\n      type: 'ADD_EVENT';\n      payload: {\n        event: eventWithTime;\n      };\n    }\n  | {\n      type: 'END';\n    };\nexport type PlayerState =\n  | {\n      value: 'playing';\n      context: PlayerContext;\n    }\n  | {\n      value: 'paused';\n      context: PlayerContext;\n    }\n  | {\n      value: 'live';\n      context: PlayerContext;\n    };\n\n/**\n * If the array have multiple meta and fullsnapshot events,\n * return the events from the last page boundary to the end.\n *\n * A page boundary is identified by a FullSnapshot (type 2) event,\n * optionally preceded by a Meta (type 4) event. We search for\n * FullSnapshot instead of Meta because some page visits may have\n * their Meta timestamp slightly after the target time, while the\n * FullSnapshot is the actual DOM rebuild point we need.\n */\nexport function discardPriorSnapshots(\n  events: eventWithTime[],\n  baselineTime: number,\n): eventWithTime[] {\n  for (let idx = events.length - 1; idx >= 0; idx--) {\n    const event = events[idx];\n    if (event.type === EventType.FullSnapshot) {\n      if (event.timestamp <= baselineTime) {\n        // Include the preceding Meta event if it exists right before this\n        // FullSnapshot, so viewport dimensions are applied correctly.\n        if (\n          idx > 0 &&\n          events[idx - 1].type === EventType.Meta &&\n          events[idx - 1].timestamp <= baselineTime\n        ) {\n          return events.slice(idx - 1);\n        }\n        return events.slice(idx);\n      }\n    }\n  }\n  return events;\n}\n\ntype PlayerAssets = {\n  emitter: Emitter;\n  applyEventsSynchronously(events: Array<eventWithTime>): void;\n  getCastFn(event: eventWithTime, isSync: boolean): () => void;\n};\nexport function createPlayerService(\n  context: PlayerContext,\n  { getCastFn, applyEventsSynchronously, emitter }: PlayerAssets,\n) {\n  const playerMachine = createMachine<PlayerContext, PlayerEvent, PlayerState>(\n    {\n      id: 'player',\n      context,\n      initial: 'paused',\n      states: {\n        playing: {\n          on: {\n            PAUSE: {\n              target: 'paused',\n              actions: ['pause'],\n            },\n            CAST_EVENT: {\n              target: 'playing',\n              actions: 'castEvent',\n            },\n            END: {\n              target: 'paused',\n              actions: ['resetLastPlayedEvent', 'pause'],\n            },\n            ADD_EVENT: {\n              target: 'playing',\n              actions: ['addEvent'],\n            },\n          },\n        },\n        paused: {\n          on: {\n            PLAY: {\n              target: 'playing',\n              actions: ['recordTimeOffset', 'play'],\n            },\n            CAST_EVENT: {\n              target: 'paused',\n              actions: 'castEvent',\n            },\n            TO_LIVE: {\n              target: 'live',\n              actions: ['startLive'],\n            },\n            ADD_EVENT: {\n              target: 'paused',\n              actions: ['addEvent'],\n            },\n          },\n        },\n        live: {\n          on: {\n            ADD_EVENT: {\n              target: 'live',\n              actions: ['addEvent'],\n            },\n            CAST_EVENT: {\n              target: 'live',\n              actions: ['castEvent'],\n            },\n          },\n        },\n      },\n    },\n    {\n      actions: {\n        castEvent: assign({\n          lastPlayedEvent: (ctx, event) => {\n            if (event.type === 'CAST_EVENT') {\n              return event.payload.event;\n            }\n            return ctx.lastPlayedEvent;\n          },\n        }),\n        recordTimeOffset: assign((ctx, event) => {\n          let timeOffset = ctx.timeOffset;\n          if ('payload' in event && 'timeOffset' in event.payload) {\n            timeOffset = event.payload.timeOffset;\n          }\n          return {\n            ...ctx,\n            timeOffset,\n            baselineTime: ctx.events[0].timestamp + timeOffset,\n          };\n        }),\n        play(ctx) {\n          const { timer, events, baselineTime } = ctx;\n          timer.clear();\n\n          for (const event of events) {\n            // TODO: improve this API\n            addDelay(event, baselineTime);\n          }\n          const neededEvents = discardPriorSnapshots(events, baselineTime);\n\n          emitter.emit(ReplayerEvents.PlayBack);\n\n          const syncEvents = new Array<eventWithTime>();\n          for (const event of neededEvents) {\n            if (event.timestamp < baselineTime) {\n              syncEvents.push(event);\n            } else {\n              const castFn = getCastFn(event, false);\n              timer.addAction({\n                doAction: () => {\n                  castFn();\n                },\n                delay: event.delay!,\n              });\n            }\n          }\n          applyEventsSynchronously(syncEvents);\n          emitter.emit(ReplayerEvents.Flush);\n          timer.start();\n        },\n        pause(ctx) {\n          ctx.timer.clear();\n        },\n        resetLastPlayedEvent: assign((ctx) => {\n          return {\n            ...ctx,\n            lastPlayedEvent: null,\n          };\n        }),\n        startLive: assign({\n          baselineTime: (ctx, event) => {\n            ctx.timer.start();\n            if (event.type === 'TO_LIVE' && event.payload.baselineTime) {\n              return event.payload.baselineTime;\n            }\n            return Date.now();\n          },\n        }),\n        addEvent: assign((ctx, machineEvent) => {\n          const { baselineTime, timer, events } = ctx;\n          if (machineEvent.type === 'ADD_EVENT') {\n            const { event } = machineEvent.payload;\n            addDelay(event, baselineTime);\n\n            let end = events.length - 1;\n            if (!events[end] || events[end].timestamp <= event.timestamp) {\n              // fast track\n              events.push(event);\n            } else {\n              let insertionIndex = -1;\n              let start = 0;\n              while (start <= end) {\n                const mid = Math.floor((start + end) / 2);\n                if (events[mid].timestamp <= event.timestamp) {\n                  start = mid + 1;\n                } else {\n                  end = mid - 1;\n                }\n              }\n              if (insertionIndex === -1) {\n                insertionIndex = start;\n              }\n              events.splice(insertionIndex, 0, event);\n            }\n\n            const isSync = event.timestamp < baselineTime;\n            // Skip applying ANY sync event if a later FullSnapshot exists\n            // before baselineTime — the current DOM is built from that later\n            // snapshot, so applying older events (including incremental ones)\n            // would corrupt the DOM with stale node references.\n            let skipSync = false;\n            if (isSync) {\n              for (let i = events.length - 1; i >= 0; i--) {\n                const e = events[i];\n                if (e === event) break;\n                if (\n                  e.type === EventType.FullSnapshot &&\n                  e.timestamp > event.timestamp &&\n                  e.timestamp <= baselineTime\n                ) {\n                  skipSync = true;\n                  break;\n                }\n              }\n            }\n\n            if (!skipSync) {\n              const castFn = getCastFn(event, isSync);\n              if (isSync) {\n                castFn();\n              } else if (timer.isActive()) {\n                timer.addAction({\n                  doAction: () => {\n                    castFn();\n                  },\n                  delay: event.delay!,\n                });\n              }\n            }\n          }\n          return { ...ctx, events };\n        }),\n      },\n    },\n  );\n  return interpret(playerMachine);\n}\n\nexport type SpeedContext = {\n  normalSpeed: playerConfig['speed'];\n  timer: Timer;\n};\n\nexport type SpeedEvent =\n  | {\n      type: 'FAST_FORWARD';\n      payload: { speed: playerConfig['speed'] };\n    }\n  | {\n      type: 'BACK_TO_NORMAL';\n    }\n  | {\n      type: 'SET_SPEED';\n      payload: { speed: playerConfig['speed'] };\n    };\n\nexport type SpeedState =\n  | {\n      value: 'normal';\n      context: SpeedContext;\n    }\n  | {\n      value: 'skipping';\n      context: SpeedContext;\n    };\n\nexport function createSpeedService(context: SpeedContext) {\n  const speedMachine = createMachine<SpeedContext, SpeedEvent, SpeedState>(\n    {\n      id: 'speed',\n      context,\n      initial: 'normal',\n      states: {\n        normal: {\n          on: {\n            FAST_FORWARD: {\n              target: 'skipping',\n              actions: ['recordSpeed', 'setSpeed'],\n            },\n            SET_SPEED: {\n              target: 'normal',\n              actions: ['setSpeed'],\n            },\n          },\n        },\n        skipping: {\n          on: {\n            BACK_TO_NORMAL: {\n              target: 'normal',\n              actions: ['restoreSpeed'],\n            },\n            SET_SPEED: {\n              target: 'normal',\n              actions: ['setSpeed'],\n            },\n          },\n        },\n      },\n    },\n    {\n      actions: {\n        setSpeed: (ctx, event) => {\n          if ('payload' in event) {\n            ctx.timer.setSpeed(event.payload.speed);\n          }\n        },\n        recordSpeed: assign({\n          normalSpeed: (ctx) => ctx.timer.speed,\n        }),\n        restoreSpeed: (ctx) => {\n          ctx.timer.setSpeed(ctx.normalSpeed);\n        },\n      },\n    },\n  );\n\n  return interpret(speedMachine);\n}\n\nexport type PlayerMachineState = StateMachine.State<\n  PlayerContext,\n  PlayerEvent,\n  PlayerState\n>;\n\nexport type SpeedMachineState = StateMachine.State<\n  SpeedContext,\n  SpeedEvent,\n  SpeedState\n>;\n","import type { RRMediaElement } from '@sailfish-rrweb/rrdom';\nimport type { Mirror, mediaAttributes } from '@sailfish-rrweb/rrweb-snapshot';\nimport type { mediaInteractionData } from '@sailfish-rrweb/types';\nimport {\n  MediaInteractions,\n  ReplayerEvents,\n  type Emitter,\n} from '@sailfish-rrweb/types';\nimport type { createPlayerService, createSpeedService } from '../machine';\n\ntype MediaState = {\n  isPlaying: boolean;\n  currentTimeAtLastInteraction: number;\n  lastInteractionTimeOffset: number;\n  playbackRate: number;\n  loop: boolean;\n  volume: number;\n  muted: boolean;\n};\n\nexport class MediaManager {\n  private mediaMap: Map<HTMLMediaElement | RRMediaElement, MediaState> =\n    new Map();\n  private warn: (...args: Parameters<typeof console.warn>) => void;\n  private service: ReturnType<typeof createPlayerService>;\n  private speedService: ReturnType<typeof createSpeedService>;\n  private emitter: Emitter;\n  private getCurrentTime: () => number;\n  private metadataCallbackMap: WeakMap<\n    HTMLMediaElement | RRMediaElement,\n    () => void\n  > = new Map();\n\n  constructor(options: {\n    warn: (...args: Parameters<typeof console.warn>) => void;\n    service: ReturnType<typeof createPlayerService>;\n    speedService: ReturnType<typeof createSpeedService>;\n    getCurrentTime: () => number;\n    emitter: Emitter;\n  }) {\n    this.warn = options.warn;\n    this.service = options.service;\n    this.speedService = options.speedService;\n    this.emitter = options.emitter;\n    this.getCurrentTime = options.getCurrentTime;\n\n    this.emitter.on(ReplayerEvents.Start, this.start.bind(this));\n    this.emitter.on(ReplayerEvents.SkipStart, this.start.bind(this));\n    this.emitter.on(ReplayerEvents.Pause, this.pause.bind(this));\n    this.emitter.on(ReplayerEvents.Finish, this.pause.bind(this));\n    this.speedService.subscribe(() => {\n      this.syncAllMediaElements();\n    });\n  }\n\n  private syncAllMediaElements(options = { pause: false }) {\n    this.mediaMap.forEach((_mediaState, target) => {\n      this.syncTargetWithState(target);\n      if (options.pause) {\n        target.pause();\n      }\n    });\n  }\n\n  private start() {\n    this.syncAllMediaElements();\n  }\n\n  private pause() {\n    this.syncAllMediaElements({ pause: true });\n  }\n\n  private seekTo({\n    time,\n    target,\n    mediaState,\n  }: {\n    time: number;\n    target: HTMLMediaElement | RRMediaElement;\n    mediaState: MediaState;\n  }) {\n    if (mediaState.isPlaying) {\n      const differenceBetweenCurrentTimeAndMediaMutationTimestamp =\n        time - mediaState.lastInteractionTimeOffset;\n      const mediaPlaybackOffset =\n        (differenceBetweenCurrentTimeAndMediaMutationTimestamp / 1000) *\n        mediaState.playbackRate;\n\n      const duration = 'duration' in target && target.duration;\n\n      // Video hasn't loaded yet, wait for metadata\n      if (Number.isNaN(duration)) {\n        this.waitForMetadata(target);\n        return;\n      }\n\n      let seekToTime =\n        mediaState.currentTimeAtLastInteraction + mediaPlaybackOffset;\n\n      if (\n        target.loop &&\n        // RRMediaElement doesn't have a duration property\n        duration !== false\n      ) {\n        seekToTime = seekToTime % duration;\n      }\n\n      target.currentTime = seekToTime;\n    } else {\n      target.pause();\n      target.currentTime = mediaState.currentTimeAtLastInteraction;\n    }\n  }\n\n  private waitForMetadata(target: HTMLMediaElement | RRMediaElement) {\n    if (this.metadataCallbackMap.has(target)) return;\n    if (!('addEventListener' in target)) return;\n\n    const onLoadedMetadata = () => {\n      this.metadataCallbackMap.delete(target);\n      const mediaState = this.mediaMap.get(target);\n      if (!mediaState) return;\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState,\n      });\n    };\n\n    this.metadataCallbackMap.set(target, onLoadedMetadata);\n    target.addEventListener('loadedmetadata', onLoadedMetadata, {\n      once: true,\n    });\n  }\n\n  private getMediaStateFromMutation({\n    target,\n    timeOffset,\n    mutation,\n  }: {\n    target: HTMLMediaElement | RRMediaElement;\n    timeOffset: number;\n    mutation: mediaInteractionData;\n  }): MediaState {\n    const lastState = this.mediaMap.get(target);\n    const { type, playbackRate, currentTime, muted, volume, loop } = mutation;\n\n    const isPlaying =\n      type === MediaInteractions.Play ||\n      (type !== MediaInteractions.Pause &&\n        (lastState?.isPlaying || target.getAttribute('autoplay') !== null));\n\n    const mediaState: MediaState = {\n      isPlaying,\n      currentTimeAtLastInteraction:\n        currentTime ?? lastState?.currentTimeAtLastInteraction ?? 0,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate: playbackRate ?? lastState?.playbackRate ?? 1,\n      volume: volume ?? lastState?.volume ?? 1,\n      muted: muted ?? lastState?.muted ?? target.getAttribute('muted') === null,\n      loop: loop ?? lastState?.loop ?? target.getAttribute('loop') === null,\n    };\n\n    return mediaState;\n  }\n\n  private syncTargetWithState(target: HTMLMediaElement | RRMediaElement) {\n    const mediaState = this.mediaMap.get(target);\n    if (!mediaState) return;\n    const { muted, loop, volume, isPlaying } = mediaState;\n    const playerIsPaused = this.service.state.matches('paused');\n    const playbackRate =\n      mediaState.playbackRate * this.speedService.state.context.timer.speed;\n\n    try {\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState,\n      });\n\n      if (target.volume !== volume) {\n        target.volume = volume;\n      }\n      target.muted = muted;\n      target.loop = loop;\n\n      if (target.playbackRate !== playbackRate) {\n        // Avoid setting playbackRate when it's already the same\n        // Safari drops frames whenever playbackRate is set, even if it's the same\n        target.playbackRate = playbackRate;\n      }\n\n      if (isPlaying && !playerIsPaused) {\n        // remove listener for 'canplay' event because play() is async and returns a promise\n        // i.e. media will eventually start to play when data is loaded\n        // 'canplay' event fires even when currentTime attribute changes which may lead to\n        // unexpected behavior\n        void target.play();\n      } else {\n        target.pause();\n      }\n    } catch (error) {\n      this.warn(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n        `Failed to replay media interactions: ${error.message || error}`,\n      );\n    }\n  }\n\n  public addMediaElements(node: Node, timeOffset: number, mirror: Mirror) {\n    if (!['AUDIO', 'VIDEO'].includes(node.nodeName)) return;\n    const target = node as HTMLMediaElement;\n    const serializedNode = mirror.getMeta(target);\n    if (!serializedNode || !('attributes' in serializedNode)) return;\n    const playerIsPaused = this.service.state.matches('paused');\n    const mediaAttributes = serializedNode.attributes as\n      | mediaAttributes\n      | Record<string, never>;\n\n    let isPlaying = false;\n    if (mediaAttributes.rr_mediaState) {\n      isPlaying = mediaAttributes.rr_mediaState === 'played';\n    } else {\n      isPlaying = target.getAttribute('autoplay') !== null;\n    }\n    if (isPlaying && playerIsPaused) target.pause();\n\n    let playbackRate = 1;\n    if (typeof mediaAttributes.rr_mediaPlaybackRate === 'number') {\n      playbackRate = mediaAttributes.rr_mediaPlaybackRate;\n    }\n\n    let muted = false;\n    if (typeof mediaAttributes.rr_mediaMuted === 'boolean') {\n      muted = mediaAttributes.rr_mediaMuted;\n    } else {\n      muted = target.getAttribute('muted') !== null;\n    }\n\n    let loop = false;\n    if (typeof mediaAttributes.rr_mediaLoop === 'boolean') {\n      loop = mediaAttributes.rr_mediaLoop;\n    } else {\n      loop = target.getAttribute('loop') !== null;\n    }\n\n    let volume = 1;\n    if (typeof mediaAttributes.rr_mediaVolume === 'number') {\n      volume = mediaAttributes.rr_mediaVolume;\n    }\n\n    let currentTimeAtLastInteraction = 0;\n    if (typeof mediaAttributes.rr_mediaCurrentTime === 'number') {\n      currentTimeAtLastInteraction = mediaAttributes.rr_mediaCurrentTime;\n    }\n\n    this.mediaMap.set(target, {\n      isPlaying,\n      currentTimeAtLastInteraction,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate,\n      volume,\n      muted,\n      loop,\n    });\n    this.syncTargetWithState(target);\n  }\n\n  public mediaMutation({\n    target,\n    timeOffset,\n    mutation,\n  }: {\n    target: HTMLMediaElement | RRMediaElement;\n    timeOffset: number;\n    mutation: mediaInteractionData;\n  }) {\n    this.mediaMap.set(\n      target,\n      this.getMediaStateFromMutation({\n        target,\n        timeOffset,\n        mutation,\n      }),\n    );\n\n    this.syncTargetWithState(target);\n  }\n\n  public isSupportedMediaElement(node: Node): node is HTMLMediaElement {\n    return ['AUDIO', 'VIDEO'].includes(node.nodeName);\n  }\n\n  public reset() {\n    this.mediaMap.clear();\n  }\n}\n","/**\n * A fork version of https://github.com/iamdustan/smoothscroll\n * Add support of customize target window and document\n */\n\n/* eslint-disable */\n// @ts-nocheck\nexport function polyfill(w: Window = window, d = document) {\n  // return if scroll behavior is supported and polyfill is not forced\n  if (\n    'scrollBehavior' in d.documentElement.style &&\n    w.__forceSmoothScrollPolyfill__ !== true\n  ) {\n    return;\n  }\n\n  // globals\n  const Element = w.HTMLElement || w.Element;\n  const SCROLL_TIME = 468;\n\n  // object gathering original scroll methods\n  const original = {\n    scroll: w.scroll || w.scrollTo,\n    scrollBy: w.scrollBy,\n    elementScroll: Element.prototype.scroll || scrollElement,\n    scrollIntoView: Element.prototype.scrollIntoView,\n  };\n\n  // define timing method\n  const now =\n    w.performance && w.performance.now\n      ? w.performance.now.bind(w.performance)\n      : Date.now;\n\n  /**\n   * indicates if a the current browser is made by Microsoft\n   * @method isMicrosoftBrowser\n   * @param {String} userAgent\n   * @returns {Boolean}\n   */\n  function isMicrosoftBrowser(userAgent) {\n    const userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n    return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n  }\n\n  /*\n   * IE has rounding bug rounding down clientHeight and clientWidth and\n   * rounding up scrollHeight and scrollWidth causing false positives\n   * on hasScrollableSpace\n   */\n  const ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n  /**\n   * changes scroll position inside an element\n   * @method scrollElement\n   * @param {Number} x\n   * @param {Number} y\n   * @returns {undefined}\n   */\n  function scrollElement(x, y) {\n    this.scrollLeft = x;\n    this.scrollTop = y;\n  }\n\n  /**\n   * returns result of applying ease math function to a number\n   * @method ease\n   * @param {Number} k\n   * @returns {Number}\n   */\n  function ease(k) {\n    return 0.5 * (1 - Math.cos(Math.PI * k));\n  }\n\n  /**\n   * indicates if a smooth behavior should be applied\n   * @method shouldBailOut\n   * @param {Number|Object} firstArg\n   * @returns {Boolean}\n   */\n  function shouldBailOut(firstArg) {\n    if (\n      firstArg === null ||\n      typeof firstArg !== 'object' ||\n      firstArg.behavior === undefined ||\n      firstArg.behavior === 'auto' ||\n      firstArg.behavior === 'instant'\n    ) {\n      // first argument is not an object/null\n      // or behavior is auto, instant or undefined\n      return true;\n    }\n\n    if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n      // first argument is an object and behavior is smooth\n      return false;\n    }\n\n    // throw error when behavior is not supported\n    throw new TypeError(\n      'behavior member of ScrollOptions ' +\n        firstArg.behavior +\n        ' is not a valid value for enumeration ScrollBehavior.',\n    );\n  }\n\n  /**\n   * indicates if an element has scrollable space in the provided axis\n   * @method hasScrollableSpace\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function hasScrollableSpace(el, axis) {\n    if (axis === 'Y') {\n      return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n    }\n\n    if (axis === 'X') {\n      return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n    }\n  }\n\n  /**\n   * indicates if an element has a scrollable overflow property in the axis\n   * @method canOverflow\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function canOverflow(el, axis) {\n    const overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n    return overflowValue === 'auto' || overflowValue === 'scroll';\n  }\n\n  /**\n   * indicates if an element can be scrolled in either axis\n   * @method isScrollable\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function isScrollable(el) {\n    const isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n    const isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n    return isScrollableY || isScrollableX;\n  }\n\n  /**\n   * finds scrollable parent of an element\n   * @method findScrollableParent\n   * @param {Node} el\n   * @returns {Node} el\n   */\n  function findScrollableParent(el) {\n    while (el !== d.body && isScrollable(el) === false) {\n      el = el.parentNode || el.host;\n    }\n\n    return el;\n  }\n\n  /**\n   * self invoked function that, given a context, steps through scrolling\n   * @method step\n   * @param {Object} context\n   * @returns {undefined}\n   */\n  function step(context) {\n    const time = now();\n    let value;\n    let currentX;\n    let currentY;\n    let elapsed = (time - context.startTime) / SCROLL_TIME;\n\n    // avoid elapsed times higher than one\n    elapsed = elapsed > 1 ? 1 : elapsed;\n\n    // apply easing to elapsed time\n    value = ease(elapsed);\n\n    currentX = context.startX + (context.x - context.startX) * value;\n    currentY = context.startY + (context.y - context.startY) * value;\n\n    context.method.call(context.scrollable, currentX, currentY);\n\n    // scroll more if we have not reached our destination\n    if (currentX !== context.x || currentY !== context.y) {\n      w.requestAnimationFrame(step.bind(w, context));\n    }\n  }\n\n  /**\n   * scrolls window or element with a smooth behavior\n   * @method smoothScroll\n   * @param {Object|Node} el\n   * @param {Number} x\n   * @param {Number} y\n   * @returns {undefined}\n   */\n  function smoothScroll(el, x, y) {\n    let scrollable;\n    let startX;\n    let startY;\n    let method;\n    const startTime = now();\n\n    // define scroll context\n    if (el === d.body) {\n      scrollable = w;\n      startX = w.scrollX || w.pageXOffset;\n      startY = w.scrollY || w.pageYOffset;\n      method = original.scroll;\n    } else {\n      scrollable = el;\n      startX = el.scrollLeft;\n      startY = el.scrollTop;\n      method = scrollElement;\n    }\n\n    // scroll looping over a frame\n    step({\n      scrollable: scrollable,\n      method: method,\n      startTime: startTime,\n      startX: startX,\n      startY: startY,\n      x: x,\n      y: y,\n    });\n  }\n\n  // ORIGINAL METHODS OVERRIDES\n  // w.scroll and w.scrollTo\n  w.scroll = w.scrollTo = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scroll.call(\n        w,\n        arguments[0].left !== undefined\n          ? arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? arguments[0]\n          : w.scrollX || w.pageXOffset,\n        // use top prop, second argument if present or fallback to scrollY\n        arguments[0].top !== undefined\n          ? arguments[0].top\n          : arguments[1] !== undefined\n          ? arguments[1]\n          : w.scrollY || w.pageYOffset,\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      w,\n      d.body,\n      arguments[0].left !== undefined\n        ? ~~arguments[0].left\n        : w.scrollX || w.pageXOffset,\n      arguments[0].top !== undefined\n        ? ~~arguments[0].top\n        : w.scrollY || w.pageYOffset,\n    );\n  };\n\n  // w.scrollBy\n  w.scrollBy = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0])) {\n      original.scrollBy.call(\n        w,\n        arguments[0].left !== undefined\n          ? arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? arguments[0]\n          : 0,\n        arguments[0].top !== undefined\n          ? arguments[0].top\n          : arguments[1] !== undefined\n          ? arguments[1]\n          : 0,\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      w,\n      d.body,\n      ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n      ~~arguments[0].top + (w.scrollY || w.pageYOffset),\n    );\n  };\n\n  // Element.prototype.scroll and Element.prototype.scrollTo\n  Element.prototype.scroll = Element.prototype.scrollTo = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      // if one number is passed, throw error to match Firefox implementation\n      if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n        throw new SyntaxError('Value could not be converted');\n      }\n\n      original.elementScroll.call(\n        this,\n        // use left prop, first number argument or fallback to scrollLeft\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? ~~arguments[0]\n          : this.scrollLeft,\n        // use top prop, second argument or fallback to scrollTop\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top\n          : arguments[1] !== undefined\n          ? ~~arguments[1]\n          : this.scrollTop,\n      );\n\n      return;\n    }\n\n    const left = arguments[0].left;\n    const top = arguments[0].top;\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      this,\n      this,\n      typeof left === 'undefined' ? this.scrollLeft : ~~left,\n      typeof top === 'undefined' ? this.scrollTop : ~~top,\n    );\n  };\n\n  // Element.prototype.scrollBy\n  Element.prototype.scrollBy = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.elementScroll.call(\n        this,\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left + this.scrollLeft\n          : ~~arguments[0] + this.scrollLeft,\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top + this.scrollTop\n          : ~~arguments[1] + this.scrollTop,\n      );\n\n      return;\n    }\n\n    this.scroll({\n      left: ~~arguments[0].left + this.scrollLeft,\n      top: ~~arguments[0].top + this.scrollTop,\n      behavior: arguments[0].behavior,\n    });\n  };\n\n  // Element.prototype.scrollIntoView\n  Element.prototype.scrollIntoView = function () {\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scrollIntoView.call(\n        this,\n        arguments[0] === undefined ? true : arguments[0],\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    const scrollableParent = findScrollableParent(this);\n    const parentRects = scrollableParent.getBoundingClientRect();\n    const clientRects = this.getBoundingClientRect();\n\n    if (scrollableParent !== d.body) {\n      // reveal element inside parent\n      smoothScroll.call(\n        this,\n        scrollableParent,\n        scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n        scrollableParent.scrollTop + clientRects.top - parentRects.top,\n      );\n\n      // reveal parent in viewport unless is fixed\n      if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n        w.scrollBy({\n          left: parentRects.left,\n          top: parentRects.top,\n          behavior: 'smooth',\n        });\n      }\n    } else {\n      // reveal element in viewport\n      w.scrollBy({\n        left: clientRects.left,\n        top: clientRects.top,\n        behavior: 'smooth',\n      });\n    }\n  };\n}\n","const rules: (blockClass: string) => string[] = (blockClass: string) => [\n  `.${blockClass} { background: currentColor }`,\n  'noscript { display: none !important; }',\n];\n\nexport default rules;\n","import type {\n  RRCanvasElement,\n  Mirror as RRDOMMirror,\n  RRElement,\n  RRIFrameElement,\n  RRMediaElement,\n  RRNode,\n  RRStyleElement,\n  ReplayerHandler,\n} from '@sailfish-rrweb/rrdom';\nimport {\n  RRDocument,\n  buildFromDom,\n  buildFromNode,\n  createOrGetNode,\n  diff,\n  getDefaultSN,\n} from '@sailfish-rrweb/rrdom';\nimport {\n  Mirror,\n  NodeType,\n  buildNodeWithSN,\n  createCache,\n  createMirror,\n  rebuild,\n  toLowerCase,\n  type BuildCache,\n  type attributes,\n  type serializedElementNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  Emitter,\n  Handler,\n  IWindow,\n  addedNodeMutation,\n  adoptedStyleSheetData,\n  canvasEventWithTime,\n  canvasMutationCommand,\n  canvasMutationData,\n  canvasMutationParam,\n  eventWithTime,\n  fullSnapshotEvent,\n  incrementalData,\n  incrementalSnapshotEvent,\n  inputData,\n  metaEvent,\n  mouseMovePos,\n  mutationData,\n  playerMetaData,\n  scrollData,\n  selectionData,\n  styleDeclarationData,\n  styleSheetRuleData,\n  styleValueWithPriority,\n  viewportResizeDimension,\n} from '@sailfish-rrweb/types';\nimport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  ReplayerEvents,\n} from '@sailfish-rrweb/types';\nimport * as mittProxy from 'mitt';\nimport type { missingNodeMap, playerConfig } from '../types';\nimport {\n  StyleSheetMirror,\n  getBaseDimension,\n  getNestedRule,\n  getPositionsAndIndex,\n  hasShadowRoot,\n  isSerializedIframe,\n  iterateResolveTree,\n  polyfill,\n  queueToResolveTrees,\n  uniqueTextMutations,\n  type AppendedIframe,\n} from '../utils';\nimport canvasMutation from './canvas';\nimport { deserializeArg } from './canvas/deserialize-args';\nimport {\n  createPlayerService,\n  createSpeedService,\n  type PlayerMachineState,\n  type SpeedMachineState,\n} from './machine';\nimport { MediaManager } from './media';\nimport { polyfill as smoothscrollPolyfill } from './smoothscroll';\nimport getInjectStyleRules from './styles/inject-style';\nimport './styles/style.css';\nimport { Timer } from './timer';\nimport { applyTextDelta } from '../record/text-diff';\n\nconst SKIP_TIME_INTERVAL = 5 * 1000;\n\n// https://github.com/rollup/rollup/issues/1267#issuecomment-296395734\nconst mitt = mittProxy.default || mittProxy;\n\nconst REPLAY_CONSOLE_PREFIX = '[replayer]';\n\nconst defaultMouseTailConfig = {\n  duration: 500,\n  lineCap: 'round',\n  lineWidth: 3,\n  strokeStyle: 'red',\n} as const;\n\nfunction indicatesTouchDevice(e: eventWithTime) {\n  return (\n    e.type == EventType.IncrementalSnapshot &&\n    (e.data.source == IncrementalSource.TouchMove ||\n      (e.data.source == IncrementalSource.MouseInteraction &&\n        e.data.type == MouseInteractions.TouchStart))\n  );\n}\n\nexport class Replayer {\n  public wrapper: HTMLDivElement;\n  public iframe: HTMLIFrameElement;\n\n  public service: ReturnType<typeof createPlayerService>;\n  public speedService: ReturnType<typeof createSpeedService>;\n  public get timer() {\n    return this.service.state.context.timer;\n  }\n\n  public config: playerConfig;\n\n  // In the fast-forward process, if the virtual-dom optimization is used, this flag value is true.\n  public usingVirtualDom = false;\n  public virtualDom: RRDocument = new RRDocument();\n\n  private mouse: HTMLDivElement;\n  private mouseTail: HTMLCanvasElement | null = null;\n  private tailPositions: Array<{ x: number; y: number }> = [];\n\n  private emitter: Emitter = mitt();\n\n  private nextUserInteractionEvent: eventWithTime | null;\n\n  private legacy_missingNodeRetryMap: missingNodeMap = {};\n\n  // The replayer uses the cache to speed up replay and scrubbing.\n  private cache: BuildCache = createCache();\n\n  private imageMap: Map<eventWithTime | string, HTMLImageElement> = new Map();\n  private canvasEventMap: Map<eventWithTime, canvasMutationParam> = new Map();\n\n  private mirror: Mirror = createMirror();\n\n  // Used to track StyleSheetObjects adopted on multiple document hosts.\n  private styleMirror: StyleSheetMirror = new StyleSheetMirror();\n\n  // Used to track video & audio elements, and keep them in sync with general playback.\n  private mediaManager: MediaManager;\n\n  private firstFullSnapshot: eventWithTime | true | null = null;\n\n  private newDocumentQueue: addedNodeMutation[] = [];\n\n  private mousePos: mouseMovePos | null = null;\n  private touchActive: boolean | null = null;\n  private lastMouseDownEvent: [Node, Event] | null = null;\n\n  // Keep the rootNode of the last hovered element. So  when hovering a new element, we can remove the last hovered element's :hover style.\n  private lastHoveredRootNode: Document | ShadowRoot;\n\n  // Used to track text values for delta reconstruction during replay\n  private textValueMap: Map<number, string> = new Map();\n\n  // In the fast-forward mode, only the last selection data needs to be applied.\n  private lastSelectionData: selectionData | null = null;\n\n  // In the fast-forward mode using VirtualDom optimization, all stylesheetRule, and styleDeclaration events on constructed StyleSheets will be delayed to get applied until the flush stage.\n  private constructedStyleMutations: (\n    | styleSheetRuleData\n    | styleDeclarationData\n  )[] = [];\n\n  // Similar to the reason for constructedStyleMutations.\n  private adoptedStyleSheets: adoptedStyleSheetData[] = [];\n\n  constructor(\n    events: Array<eventWithTime | string>,\n    config?: Partial<playerConfig>,\n  ) {\n    if (!config?.liveMode && events.length < 2) {\n      throw new Error('Replayer need at least 2 events.');\n    }\n    const defaultConfig: playerConfig = {\n      speed: 1,\n      maxSpeed: 360,\n      root: document.body,\n      loadTimeout: 0,\n      skipInactive: false,\n      inactivePeriodThreshold: 10 * 1000,\n      showWarning: true,\n      showDebug: false,\n      blockClass: 'rr-block',\n      liveMode: false,\n      insertStyleRules: [],\n      triggerFocus: true,\n      UNSAFE_replayCanvas: false,\n      pauseAnimation: true,\n      mouseTail: defaultMouseTailConfig,\n      useVirtualDom: true, // Virtual-dom optimization is enabled by default.\n      logger: console,\n    };\n    this.config = Object.assign({}, defaultConfig, config);\n\n    this.handleResize = this.handleResize.bind(this);\n    this.getCastFn = this.getCastFn.bind(this);\n    this.applyEventsSynchronously = this.applyEventsSynchronously.bind(this);\n    this.emitter.on(ReplayerEvents.Resize, this.handleResize as Handler);\n\n    this.setupDom();\n\n    /**\n     * Exposes mirror to the plugins\n     */\n    for (const plugin of this.config.plugins || []) {\n      if (plugin.getMirror) plugin.getMirror({ nodeMirror: this.mirror });\n    }\n\n    this.emitter.on(ReplayerEvents.Flush, () => {\n      if (this.usingVirtualDom) {\n        const replayerHandler: ReplayerHandler = {\n          mirror: this.mirror,\n          applyCanvas: (\n            canvasEvent: canvasEventWithTime,\n            canvasMutationData: canvasMutationData,\n            target: HTMLCanvasElement,\n          ) => {\n            void canvasMutation({\n              event: canvasEvent,\n              mutation: canvasMutationData,\n              target,\n              imageMap: this.imageMap,\n              canvasEventMap: this.canvasEventMap,\n              errorHandler: this.warnCanvasMutationFailed.bind(this),\n            });\n          },\n          applyInput: this.applyInput.bind(this),\n          applyScroll: this.applyScroll.bind(this),\n          applyStyleSheetMutation: (\n            data: styleDeclarationData | styleSheetRuleData,\n            styleSheet: CSSStyleSheet,\n          ) => {\n            if (data.source === IncrementalSource.StyleSheetRule)\n              this.applyStyleSheetRule(data, styleSheet);\n            else if (data.source === IncrementalSource.StyleDeclaration)\n              this.applyStyleDeclaration(data, styleSheet);\n          },\n          afterAppend: (node: Node, id: number) => {\n            for (const plugin of this.config.plugins || []) {\n              if (plugin.onBuild) plugin.onBuild(node, { id, replayer: this });\n            }\n          },\n        };\n        if (this.iframe.contentDocument)\n          try {\n            diff(\n              this.iframe.contentDocument,\n              this.virtualDom,\n              replayerHandler,\n              this.virtualDom.mirror,\n            );\n          } catch (e) {\n            console.warn(e);\n          }\n\n        this.virtualDom.destroyTree();\n        this.usingVirtualDom = false;\n\n        // If these legacy missing nodes haven't been resolved, they should be converted to real Nodes.\n        if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n          for (const key in this.legacy_missingNodeRetryMap) {\n            try {\n              const value = this.legacy_missingNodeRetryMap[key];\n              const realNode = createOrGetNode(\n                value.node as RRNode,\n                this.mirror,\n                this.virtualDom.mirror,\n              );\n              diff(\n                realNode,\n                value.node as RRNode,\n                replayerHandler,\n                this.virtualDom.mirror,\n              );\n              value.node = realNode;\n            } catch (error) {\n              this.warn(error);\n            }\n          }\n        }\n\n        this.constructedStyleMutations.forEach((data) => {\n          this.applyStyleSheetMutation(data);\n        });\n        this.constructedStyleMutations = [];\n\n        this.adoptedStyleSheets.forEach((data) => {\n          this.applyAdoptedStyleSheet(data);\n        });\n        this.adoptedStyleSheets = [];\n      }\n\n      if (this.mousePos) {\n        this.moveAndHover(\n          this.mousePos.x,\n          this.mousePos.y,\n          this.mousePos.id,\n          true,\n          this.mousePos.debugData,\n        );\n        this.mousePos = null;\n      }\n\n      if (this.touchActive === true) {\n        this.mouse.classList.add('touch-active');\n      } else if (this.touchActive === false) {\n        this.mouse.classList.remove('touch-active');\n      }\n      this.touchActive = null;\n\n      if (this.lastMouseDownEvent) {\n        const [target, event] = this.lastMouseDownEvent;\n        target.dispatchEvent(event);\n      }\n      this.lastMouseDownEvent = null;\n\n      if (this.lastSelectionData) {\n        this.applySelection(this.lastSelectionData);\n        this.lastSelectionData = null;\n      }\n    });\n    this.emitter.on(ReplayerEvents.PlayBack, () => {\n      this.firstFullSnapshot = null;\n      this.mirror.reset();\n      this.styleMirror.reset();\n      this.mediaManager.reset();\n      this.textValueMap.clear();\n    });\n\n    const timer = new Timer([], {\n      speed: this.config.speed,\n    });\n    this.service = createPlayerService(\n      {\n        events: events\n          .map((e) => {\n            if (config && config.unpackFn) {\n              return config.unpackFn(e as string);\n            }\n            return e as eventWithTime;\n          })\n          .sort((a1, a2) => a1.timestamp - a2.timestamp),\n        timer,\n        timeOffset: 0,\n        baselineTime: 0,\n        lastPlayedEvent: null,\n      },\n      {\n        getCastFn: this.getCastFn,\n        applyEventsSynchronously: this.applyEventsSynchronously,\n        emitter: this.emitter,\n      },\n    );\n    this.service.start();\n    this.service.subscribe((state) => {\n      this.emitter.emit(ReplayerEvents.StateChange, {\n        player: state,\n      });\n    });\n    this.speedService = createSpeedService({\n      normalSpeed: -1,\n      timer,\n    });\n    this.speedService.start();\n    this.speedService.subscribe((state) => {\n      this.emitter.emit(ReplayerEvents.StateChange, {\n        speed: state,\n      });\n    });\n    this.mediaManager = new MediaManager({\n      warn: this.warn.bind(this),\n      service: this.service,\n      speedService: this.speedService,\n      emitter: this.emitter,\n      getCurrentTime: this.getCurrentTime.bind(this),\n    });\n\n    // rebuild first full snapshot as the poster of the player\n    // maybe we can cache it for performance optimization\n    const firstMeta = this.service.state.context.events.find(\n      (e) => e.type === EventType.Meta,\n    );\n    const firstFullsnapshot = this.service.state.context.events.find(\n      (e) => e.type === EventType.FullSnapshot,\n    );\n    if (firstMeta) {\n      const { width, height } = firstMeta.data as metaEvent['data'];\n      setTimeout(() => {\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width,\n          height,\n        });\n      }, 0);\n    }\n    if (firstFullsnapshot) {\n      setTimeout(() => {\n        // when something has been played, there is no need to rebuild poster\n        if (this.firstFullSnapshot) {\n          // true if any other fullSnapshot has been executed by Timer already\n          return;\n        }\n        this.firstFullSnapshot = firstFullsnapshot;\n        this.rebuildFullSnapshot(\n          firstFullsnapshot as fullSnapshotEvent & { timestamp: number },\n        );\n        this.iframe.contentWindow?.scrollTo(\n          (firstFullsnapshot as fullSnapshotEvent).data.initialOffset,\n        );\n      }, 1);\n    }\n    if (this.service.state.context.events.find(indicatesTouchDevice)) {\n      this.mouse.classList.add('touch-device');\n    }\n  }\n\n  public on(event: string, handler: Handler) {\n    this.emitter.on(event, handler);\n    return this;\n  }\n\n  public off(event: string, handler: Handler) {\n    this.emitter.off(event, handler);\n    return this;\n  }\n\n  public setConfig(config: Partial<playerConfig>) {\n    Object.keys(config).forEach((key) => {\n      const newConfigValue = config[key as keyof playerConfig];\n      (this.config as Record<keyof playerConfig, typeof newConfigValue>)[\n        key as keyof playerConfig\n      ] = config[key as keyof playerConfig];\n    });\n    if (!this.config.skipInactive) {\n      this.backToNormal();\n    }\n    if (typeof config.speed !== 'undefined') {\n      this.speedService.send({\n        type: 'SET_SPEED',\n        payload: {\n          speed: config.speed,\n        },\n      });\n    }\n    if (typeof config.mouseTail !== 'undefined') {\n      if (config.mouseTail === false) {\n        if (this.mouseTail) {\n          this.mouseTail.style.display = 'none';\n        }\n      } else {\n        if (!this.mouseTail) {\n          this.mouseTail = document.createElement('canvas');\n          this.mouseTail.width = Number.parseFloat(this.iframe.width);\n          this.mouseTail.height = Number.parseFloat(this.iframe.height);\n          this.mouseTail.classList.add('replayer-mouse-tail');\n          this.wrapper.insertBefore(this.mouseTail, this.iframe);\n        }\n        this.mouseTail.style.display = 'inherit';\n      }\n    }\n  }\n\n  public getMetaData(): playerMetaData {\n    const firstEvent = this.service.state.context.events[0];\n    const lastEvent =\n      this.service.state.context.events[\n        this.service.state.context.events.length - 1\n      ];\n    return {\n      startTime: firstEvent.timestamp,\n      endTime: lastEvent.timestamp,\n      totalTime: lastEvent.timestamp - firstEvent.timestamp,\n    };\n  }\n\n  /**\n   * Get the actual time offset the player is at now compared to the first event.\n   */\n  public getCurrentTime(): number {\n    return this.timer.timeOffset + this.getTimeOffset();\n  }\n\n  /**\n   * Get the time offset the player is at now compared to the first event, but without regard for the timer.\n   */\n  public getTimeOffset(): number {\n    const { baselineTime, events } = this.service.state.context;\n    return baselineTime - events[0].timestamp;\n  }\n\n  public getMirror(): Mirror {\n    return this.mirror;\n  }\n\n  /**\n   * This API was designed to be used as play at any time offset.\n   * Since we minimized the data collected from recorder, we do not\n   * have the ability of undo an event.\n   * So the implementation of play at any time offset will always iterate\n   * all of the events, cast event before the offset synchronously\n   * and cast event after the offset asynchronously with timer.\n   * @param timeOffset - number\n   */\n  public play(timeOffset = 0) {\n    if (this.service.state.matches('paused')) {\n      this.service.send({ type: 'PLAY', payload: { timeOffset } });\n    } else {\n      this.service.send({ type: 'PAUSE' });\n      this.service.send({ type: 'PLAY', payload: { timeOffset } });\n    }\n    this.iframe.contentDocument\n      ?.getElementsByTagName('html')[0]\n      ?.classList.remove('@sailfish-rrweb/rrweb-paused');\n    this.emitter.emit(ReplayerEvents.Start);\n  }\n\n  public pause(timeOffset?: number) {\n    if (timeOffset === undefined && this.service.state.matches('playing')) {\n      this.service.send({ type: 'PAUSE' });\n    }\n    if (typeof timeOffset === 'number') {\n      this.play(timeOffset);\n      this.service.send({ type: 'PAUSE' });\n    }\n    this.iframe.contentDocument\n      ?.getElementsByTagName('html')[0]\n      ?.classList.add('@sailfish-rrweb/rrweb-paused');\n    this.emitter.emit(ReplayerEvents.Pause);\n  }\n\n  public resume(timeOffset = 0) {\n    this.warn(\n      `The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface.`,\n    );\n    this.play(timeOffset);\n    this.emitter.emit(ReplayerEvents.Resume);\n  }\n\n  /**\n   * Totally destroy this replayer and please be careful that this operation is irreversible.\n   * Memory occupation can be released by removing all references to this replayer.\n   */\n  public destroy() {\n    this.pause();\n    this.mirror.reset();\n    this.styleMirror.reset();\n    this.mediaManager.reset();\n    this.textValueMap.clear();\n    this.config.root.removeChild(this.wrapper);\n    this.emitter.emit(ReplayerEvents.Destroy);\n  }\n\n  public startLive(baselineTime?: number) {\n    this.service.send({ type: 'TO_LIVE', payload: { baselineTime } });\n  }\n\n  public addEvent(rawEvent: eventWithTime | string) {\n    const event = this.config.unpackFn\n      ? this.config.unpackFn(rawEvent as string)\n      : (rawEvent as eventWithTime);\n    if (indicatesTouchDevice(event)) {\n      this.mouse.classList.add('touch-device');\n    }\n    void Promise.resolve().then(() =>\n      this.service.send({ type: 'ADD_EVENT', payload: { event } }),\n    );\n  }\n\n  public enableInteract() {\n    this.iframe.setAttribute('scrolling', 'auto');\n    this.iframe.style.pointerEvents = 'auto';\n  }\n\n  public disableInteract() {\n    this.iframe.setAttribute('scrolling', 'no');\n    this.iframe.style.pointerEvents = 'none';\n  }\n\n  /**\n   * Empties the replayer's cache and reclaims memory.\n   * The replayer will use this cache to speed up the playback.\n   */\n  public resetCache() {\n    this.cache = createCache();\n  }\n\n  private setupDom() {\n    this.wrapper = document.createElement('div');\n    this.wrapper.classList.add('replayer-wrapper');\n    this.config.root.appendChild(this.wrapper);\n\n    this.mouse = document.createElement('div');\n    this.mouse.classList.add('replayer-mouse');\n    this.wrapper.appendChild(this.mouse);\n\n    if (this.config.mouseTail !== false) {\n      this.mouseTail = document.createElement('canvas');\n      this.mouseTail.classList.add('replayer-mouse-tail');\n      this.mouseTail.style.display = 'inherit';\n      this.wrapper.appendChild(this.mouseTail);\n    }\n\n    this.iframe = document.createElement('iframe');\n    const attributes = ['allow-same-origin'];\n    if (this.config.UNSAFE_replayCanvas) {\n      attributes.push('allow-scripts');\n    }\n    // hide iframe before first meta event\n    this.iframe.style.display = 'none';\n    this.iframe.setAttribute('sandbox', attributes.join(' '));\n    this.disableInteract();\n    this.wrapper.appendChild(this.iframe);\n    if (this.iframe.contentWindow && this.iframe.contentDocument) {\n      smoothscrollPolyfill(\n        this.iframe.contentWindow,\n        this.iframe.contentDocument,\n      );\n\n      polyfill(this.iframe.contentWindow as IWindow);\n    }\n  }\n\n  private handleResize = (dimension: viewportResizeDimension) => {\n    this.iframe.style.display = 'inherit';\n    for (const el of [this.mouseTail, this.iframe]) {\n      if (!el) {\n        continue;\n      }\n      el.setAttribute('width', String(dimension.width));\n      el.setAttribute('height', String(dimension.height));\n    }\n  };\n\n  private applyEventsSynchronously = (events: Array<eventWithTime>) => {\n    for (const event of events) {\n      switch (event.type) {\n        case EventType.DomContentLoaded:\n        case EventType.Load:\n        case EventType.Custom:\n          continue;\n        case EventType.FullSnapshot:\n        case EventType.Meta:\n        case EventType.Plugin:\n        case EventType.IncrementalSnapshot:\n          break;\n        default:\n          break;\n      }\n      const castFn = this.getCastFn(event, true);\n      castFn();\n    }\n  };\n\n  private getCastFn = (event: eventWithTime, isSync = false) => {\n    let castFn: undefined | (() => void);\n    switch (event.type) {\n      case EventType.DomContentLoaded:\n      case EventType.Load:\n        break;\n      case EventType.Custom:\n        castFn = () => {\n          /**\n           * emit custom-event and pass the event object.\n           *\n           * This will add more value to the custom event and allows the client to react for custom-event.\n           */\n          this.emitter.emit(ReplayerEvents.CustomEvent, event);\n        };\n        break;\n      case EventType.Meta:\n        castFn = () =>\n          this.emitter.emit(ReplayerEvents.Resize, {\n            width: event.data.width,\n            height: event.data.height,\n          });\n        break;\n      case EventType.FullSnapshot:\n        castFn = () => {\n          if (this.firstFullSnapshot) {\n            if (this.firstFullSnapshot === event) {\n              // we've already built this exact FullSnapshot when the player was mounted, and haven't built any other FullSnapshot since\n              this.firstFullSnapshot = true; // forget as we might need to re-execute this FullSnapshot later e.g. to rebuild after scrubbing\n              return;\n            }\n          } else {\n            // Timer (requestAnimationFrame) can be faster than setTimeout(..., 1)\n            this.firstFullSnapshot = true;\n          }\n          this.mediaManager.reset();\n          this.styleMirror.reset();\n          this.rebuildFullSnapshot(event, isSync);\n          this.iframe.contentWindow?.scrollTo(event.data.initialOffset);\n        };\n        break;\n      case EventType.IncrementalSnapshot:\n        castFn = () => {\n          this.applyIncremental(event, isSync);\n          if (isSync) {\n            // do not check skip in sync\n            return;\n          }\n          if (event === this.nextUserInteractionEvent) {\n            this.nextUserInteractionEvent = null;\n            this.backToNormal();\n          }\n          if (!this.nextUserInteractionEvent) {\n            for (const _event of this.service.state.context.events) {\n              if (_event.timestamp <= event.timestamp) {\n                continue;\n              }\n              if (this.isUserInteraction(_event)) {\n                if (\n                  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                  _event.delay! - event.delay! >\n                  this.config.inactivePeriodThreshold *\n                    this.speedService.state.context.timer.speed\n                ) {\n                  this.nextUserInteractionEvent = _event;\n                }\n                break;\n              }\n            }\n            if (this.nextUserInteractionEvent) {\n              if (this.config.skipInactive) {\n                this.play(\n                  this.nextUserInteractionEvent.timestamp! -\n                    this.getMetaData().startTime -\n                    1000\n                );\n              } else {\n                const skipTime =\n                  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                  this.nextUserInteractionEvent.delay! - event.delay!;\n                const payload = {\n                  speed: Math.min(\n                    Math.round(skipTime / SKIP_TIME_INTERVAL),\n                    this.config.maxSpeed,\n                  ),\n                };\n                this.speedService.send({ type: 'FAST_FORWARD', payload });\n                this.emitter.emit(ReplayerEvents.SkipStart, payload);\n              }\n            }\n          }\n        };\n        break;\n      default:\n    }\n    const wrappedCastFn = () => {\n      if (castFn) {\n        castFn();\n      }\n\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.handler) plugin.handler(event, isSync, { replayer: this });\n      }\n\n      this.service.send({ type: 'CAST_EVENT', payload: { event } });\n\n      // events are kept sorted by timestamp, check if this is the last event\n      const last_index = this.service.state.context.events.length - 1;\n      if (\n        !this.config.liveMode &&\n        event === this.service.state.context.events[last_index]\n      ) {\n        const finish = () => {\n          if (last_index < this.service.state.context.events.length - 1) {\n            // more events have been added since the setTimeout\n            return;\n          }\n          this.backToNormal();\n          this.service.send('END');\n          this.emitter.emit(ReplayerEvents.Finish);\n        };\n        let finish_buffer = 50; // allow for checking whether new events aren't just about to be loaded in\n        if (\n          event.type === EventType.IncrementalSnapshot &&\n          event.data.source === IncrementalSource.MouseMove &&\n          event.data.positions.length\n        ) {\n          // extend finish event if the last event is a mouse move so that the timer isn't stopped by the service before checking the last event\n          finish_buffer += Math.max(0, -event.data.positions[0].timeOffset);\n        }\n        setTimeout(finish, finish_buffer);\n      }\n\n      this.emitter.emit(ReplayerEvents.EventCast, event);\n    };\n    return wrappedCastFn;\n  };\n\n  private rebuildFullSnapshot(\n    event: fullSnapshotEvent & { timestamp: number },\n    isSync = false,\n  ) {\n    if (!this.iframe.contentDocument) {\n      return this.warn('Looks like your replayer has been destroyed.');\n    }\n    if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n      this.warn(\n        'Found unresolved missing node map',\n        this.legacy_missingNodeRetryMap,\n      );\n    }\n    this.legacy_missingNodeRetryMap = {};\n    const collected: AppendedIframe[] = [];\n    const afterAppend = (builtNode: Node, id: number) => {\n      this.collectIframeAndAttachDocument(collected, builtNode);\n      if (this.mediaManager.isSupportedMediaElement(builtNode)) {\n        const { events } = this.service.state.context;\n        this.mediaManager.addMediaElements(\n          builtNode,\n          event.timestamp - events[0].timestamp,\n          this.mirror,\n        );\n      }\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this,\n          });\n      }\n    };\n\n    /**\n     * Normally rebuilding full snapshot should not be under virtual dom environment.\n     * But if the order of data events has some issues, it might be possible.\n     * Adding this check to avoid any potential issues.\n     */\n    if (this.usingVirtualDom) {\n      this.virtualDom.destroyTree();\n      this.usingVirtualDom = false;\n    }\n\n    this.mirror.reset();\n    this.textValueMap.clear();\n    rebuild(event.data.node, {\n      doc: this.iframe.contentDocument,\n      afterAppend,\n      cache: this.cache,\n      mirror: this.mirror,\n    });\n    afterAppend(this.iframe.contentDocument, event.data.node.id);\n\n    for (const { mutationInQueue, builtNode } of collected) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue,\n      );\n    }\n    const { documentElement, head } = this.iframe.contentDocument;\n    this.insertStyleRules(documentElement, head);\n    if (!this.service.state.matches('playing')) {\n      this.iframe.contentDocument\n        .getElementsByTagName('html')[0]\n        .classList.add('@sailfish-rrweb/rrweb-paused');\n    }\n    this.emitter.emit(ReplayerEvents.FullsnapshotRebuilded, event);\n    if (!isSync) {\n      this.waitForStylesheetLoad();\n    }\n    if (this.config.UNSAFE_replayCanvas) {\n      void this.preloadAllImages();\n    }\n  }\n\n  private insertStyleRules(\n    documentElement: HTMLElement | RRElement,\n    head: HTMLHeadElement | RRElement,\n  ) {\n    const injectStylesRules = getInjectStyleRules(\n      this.config.blockClass,\n    ).concat(this.config.insertStyleRules);\n    if (this.config.pauseAnimation) {\n      injectStylesRules.push(\n        'html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }',\n      );\n    }\n    if (this.usingVirtualDom) {\n      const styleEl = this.virtualDom.createElement('style');\n      this.virtualDom.mirror.add(\n        styleEl,\n        getDefaultSN(styleEl, this.virtualDom.unserializedId),\n      );\n      (documentElement as RRElement).insertBefore(styleEl, head as RRElement);\n      styleEl.rules.push({\n        source: IncrementalSource.StyleSheetRule,\n        adds: injectStylesRules.map((cssText, index) => ({\n          rule: cssText,\n          index,\n        })),\n      });\n    } else {\n      const styleEl = document.createElement('style');\n      (documentElement as HTMLElement).insertBefore(\n        styleEl,\n        head as HTMLHeadElement,\n      );\n      for (let idx = 0; idx < injectStylesRules.length; idx++) {\n        styleEl.sheet?.insertRule(injectStylesRules[idx], idx);\n      }\n    }\n  }\n\n  private attachDocumentToIframe(\n    mutation: addedNodeMutation,\n    iframeEl: HTMLIFrameElement | RRIFrameElement,\n  ) {\n    const mirror: RRDOMMirror | Mirror = this.usingVirtualDom\n      ? this.virtualDom.mirror\n      : this.mirror;\n    type TNode = typeof mirror extends Mirror ? Node : RRNode;\n    type TMirror = typeof mirror extends Mirror ? Mirror : RRDOMMirror;\n\n    const collected: AppendedIframe[] = [];\n    const afterAppend = (builtNode: Node, id: number) => {\n      this.collectIframeAndAttachDocument(collected, builtNode);\n      const sn = (mirror as TMirror).getMeta(builtNode as unknown as TNode);\n      if (\n        sn?.type === NodeType.Element &&\n        sn?.tagName.toUpperCase() === 'HTML'\n      ) {\n        const { documentElement, head } = iframeEl.contentDocument!;\n        this.insertStyleRules(\n          documentElement as HTMLElement | RRElement,\n          head as HTMLElement | RRElement,\n        );\n      }\n\n      // Skip the plugin onBuild callback in the virtual dom mode\n      if (this.usingVirtualDom) return;\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this,\n          });\n      }\n    };\n\n    buildNodeWithSN(mutation.node, {\n      doc: iframeEl.contentDocument! as Document,\n      mirror: mirror as Mirror,\n      hackCss: true,\n      skipChild: false,\n      afterAppend,\n      cache: this.cache,\n    });\n    afterAppend(iframeEl.contentDocument! as Document, mutation.node.id);\n\n    for (const { mutationInQueue, builtNode } of collected) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue,\n      );\n    }\n  }\n\n  private collectIframeAndAttachDocument(\n    collected: AppendedIframe[],\n    builtNode: Node,\n  ) {\n    if (isSerializedIframe(builtNode, this.mirror)) {\n      const mutationInQueue = this.newDocumentQueue.find(\n        (m) => m.parentId === this.mirror.getId(builtNode),\n      );\n      if (mutationInQueue) {\n        collected.push({\n          mutationInQueue,\n          builtNode: builtNode as HTMLIFrameElement,\n        });\n      }\n    }\n  }\n\n  /**\n   * pause when loading style sheet, resume when loaded all timeout exceed\n   */\n  private waitForStylesheetLoad() {\n    const head = this.iframe.contentDocument?.head;\n    if (head) {\n      const unloadSheets: Set<HTMLLinkElement> = new Set();\n      let timer: ReturnType<typeof setTimeout> | -1;\n      let beforeLoadState = this.service.state;\n      const stateHandler = () => {\n        beforeLoadState = this.service.state;\n      };\n      this.emitter.on(ReplayerEvents.Start, stateHandler);\n      this.emitter.on(ReplayerEvents.Pause, stateHandler);\n      const unsubscribe = () => {\n        this.emitter.off(ReplayerEvents.Start, stateHandler);\n        this.emitter.off(ReplayerEvents.Pause, stateHandler);\n      };\n      head\n        .querySelectorAll('link[rel=\"stylesheet\"]')\n        .forEach((css: HTMLLinkElement) => {\n          if (!css.sheet) {\n            unloadSheets.add(css);\n            css.addEventListener('load', () => {\n              unloadSheets.delete(css);\n              // all loaded and timer not released yet\n              if (unloadSheets.size === 0 && timer !== -1) {\n                if (beforeLoadState.matches('playing')) {\n                  this.play(this.getCurrentTime());\n                }\n                this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\n                if (timer) {\n                  clearTimeout(timer);\n                }\n                unsubscribe();\n              }\n            });\n          }\n        });\n\n      if (unloadSheets.size > 0) {\n        // find some unload sheets after iterate\n        this.service.send({ type: 'PAUSE' });\n        this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\n        timer = setTimeout(() => {\n          if (beforeLoadState.matches('playing')) {\n            this.play(this.getCurrentTime());\n          }\n          // mark timer was called\n          timer = -1;\n          unsubscribe();\n        }, this.config.loadTimeout);\n      }\n    }\n  }\n\n  /**\n   * pause when there are some canvas drawImage args need to be loaded\n   */\n  private async preloadAllImages(): Promise<void[]> {\n    const promises: Promise<void>[] = [];\n    for (const event of this.service.state.context.events) {\n      if (\n        event.type === EventType.IncrementalSnapshot &&\n        event.data.source === IncrementalSource.CanvasMutation\n      ) {\n        promises.push(\n          this.deserializeAndPreloadCanvasEvents(event.data, event),\n        );\n        const commands =\n          'commands' in event.data ? event.data.commands : [event.data];\n        commands.forEach((c) => {\n          this.preloadImages(c, event);\n        });\n      }\n    }\n    return Promise.all(promises);\n  }\n\n  private preloadImages(data: canvasMutationCommand, event: eventWithTime) {\n    if (\n      data.property === 'drawImage' &&\n      typeof data.args[0] === 'string' &&\n      !this.imageMap.has(event)\n    ) {\n      const canvas = document.createElement('canvas');\n      const ctx = canvas.getContext('2d');\n      const imgd = ctx?.createImageData(canvas.width, canvas.height);\n      ctx?.putImageData(imgd!, 0, 0);\n    }\n  }\n  private async deserializeAndPreloadCanvasEvents(\n    data: canvasMutationData,\n    event: eventWithTime,\n  ) {\n    if (!this.canvasEventMap.has(event)) {\n      const status = {\n        isUnchanged: true,\n      };\n      if ('commands' in data) {\n        const commands = await Promise.all(\n          data.commands.map(async (c) => {\n            const args = await Promise.all(\n              c.args.map(deserializeArg(this.imageMap, null, status)),\n            );\n            return { ...c, args };\n          }),\n        );\n        if (status.isUnchanged === false)\n          this.canvasEventMap.set(event, { ...data, commands });\n      } else {\n        const args = await Promise.all(\n          data.args.map(deserializeArg(this.imageMap, null, status)),\n        );\n        if (status.isUnchanged === false)\n          this.canvasEventMap.set(event, { ...data, args });\n      }\n    }\n  }\n\n  private applyIncremental(\n    e: incrementalSnapshotEvent & { timestamp: number; delay?: number },\n    isSync: boolean,\n  ) {\n    const { data: d } = e;\n    switch (d.source) {\n      case IncrementalSource.Mutation: {\n        try {\n          this.applyMutation(d, isSync);\n        } catch (error) {\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n          this.warn(`Exception in mutation ${error.message || error}`, d);\n        }\n        break;\n      }\n      case IncrementalSource.Drag:\n      case IncrementalSource.TouchMove:\n      case IncrementalSource.MouseMove:\n        if (isSync) {\n          const lastPosition = d.positions[d.positions.length - 1];\n          this.mousePos = {\n            x: lastPosition.x,\n            y: lastPosition.y,\n            id: lastPosition.id,\n            debugData: d,\n          };\n        } else {\n          d.positions.forEach((p) => {\n            const action = {\n              doAction: () => {\n                this.moveAndHover(p.x, p.y, p.id, isSync, d);\n              },\n              delay:\n                p.timeOffset +\n                e.timestamp -\n                this.service.state.context.baselineTime,\n            };\n            this.timer.addAction(action);\n          });\n          // add a dummy action to keep timer alive\n          this.timer.addAction({\n            doAction() {\n              //\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            delay: e.delay! - d.positions[0]?.timeOffset,\n          });\n        }\n        break;\n      case IncrementalSource.MouseInteraction: {\n        /**\n         * Same as the situation of missing input target.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        const event = new Event(toLowerCase(MouseInteractions[d.type]));\n        const target = this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        this.emitter.emit(ReplayerEvents.MouseInteraction, {\n          type: d.type,\n          target,\n        });\n        const { triggerFocus } = this.config;\n        switch (d.type) {\n          case MouseInteractions.Blur:\n            if ('blur' in (target as HTMLElement)) {\n              (target as HTMLElement).blur();\n            }\n            break;\n          case MouseInteractions.Focus:\n            if (triggerFocus && (target as HTMLElement).focus) {\n              (target as HTMLElement).focus({\n                preventScroll: true,\n              });\n            }\n            break;\n          case MouseInteractions.Click:\n          case MouseInteractions.TouchStart:\n          case MouseInteractions.TouchEnd:\n          case MouseInteractions.MouseDown:\n          case MouseInteractions.MouseUp:\n            if (isSync) {\n              if (d.type === MouseInteractions.TouchStart) {\n                this.touchActive = true;\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.touchActive = false;\n              }\n              if (d.type === MouseInteractions.MouseDown) {\n                this.lastMouseDownEvent = [target, event];\n              } else if (d.type === MouseInteractions.MouseUp) {\n                this.lastMouseDownEvent = null;\n              }\n              this.mousePos = {\n                x: d.x || 0,\n                y: d.y || 0,\n                id: d.id,\n                debugData: d,\n              };\n            } else {\n              if (d.type === MouseInteractions.TouchStart) {\n                // don't draw a trail as user has lifted finger and is placing at a new point\n                this.tailPositions.length = 0;\n              }\n              this.moveAndHover(d.x || 0, d.y || 0, d.id, isSync, d);\n              if (d.type === MouseInteractions.Click) {\n                /*\n                 * don't want target.click() here as could trigger an iframe navigation\n                 * instead any effects of the click should already be covered by mutations\n                 */\n                /*\n                 * removal and addition of .active class (along with void line to trigger repaint)\n                 * triggers the 'click' css animation in styles/style.css\n                 */\n                this.mouse.classList.remove('active');\n                void this.mouse.offsetWidth;\n                this.mouse.classList.add('active');\n              } else if (d.type === MouseInteractions.TouchStart) {\n                void this.mouse.offsetWidth; // needed for the position update of moveAndHover to apply without the .touch-active transition\n                this.mouse.classList.add('touch-active');\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.mouse.classList.remove('touch-active');\n              } else {\n                // for MouseDown & MouseUp also invoke default behavior\n                target.dispatchEvent(event);\n              }\n            }\n            break;\n          case MouseInteractions.TouchCancel:\n            if (isSync) {\n              this.touchActive = false;\n            } else {\n              this.mouse.classList.remove('touch-active');\n            }\n            break;\n          default:\n            target.dispatchEvent(event);\n        }\n        break;\n      }\n      case IncrementalSource.Scroll: {\n        /**\n         * Same as the situation of missing input target.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id) as RRElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.scrollData = d;\n          break;\n        }\n        // Use isSync rather than this.usingVirtualDom because not every fast-forward process uses virtual dom optimization.\n        this.applyScroll(d, isSync);\n        break;\n      }\n      case IncrementalSource.ViewportResize:\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width: d.width,\n          height: d.height,\n        });\n        break;\n      case IncrementalSource.Input: {\n        /**\n         * Input event on an unserialized node usually means the event\n         * was synchrony triggered programmatically after the node was\n         * created. This means there was not an user observable interaction\n         * and we do not need to replay it.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id) as RRElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.inputData = d;\n          break;\n        }\n        this.applyInput(d);\n        break;\n      }\n      case IncrementalSource.MediaInteraction: {\n        const target = this.usingVirtualDom\n          ? this.virtualDom.mirror.getNode(d.id)\n          : this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        const mediaEl = target as HTMLMediaElement | RRMediaElement;\n        const { events } = this.service.state.context;\n\n        this.mediaManager.mediaMutation({\n          target: mediaEl,\n          timeOffset: e.timestamp - events[0].timestamp,\n          mutation: d,\n        });\n\n        break;\n      }\n      case IncrementalSource.StyleSheetRule:\n      case IncrementalSource.StyleDeclaration: {\n        if (this.usingVirtualDom) {\n          if (d.styleId) this.constructedStyleMutations.push(d);\n          else if (d.id)\n            (\n              this.virtualDom.mirror.getNode(d.id) as RRStyleElement | null\n            )?.rules.push(d);\n        } else this.applyStyleSheetMutation(d);\n        break;\n      }\n      case IncrementalSource.CanvasMutation: {\n        if (!this.config.UNSAFE_replayCanvas) {\n          return;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(\n            d.id,\n          ) as RRCanvasElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.canvasMutations.push({\n            event: e as canvasEventWithTime,\n            mutation: d,\n          });\n        } else {\n          const target = this.mirror.getNode(d.id);\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          void canvasMutation({\n            event: e,\n            mutation: d,\n            target: target as HTMLCanvasElement,\n            imageMap: this.imageMap,\n            canvasEventMap: this.canvasEventMap,\n            errorHandler: this.warnCanvasMutationFailed.bind(this),\n          });\n        }\n        break;\n      }\n      case IncrementalSource.Font: {\n        try {\n          const fontFace = new FontFace(\n            d.family,\n            d.buffer\n              ? new Uint8Array(JSON.parse(d.fontSource) as Iterable<number>)\n              : d.fontSource,\n            d.descriptors,\n          );\n          this.iframe.contentDocument?.fonts.add(fontFace);\n        } catch (error) {\n          this.warn(error);\n        }\n        break;\n      }\n      case IncrementalSource.Selection: {\n        if (isSync) {\n          this.lastSelectionData = d;\n          break;\n        }\n        this.applySelection(d);\n        break;\n      }\n      case IncrementalSource.AdoptedStyleSheet: {\n        if (this.usingVirtualDom) this.adoptedStyleSheets.push(d);\n        else this.applyAdoptedStyleSheet(d);\n        break;\n      }\n      default:\n    }\n  }\n\n  /**\n   * Apply the mutation to the virtual dom or the real dom.\n   * @param d - The mutation data.\n   * @param isSync - Whether the mutation should be applied synchronously (while fast-forwarding).\n   */\n  private applyMutation(d: mutationData, isSync: boolean) {\n    // Only apply virtual dom optimization if the fast-forward process has node mutation. Because the cost of creating a virtual dom tree and executing the diff algorithm is usually higher than directly applying other kind of events.\n    if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\n      this.usingVirtualDom = true;\n      buildFromDom(this.iframe.contentDocument!, this.mirror, this.virtualDom);\n      // If these legacy missing nodes haven't been resolved, they should be converted to virtual nodes.\n      if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n        for (const key in this.legacy_missingNodeRetryMap) {\n          try {\n            const value = this.legacy_missingNodeRetryMap[key];\n            const virtualNode = buildFromNode(\n              value.node as Node,\n              this.virtualDom,\n              this.mirror,\n            );\n            if (virtualNode) value.node = virtualNode;\n          } catch (error) {\n            this.warn(error);\n          }\n        }\n      }\n    }\n    const mirror = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n    type TNode = typeof mirror extends Mirror ? Node : RRNode;\n\n    const removes = d.removes.filter((mutation) => {\n      // warn of absence from mirror before we start applying each removal\n      // as earlier removals could remove a tree that includes a later removal\n      if (!mirror.getNode(mutation.id)) {\n        this.warnNodeNotFound(d, mutation.id);\n        return false;\n      }\n      return true;\n    });\n    removes.forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        // no need to warn here, an ancestor may have already been removed\n        return;\n      }\n      let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(\n        mutation.parentId,\n      );\n      if (!parent) {\n        return this.warnNodeNotFound(d, mutation.parentId);\n      }\n      if (mutation.isShadow && hasShadowRoot(parent as Node)) {\n        parent = (parent as Element | RRElement).shadowRoot;\n      }\n      // target may be removed with its parents before\n      mirror.removeNodeFromMap(target as Node & RRNode);\n      if (parent)\n        try {\n          parent.removeChild(target as Node & RRNode);\n          /**\n           * https://github.com/rrweb-io/rrweb/pull/887\n           * Remove any virtual style rules for stylesheets if a child text node is removed.\n           */\n          if (\n            this.usingVirtualDom &&\n            target.nodeName === '#text' &&\n            parent.nodeName === 'STYLE' &&\n            (parent as RRStyleElement).rules?.length > 0\n          )\n            (parent as RRStyleElement).rules = [];\n        } catch (error) {\n          if (error instanceof DOMException) {\n            this.warn(\n              'parent could not remove child in mutation',\n              parent,\n              target,\n              d,\n            );\n          } else {\n            throw error;\n          }\n        }\n    });\n\n    const legacy_missingNodeMap: missingNodeMap = {\n      ...this.legacy_missingNodeRetryMap,\n    };\n    const queue: addedNodeMutation[] = [];\n\n    // next not present at this moment\n    const nextNotInDOM = (mutation: addedNodeMutation) => {\n      let next: TNode | null = null;\n      if (mutation.nextId) {\n        next = mirror.getNode(mutation.nextId) as TNode | null;\n      }\n      // next not present at this moment\n      if (\n        mutation.nextId !== null &&\n        mutation.nextId !== undefined &&\n        mutation.nextId !== -1 &&\n        !next\n      ) {\n        return true;\n      }\n      return false;\n    };\n\n    const appendNode = (mutation: addedNodeMutation) => {\n      if (!this.iframe.contentDocument) {\n        return this.warn('Looks like your replayer has been destroyed.');\n      }\n      let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(\n        mutation.parentId,\n      );\n      if (!parent) {\n        if (mutation.node.type === NodeType.Document) {\n          // is newly added document, maybe the document node of an iframe\n          return this.newDocumentQueue.push(mutation);\n        }\n        return queue.push(mutation);\n      }\n\n      if (mutation.node.isShadow) {\n        // If the parent is attached a shadow dom after it's created, it won't have a shadow root.\n        if (!hasShadowRoot(parent)) {\n          (parent as Element | RRElement).attachShadow({ mode: 'open' });\n          parent = (parent as Element | RRElement).shadowRoot! as Node | RRNode;\n        } else parent = parent.shadowRoot as Node | RRNode;\n      }\n\n      let previous: Node | RRNode | null = null;\n      let next: Node | RRNode | null = null;\n      if (mutation.previousId) {\n        previous = mirror.getNode(mutation.previousId);\n      }\n      if (mutation.nextId) {\n        next = mirror.getNode(mutation.nextId);\n      }\n      if (nextNotInDOM(mutation)) {\n        return queue.push(mutation);\n      }\n\n      if (mutation.node.rootId && !mirror.getNode(mutation.node.rootId)) {\n        return;\n      }\n\n      const targetDoc = mutation.node.rootId\n        ? mirror.getNode(mutation.node.rootId)\n        : this.usingVirtualDom\n        ? this.virtualDom\n        : this.iframe.contentDocument;\n      if (isSerializedIframe<typeof parent>(parent, mirror)) {\n        this.attachDocumentToIframe(\n          mutation,\n          parent as HTMLIFrameElement | RRIFrameElement,\n        );\n        return;\n      }\n      const afterAppend = (node: Node | RRNode, id: number) => {\n        // Skip the plugin onBuild callback for virtual dom\n        if (this.usingVirtualDom) return;\n        for (const plugin of this.config.plugins || []) {\n          if (plugin.onBuild) plugin.onBuild(node, { id, replayer: this });\n        }\n      };\n\n      const target = buildNodeWithSN(mutation.node, {\n        doc: targetDoc as Document, // can be Document or RRDocument\n        mirror: mirror as Mirror, // can be this.mirror or virtualDom.mirror\n        skipChild: true,\n        hackCss: true,\n        cache: this.cache,\n        /**\n         * caveat: `afterAppend` only gets called on child nodes of target\n         * we have to call it again below when this target was added to the DOM\n         */\n        afterAppend,\n      }) as Node | RRNode;\n\n      // legacy data, we should not have -1 siblings any more\n      if (mutation.previousId === -1 || mutation.nextId === -1) {\n        legacy_missingNodeMap[mutation.node.id] = {\n          node: target,\n          mutation,\n        };\n        return;\n      }\n\n      // Typescripts type system is not smart enough\n      // to understand what is going on with the types below\n      type TNode = typeof mirror extends Mirror ? Node : RRNode;\n      type TMirror = typeof mirror extends Mirror ? Mirror : RRDOMMirror;\n\n      const parentSn = (mirror as TMirror).getMeta(parent as TNode);\n      if (\n        parentSn &&\n        parentSn.type === NodeType.Element &&\n        mutation.node.type === NodeType.Text\n      ) {\n        const prospectiveSiblings = Array.isArray(parent.childNodes)\n          ? parent.childNodes\n          : Array.from(parent.childNodes);\n        if (parentSn.tagName === 'textarea') {\n          // This should be redundant now as we are either recording the value or the childNode, and not both\n          // keeping around for backwards compatibility with old bad double data, see\n\n          // https://github.com/rrweb-io/rrweb/issues/745\n          // parent is textarea, will only keep one child node as the value\n          for (const c of prospectiveSiblings) {\n            if (c.nodeType === parent.TEXT_NODE) {\n              parent.removeChild(c as Node & RRNode);\n            }\n          }\n        } else if (\n          parentSn.tagName === 'style' &&\n          prospectiveSiblings.length === 1\n        ) {\n          // https://github.com/rrweb-io/rrweb/pull/1417\n          /**\n           * If both _cssText and textContent are present for a style element due to some existing bugs, the element was ending up with two child text nodes\n           * We need to remove the textNode created by _cssText as it doesn't have an id in the mirror, and thus cannot be further mutated.\n           */\n          for (const cssText of prospectiveSiblings as (Node & RRNode)[]) {\n            if (\n              cssText.nodeType === parent.TEXT_NODE &&\n              !mirror.hasNode(cssText)\n            ) {\n              target.textContent = cssText.textContent;\n              parent.removeChild(cssText);\n            }\n          }\n        }\n      } else if (parentSn?.type === NodeType.Document) {\n        /**\n         * Sometimes the document object is changed or reopened and the MutationObserver is disconnected, so the removal of child elements can't be detected and recorded.\n         * After the change of document, we may get another mutation which adds a new doctype or a HTML element, while the old one still exists in the dom.\n         * So, we need to remove the old one first to avoid collision.\n         */\n        const parentDoc = parent as Document | RRDocument;\n        /**\n         * To detect the exist of the old doctype before adding a new doctype.\n         * We need to remove the old doctype before adding the new one. Otherwise, code will throw \"mutation Failed to execute 'insertBefore' on 'Node': Only one doctype on document allowed\".\n         */\n        if (\n          mutation.node.type === NodeType.DocumentType &&\n          parentDoc.childNodes[0]?.nodeType === Node.DOCUMENT_TYPE_NODE\n        )\n          parentDoc.removeChild(parentDoc.childNodes[0] as Node & RRNode);\n        /**\n         * To detect the exist of the old HTML element before adding a new HTML element.\n         * The reason is similar to the above. One document only allows exactly one DocType and one HTML Element.\n         */\n        if (target.nodeName === 'HTML' && parentDoc.documentElement)\n          parentDoc.removeChild(\n            parentDoc.documentElement as HTMLElement & RRNode,\n          );\n      }\n\n      if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\n        (parent as TNode).insertBefore(\n          target as TNode,\n          previous.nextSibling as TNode,\n        );\n      } else if (next && next.parentNode) {\n        // making sure the parent contains the reference nodes\n        // before we insert target before next.\n        (parent as TNode).contains(next as TNode)\n          ? (parent as TNode).insertBefore(target as TNode, next as TNode)\n          : (parent as TNode).insertBefore(target as TNode, null);\n      } else {\n        (parent as TNode).appendChild(target as TNode);\n      }\n      /**\n       * target was added, execute plugin hooks\n       */\n      afterAppend(target, mutation.node.id);\n\n      /**\n       * https://github.com/rrweb-io/rrweb/pull/887\n       * Remove any virtual style rules for stylesheets if a new text node is appended.\n       */\n      if (\n        this.usingVirtualDom &&\n        target.nodeName === '#text' &&\n        parent.nodeName === 'STYLE' &&\n        (parent as RRStyleElement).rules?.length > 0\n      )\n        (parent as RRStyleElement).rules = [];\n\n      if (isSerializedIframe(target, this.mirror)) {\n        const targetId = this.mirror.getId(target as HTMLIFrameElement);\n        const mutationInQueue = this.newDocumentQueue.find(\n          (m) => m.parentId === targetId,\n        );\n        if (mutationInQueue) {\n          this.attachDocumentToIframe(\n            mutationInQueue,\n            target as HTMLIFrameElement,\n          );\n          this.newDocumentQueue = this.newDocumentQueue.filter(\n            (m) => m !== mutationInQueue,\n          );\n        }\n      }\n\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(\n          legacy_missingNodeMap,\n          parent,\n          target,\n          mutation,\n        );\n      }\n    };\n\n    d.adds.forEach((mutation) => {\n      appendNode(mutation);\n    });\n\n    const startTime = Date.now();\n    while (queue.length) {\n      // transform queue to resolve tree\n      const resolveTrees = queueToResolveTrees(queue);\n      queue.length = 0;\n      if (Date.now() - startTime > 500) {\n        this.warn(\n          'Timeout in the loop, please check the resolve tree data:',\n          resolveTrees,\n        );\n        break;\n      }\n      for (const tree of resolveTrees) {\n        const parent = mirror.getNode(tree.value.parentId);\n        if (!parent) {\n          this.debug(\n            'Drop resolve tree since there is no parent for the root node.',\n            tree,\n          );\n        } else {\n          iterateResolveTree(tree, (mutation) => {\n            appendNode(mutation);\n          });\n        }\n      }\n    }\n\n    if (Object.keys(legacy_missingNodeMap).length) {\n      Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\n    }\n\n    uniqueTextMutations(d.texts).forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r) => r.id === mutation.id)) {\n          // no need to warn, element was already removed\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n\n      // Resolve text value - either from delta or direct value\n      let textValue: string | null;\n      if (mutation.delta) {\n        // Delta format - reconstruct from current value\n        const currentValue = this.textValueMap.get(mutation.id) || '';\n        textValue = applyTextDelta(currentValue, mutation.delta);\n      } else {\n        // Full value format (legacy or fallback)\n        textValue = mutation.value ?? null;\n      }\n\n      target.textContent = textValue;\n\n      // Track value for future delta reconstructions\n      if (textValue !== null) {\n        this.textValueMap.set(mutation.id, textValue);\n      }\n\n      /**\n       * https://github.com/rrweb-io/rrweb/pull/865\n       * Remove any virtual style rules for stylesheets whose contents are replaced.\n       */\n      if (this.usingVirtualDom) {\n        const parent = target.parentNode as RRStyleElement;\n        if (parent?.rules?.length > 0) parent.rules = [];\n      }\n    });\n    d.attributes.forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r) => r.id === mutation.id)) {\n          // no need to warn, element was already removed\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n      for (const attributeName in mutation.attributes) {\n        if (typeof attributeName === 'string') {\n          const value = mutation.attributes[attributeName];\n          if (value === null) {\n            (target as Element | RRElement).removeAttribute(attributeName);\n          } else if (typeof value === 'string') {\n            try {\n              // When building snapshot, some link styles haven't loaded. Then they are loaded, they will be inlined as incremental mutation change of attribute. We need to replace the old elements whose styles aren't inlined.\n              if (\n                attributeName === '_cssText' &&\n                (target.nodeName === 'LINK' || target.nodeName === 'STYLE')\n              ) {\n                try {\n                  const newSn = mirror.getMeta(\n                    target as Node & RRNode,\n                  ) as serializedElementNodeWithId;\n                  Object.assign(\n                    newSn.attributes,\n                    mutation.attributes as attributes,\n                  );\n                  const newNode = buildNodeWithSN(newSn, {\n                    doc: target.ownerDocument as Document, // can be Document or RRDocument\n                    mirror: mirror as Mirror,\n                    skipChild: true,\n                    hackCss: true,\n                    cache: this.cache,\n                  });\n                  const siblingNode = target.nextSibling;\n                  const parentNode = target.parentNode;\n                  if (newNode && parentNode) {\n                    parentNode.removeChild(target as Node & RRNode);\n                    parentNode.insertBefore(\n                      newNode as Node & RRNode,\n                      siblingNode as (Node & RRNode) | null,\n                    );\n                    mirror.replace(mutation.id, newNode as Node & RRNode);\n                    break;\n                  }\n                } catch (e) {\n                  // for safe\n                }\n              }\n              if (attributeName === 'value' && target.nodeName === 'TEXTAREA') {\n                // this may or may not have an effect on the value property (which is what is displayed)\n                // depending on whether the textarea has been modified by the user yet\n                // TODO: replaceChildNodes is not available in RRDom\n                const textarea = target as TNode;\n                textarea.childNodes.forEach((c) =>\n                  textarea.removeChild(c as TNode),\n                );\n                const tn = target.ownerDocument?.createTextNode(value);\n                if (tn) {\n                  textarea.appendChild(tn as TNode);\n                }\n              } else {\n                (target as Element | RRElement).setAttribute(\n                  attributeName,\n                  value,\n                );\n              }\n            } catch (error) {\n              this.warn(\n                'An error occurred may due to the checkout feature.',\n                error,\n              );\n            }\n          } else if (attributeName === 'style') {\n            const styleValues = value;\n            const targetEl = target as HTMLElement | RRElement;\n            for (const s in styleValues) {\n              if (styleValues[s] === false) {\n                targetEl.style.removeProperty(s);\n              } else if (styleValues[s] instanceof Array) {\n                const svp = styleValues[s] as styleValueWithPriority;\n                targetEl.style.setProperty(s, svp[0], svp[1]);\n              } else {\n                const svs = styleValues[s] as string;\n                targetEl.style.setProperty(s, svs);\n              }\n            }\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * Apply the scroll data on real elements.\n   * If the replayer is in sync mode, smooth scroll behavior should be disabled.\n   * @param d - the scroll data\n   * @param isSync - whether the replayer is in sync mode(fast-forward)\n   */\n  private applyScroll(d: scrollData, isSync: boolean) {\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    const sn = this.mirror.getMeta(target);\n    if (target === this.iframe.contentDocument) {\n      this.iframe.contentWindow?.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? 'auto' : 'smooth',\n      });\n    } else if (sn?.type === NodeType.Document) {\n      // nest iframe content document\n      (target as Document).defaultView?.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? 'auto' : 'smooth',\n      });\n    } else {\n      try {\n        (target as Element).scrollTo({\n          top: d.y,\n          left: d.x,\n          behavior: isSync ? 'auto' : 'smooth',\n        });\n      } catch (error) {\n        /**\n         * Seldomly we may found scroll target was removed before\n         * its last scroll event.\n         */\n      }\n    }\n  }\n\n  private applyInput(d: inputData) {\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    try {\n      (target as HTMLInputElement).checked = d.isChecked;\n      (target as HTMLInputElement).value = d.text;\n    } catch (error) {\n      // for safe\n    }\n  }\n\n  private applySelection(d: selectionData) {\n    try {\n      const selectionSet = new Set<Selection>();\n      const ranges = d.ranges.map(({ start, startOffset, end, endOffset }) => {\n        const startContainer = this.mirror.getNode(start);\n        const endContainer = this.mirror.getNode(end);\n\n        if (!startContainer || !endContainer) return;\n\n        const result = new Range();\n\n        result.setStart(startContainer, startOffset);\n        result.setEnd(endContainer, endOffset);\n        const doc = startContainer.ownerDocument;\n        const selection = doc?.getSelection();\n        selection && selectionSet.add(selection);\n\n        return {\n          range: result,\n          selection,\n        };\n      });\n\n      selectionSet.forEach((s) => s.removeAllRanges());\n\n      ranges.forEach((r) => r && r.selection?.addRange(r.range));\n    } catch (error) {\n      // for safe\n    }\n  }\n\n  private applyStyleSheetMutation(\n    data: styleDeclarationData | styleSheetRuleData,\n  ) {\n    let styleSheet: CSSStyleSheet | null = null;\n    if (data.styleId) styleSheet = this.styleMirror.getStyle(data.styleId);\n    else if (data.id)\n      styleSheet =\n        (this.mirror.getNode(data.id) as HTMLStyleElement)?.sheet || null;\n    if (!styleSheet) return;\n    if (data.source === IncrementalSource.StyleSheetRule)\n      this.applyStyleSheetRule(data, styleSheet);\n    else if (data.source === IncrementalSource.StyleDeclaration)\n      this.applyStyleDeclaration(data, styleSheet);\n  }\n\n  private applyStyleSheetRule(\n    data: styleSheetRuleData,\n    styleSheet: CSSStyleSheet,\n  ) {\n    data.adds?.forEach(({ rule, index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.insertRule(rule, index);\n        } else {\n          const index =\n            nestedIndex === undefined\n              ? undefined\n              : Math.min(nestedIndex, styleSheet.cssRules.length);\n          styleSheet?.insertRule(rule, index);\n        }\n      } catch (e) {\n        /**\n         * sometimes we may capture rules with browser prefix\n         * insert rule with prefixs in other browsers may cause Error\n         */\n        /**\n         * accessing styleSheet rules may cause SecurityError\n         * for specific access control settings\n         */\n      }\n    });\n\n    data.removes?.forEach(({ index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.deleteRule(index || 0);\n        } else {\n          styleSheet?.deleteRule(nestedIndex);\n        }\n      } catch (e) {\n        /**\n         * same as insertRule\n         */\n      }\n    });\n\n    if (data.replace)\n      try {\n        void styleSheet.replace?.(data.replace);\n      } catch (e) {\n        // for safety\n      }\n\n    if (data.replaceSync)\n      try {\n        styleSheet.replaceSync?.(data.replaceSync);\n      } catch (e) {\n        // for safety\n      }\n  }\n\n  private applyStyleDeclaration(\n    data: styleDeclarationData,\n    styleSheet: CSSStyleSheet,\n  ) {\n    if (data.set) {\n      const rule = getNestedRule(\n        styleSheet.rules,\n        data.index,\n      ) as unknown as CSSStyleRule;\n      rule.style.setProperty(\n        data.set.property,\n        data.set.value,\n        data.set.priority,\n      );\n    }\n\n    if (data.remove) {\n      const rule = getNestedRule(\n        styleSheet.rules,\n        data.index,\n      ) as unknown as CSSStyleRule;\n      rule.style.removeProperty(data.remove.property);\n    }\n  }\n\n  private applyAdoptedStyleSheet(data: adoptedStyleSheetData) {\n    const targetHost = this.mirror.getNode(data.id);\n    if (!targetHost) return;\n    // Create StyleSheet objects which will be adopted after.\n    data.styles?.forEach((style) => {\n      let newStyleSheet: CSSStyleSheet | null = null;\n      /**\n       * Constructed StyleSheet can't share across multiple documents.\n       * The replayer has to get the correct host window to recreate a StyleSheetObject.\n       */\n      let hostWindow: IWindow | null = null;\n      if (hasShadowRoot(targetHost))\n        hostWindow = targetHost.ownerDocument?.defaultView || null;\n      else if (targetHost.nodeName === '#document')\n        hostWindow = (targetHost as Document).defaultView;\n\n      if (!hostWindow) return;\n      try {\n        newStyleSheet = new hostWindow.CSSStyleSheet();\n        this.styleMirror.add(newStyleSheet, style.styleId);\n        // To reuse the code of applying stylesheet rules\n        this.applyStyleSheetRule(\n          {\n            source: IncrementalSource.StyleSheetRule,\n            adds: style.rules,\n          },\n          newStyleSheet,\n        );\n      } catch (e) {\n        // In case some browsers don't support constructing StyleSheet.\n      }\n    });\n\n    const MAX_RETRY_TIME = 10;\n    let count = 0;\n    const adoptStyleSheets = (targetHost: Node, styleIds: number[]) => {\n      const stylesToAdopt = styleIds\n        .map((styleId) => this.styleMirror.getStyle(styleId))\n        .filter((style) => style !== null) as CSSStyleSheet[];\n      if (hasShadowRoot(targetHost))\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        (targetHost as HTMLElement).shadowRoot!.adoptedStyleSheets =\n          stylesToAdopt;\n      else if (targetHost.nodeName === '#document')\n        (targetHost as Document).adoptedStyleSheets = stylesToAdopt;\n\n      /**\n       * In the live mode where events are transferred over network without strict order guarantee, some newer events are applied before some old events and adopted stylesheets may haven't been created.\n       * This retry mechanism can help resolve this situation.\n       */\n      if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\n        setTimeout(\n          () => adoptStyleSheets(targetHost, styleIds),\n          0 + 100 * count,\n        );\n        count++;\n      }\n    };\n    adoptStyleSheets(targetHost, data.styleIds);\n  }\n\n  private legacy_resolveMissingNode(\n    map: missingNodeMap,\n    parent: Node | RRNode,\n    target: Node | RRNode,\n    targetMutation: addedNodeMutation,\n  ) {\n    const { previousId, nextId } = targetMutation;\n    const previousInMap = previousId && map[previousId];\n    const nextInMap = nextId && map[nextId];\n    if (previousInMap) {\n      const { node, mutation } = previousInMap;\n      parent.insertBefore(node as Node & RRNode, target as Node & RRNode);\n      delete map[mutation.node.id];\n      delete this.legacy_missingNodeRetryMap[mutation.node.id];\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(map, parent, node, mutation);\n      }\n    }\n    if (nextInMap) {\n      const { node, mutation } = nextInMap;\n      parent.insertBefore(\n        node as Node & RRNode,\n        target.nextSibling as Node & RRNode,\n      );\n      delete map[mutation.node.id];\n      delete this.legacy_missingNodeRetryMap[mutation.node.id];\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(map, parent, node, mutation);\n      }\n    }\n  }\n\n  private moveAndHover(\n    x: number,\n    y: number,\n    id: number,\n    isSync: boolean,\n    debugData: incrementalData,\n  ) {\n    const target = this.mirror.getNode(id);\n    if (!target) {\n      return this.debugNodeNotFound(debugData, id);\n    }\n\n    const base = getBaseDimension(target, this.iframe);\n    const _x = x * base.absoluteScale + base.x;\n    const _y = y * base.absoluteScale + base.y;\n\n    this.mouse.style.left = `${_x}px`;\n    this.mouse.style.top = `${_y}px`;\n    if (!isSync) {\n      this.drawMouseTail({ x: _x, y: _y });\n    }\n    this.hoverElements(target as Element);\n  }\n\n  private drawMouseTail(position: { x: number; y: number }) {\n    if (!this.mouseTail) {\n      return;\n    }\n\n    const { lineCap, lineWidth, strokeStyle, duration } =\n      this.config.mouseTail === true\n        ? defaultMouseTailConfig\n        : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail);\n\n    const draw = () => {\n      if (!this.mouseTail) {\n        return;\n      }\n      const ctx = this.mouseTail.getContext('2d');\n      if (!ctx || !this.tailPositions.length) {\n        return;\n      }\n      ctx.clearRect(0, 0, this.mouseTail.width, this.mouseTail.height);\n      ctx.beginPath();\n      ctx.lineWidth = lineWidth;\n      ctx.lineCap = lineCap;\n      ctx.strokeStyle = strokeStyle;\n      ctx.moveTo(this.tailPositions[0].x, this.tailPositions[0].y);\n      this.tailPositions.forEach((p) => ctx.lineTo(p.x, p.y));\n      ctx.stroke();\n    };\n\n    this.tailPositions.push(position);\n    draw();\n    setTimeout(() => {\n      this.tailPositions = this.tailPositions.filter((p) => p !== position);\n      draw();\n    }, duration / this.speedService.state.context.timer.speed);\n  }\n\n  private hoverElements(el: Element) {\n    (this.lastHoveredRootNode || this.iframe.contentDocument)\n      ?.querySelectorAll('.\\\\:hover')\n      .forEach((hoveredEl) => {\n        hoveredEl.classList.remove(':hover');\n      });\n    this.lastHoveredRootNode = el.getRootNode() as Document | ShadowRoot;\n    let currentEl: Element | null = el;\n    while (currentEl) {\n      if (currentEl.classList) {\n        currentEl.classList.add(':hover');\n      }\n      currentEl = currentEl.parentElement;\n    }\n  }\n\n  private isUserInteraction(event: eventWithTime): boolean {\n    if (event.type !== EventType.IncrementalSnapshot) {\n      return false;\n    }\n    return (\n      event.data.source > IncrementalSource.Mutation &&\n      event.data.source <= IncrementalSource.Input\n    );\n  }\n\n  public backToNormal() {\n    this.nextUserInteractionEvent = null;\n    if (this.speedService.state.matches('normal')) {\n      return;\n    }\n    this.speedService.send({ type: 'BACK_TO_NORMAL' });\n    this.emitter.emit(ReplayerEvents.SkipEnd, {\n      speed: this.speedService.state.context.normalSpeed,\n    });\n  }\n\n  private warnNodeNotFound(d: incrementalData, id: number) {\n    this.warn(`Node with id '${id}' not found. `, d);\n  }\n\n  private warnCanvasMutationFailed(\n    d: canvasMutationData | canvasMutationCommand,\n    error: unknown,\n  ) {\n    this.warn(`Has error on canvas update`, error, 'canvas mutation:', d);\n  }\n\n  private debugNodeNotFound(d: incrementalData, id: number) {\n    /**\n     * There maybe some valid scenes of node not being found.\n     * Because DOM events are macrotask and MutationObserver callback\n     * is microtask, so events fired on a removed DOM may emit\n     * snapshots in the reverse order.\n     */\n    this.debug(`Node with id '${id}' not found. `, d);\n  }\n\n  private warn(...args: Parameters<typeof console.warn>) {\n    if (!this.config.showWarning) {\n      return;\n    }\n    this.config.logger.warn(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n\n  private debug(...args: Parameters<typeof console.log>) {\n    if (!this.config.showDebug) {\n      return;\n    }\n    this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n}\n\nexport { type PlayerMachineState, type SpeedMachineState, type playerConfig };\n","\nimport record from \"./record\";\nimport {\n  Replayer,\n  type playerConfig,\n  type PlayerMachineState,\n  type SpeedMachineState,\n} from \"./replay\";\nimport canvasMutation from \"./replay/canvas\";\nimport * as utils from \"./utils\";\nimport { _mirror } from \"./utils\";\n\nexport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  ReplayerEvents,\n  type eventWithTime\n} from \"@sailfish-rrweb/types\";\n\n// exports style.css from replay\nimport \"./replay/styles/style.css\";\n\nexport type { recordOptions, ReplayPlugin } from \"./types\";\n\nconst { addCustomEvent } = record;\nconst { addSailfishEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\n\nexport * from \"./record\";\nexport * from \"./utils\";\n\nexport {\n  addCustomEvent,\n  addSailfishEvent,\n  canvasMutation,\n  freezePage,\n  _mirror as mirror,\n  record,\n  Replayer,\n  takeFullSnapshot,\n  utils,\n  type playerConfig,\n  type PlayerMachineState,\n  type SpeedMachineState,\n};\n"],"names":["Cr","Sr","s","Ne","w","Qe","xr","Ae","vr","Er","Rr","r","i","It","Or","n","l","a","o","f","u","de","kr","_t","Ar","Nr","Ke$1","tn","Ke","Mr","Ce","at","Pr","Ir","_r","$t","Lt","$r","ut","Lr","Tr","Dr","z","ft","Ur","Br","Fr","zr","me","d","Wr","jr","Gr","W","ct","Se","Vr","Hr","Jr","Yr","$e","qr","Qr","Kr","Xr","g","E","R","c","m","Zr","ts","es","t","k","p","b","O","I","A","N","_","M","S","rs","K","U","H","x","ke","P","B","F","rn","ss","is","Xe","y","Tt","ns","os","ls","$","ht","pt","Le","Dt","Ze","dt","as","Te","Ut","us","De","xe","re","fs","cs","hs","J","ps","Ue","Y","Be","ve","ds","Fe","Ee","ms","ze","Re","Bt","Ft","gs","zt","Wt","et","jt","Gt","tt","Vt","Ht","T","Jt","D","Yt","ge","rt","ys","qt","Qt","X","st","ws","bs","Cs","Ss","xs","Me","vs","mt","gt","Es","We","Kt","Rs","je","Ge","Os","ks","yt","ie","wt","Ns","Pe","Ie","As","bt","ye","Oe","Xt","Zt","er","j","se","Z","tr","rr","Ms","we","it","Ps","Is","_s","$s","Ls","Ts","Ds","ee","Us","he","sr","ir","nr","or","pe","Ct","Bs","Fs","zs","Ws","lr","_e","St","ne","xt","oe","q","le","ae","ue","js","Gs","Vs","Hs","Js","Ys","qs","Qs","Ks","Xs","fe","ce","Zs","vt","ei","e","h","ti","ri","si","ii","Et","ni","Rt","oi","li","ai","ui","fi","ci","be","nt","Ve","ar","hi","He","ot","Ot","ur","pi","di","mi","gi","kt","yi","wi","L","bi","Ci","Si","xi","vi","G","Q","fr","Nt","Je","Ye","V","cr","hr","Ei","Ri","Oi","ki","Ni","qe","Ai","Mi","Pi","Ii","_i","te","$i","pr","dr","Li","Ti","mr","gr","Di","Ui","Bi","Fi","zi","Wi","lt","ji","yr","wr","Gi","Vi","C","Hi","v","Ji","At","Yi","qi","Mt","Qi","Pt","xn","Ki","br","Xi","Zi","vn","on","type","fn","target","options","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","prop","receiver","throttle","func","wait","timeout","previous","args","now","remaining","context","hookSetter","key","isRevoked","win","original","value","patch","source","name","replacement","wrapped","nowTimestamp","getWindowScroll","doc","_b","_a","_c","_d","_f","getWindowHeight","getWindowWidth","closestElementOfNode","node","isBlocked","blockClass","blockSelector","checkAncestors","el","classMatchesRegex","isSerialized","mirror","isIgnored","slimDOMOptions","IGNORED_NODE","isAncestorRemoved","isShadowRoot","id","legacy_isTouchEvent","event","polyfill","queueToResolveTrees","queue","queueNodeMap","putIntoMap","parent","nodeInTree","queueNodeTrees","mutation","nextId","parentId","nextInTree","idx","parentInTree","iterateResolveTree","tree","cb","isSerializedIframe","isSerializedStylesheet","getBaseDimension","rootIframe","frameElement","frameDimension","frameBaseDimension","relativeScale","hasShadowRoot","getNestedRule","rules","position","rule","getPositionsAndIndex","nestedIndex","positions","index","uniqueTextMutations","mutations","idSet","uniqueMutations","StyleSheetMirror","__publicField","stylesheet","newId","getShadowHost","shadowHost","getRootShadowHost","rootShadowHost","shadowHostInDom","inDom","errorHandler","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","rest","error","CrossOriginIframeMirror","generateIdFn","iframe","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","map","ids","IframeManager","genId","iframeEl","childSn","message","crossOriginMessageEvent","EventType","rootId","IncrementalSource","range","style","iframeMirror","obj","keys","child","NodeType","estimateJsonSize","computeTextDiff","oldText","newText","oldStr","newStr","fullTextSize","appendedText","delta","TextDeltaOp","deltaSize","deleteLength","commonPrefixLen","minLen","commonSuffixLen","oldRemaining","newRemaining","maxSuffixLen","oldMiddleLen","newMiddleLen","newMiddleText","shouldUseDelta","result","applyTextDelta","currentText","text","isNodeInLinkedList","DoubleLinkedList","current","moveKey","MutationBuffer","adds","addedIds","addList","getNextId","pushAdd","sn","serializeNodeWithId","currentN","link","isParentRemoved","isAncestorInSet","candidate","tailNode","_node","unhandledNode","payload","diffResult","attribute","attributes","diffAsStr","unchangedAsStr","textarea","item","cn","isMasked","needMaskingText","maskedValue","attributeName","getInputType","maskInputValue","ignoreAttribute","transformAttribute","toLowerCase","old","pname","newValue","newPriority","nodeId","deepDelete","isNativeShadowDom","targetId","childN","addsSet","removes","_isParentRemoved","set","_isAncestorInSet","parentNode","mutationBuffers","getEventTarget","path","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","angularZoneSymbol","observer","initMoveObserver","mousemoveCb","sampling","threshold","callbackThreshold","timeBaseline","wrappedCb","totalOffset","updatePosition","evt","clientX","clientY","handlers","initMouseInteractionObserver","mouseInteractionCb","disableMap","currentPointerType","getHandler","eventKey","pointerType","thisEventKey","PointerTypes","MouseInteractions","eventName","initScrollObserver","scrollCb","scrollLeftTop","initViewportResizeObserver","viewportResizeCb","lastH","lastW","updateDimension","height","width","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","maskInputOptions","maskInputFn","userTriggeredOnInput","eventHandler","userTriggered","tagName","isChecked","masked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","hookProperties","initTypingObserver","typingCb","keydownHandler","keyInfo","getDomPath","element","selector","classList","siblings","initDeviceChangeObserver","deviceChangeCb","handleUSBChange","action","deviceNames","handleHIDChange","handleGamepadChange","gamepads","devices","handleMediaDeviceChange","deviceList","handleNetworkChange","status","networkHandlers","gamepadPollInterval","getNestedCSSRulePositions","recurse","childRule","pos","hasNestedCSSRule","getIdAndStyleId","sheet","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","thisArg","argumentsList","deleteRule","replace","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","host","hostId","patchTarget","originalPropertyDescriptor","sheets","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","property","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","currentTime","volume","muted","playbackRate","loop","MediaInteractions","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","safeSource","fontFace","restoreHandler","initSelectionObserver","param","selectionCb","collapsed","updateSelection","selection","ranges","count","startContainer","startOffset","endContainer","endOffset","initCustomElementObserver","customElementCb","constructor","mergeHooks","hooks","mutationCb","canvasMutationCb","initObservers","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","typingHandler","mediaDeviceChangeHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","customElementObserver","pluginHandlers","plugin","chars","lookup","encode","arraybuffer","bytes","len","base64","decode","bufferLength","encoded1","encoded2","encoded3","encoded4","canvasVarMap","variableListFor","ctx","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","list","serializeArg","arg","src","serializeArgs","initCanvas2DMutationObserver","props2D","recordArgs","CanvasContext","hookHandler","getNormalizedContextName","contextType","initCanvasContextObserver","setPreserveDrawingBufferToTrue","ctxName","contextAttributes","patchGLPrototype","prototype","props","initCanvasWebGLMutationObserver","CanvasManager","recordCanvas","dataURLOptions","fps","canvasContextReset","snapshotInProgressMap","worker","ImageBitmapDataURLWorker","timeBetweenSnapshots","lastSnapshotTime","rafId","getCanvas","matchedCanvas","canvas","takeCanvasSnapshots","timestamp","bitmap","canvas2DReset","canvasWebGL1and2Reset","setLatestRAFTimestamp","_values","valuesWithType","values","ProcessedNodeManager","thisBuffer","buffers","buffer","ShadowDomManager","shadowRoot","iframeElement","manager","option","StylesheetManager","linkEl","adoptedStyleSheetData","styles","stringifyRule","_linkEl","wrappedEmit","takeFullSnapshot","canvasManager","recording","cleanFrame","err","createMirror","record","emit","checkoutEveryNms","checkoutEveryNth","maskTextClass","maskTextSelector","inlineStylesheet","maskAllInputs","_maskInputOptions","_slimDOMOptions","maskTextFn","packFn","mousemoveWait","recordDOM","recordCrossOriginIframes","recordAfter","collectFonts","inlineImages","plugins","keepIframeSrcFn","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isCheckout","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","processedNodeManager","shadowDomManager","corruptedRules","snapshot","observe","init","tag","mitt$1","webGLVarMap","deserializeArg","imageMap","preload","image","blobContents","canvasMutation","mutationArgsPromises","getContext","WebGLVariableConstructorsNames","saveToWebGLVarMap","variables","webglMutation","debugMode","canvasEventMap","precomputedMutation","commands","command","canvas2DMutation","Timer","actions","config","rafWasActive","time","speed","start","end","mid","addDelay","baselineTime","firstOffset","firstTimestamp","discardPriorSnapshots","events","createPlayerService","getCastFn","applyEventsSynchronously","emitter","playerMachine","createMachine","assign","timeOffset","timer","neededEvents","ReplayerEvents","syncEvents","castFn","machineEvent","insertionIndex","isSync","skipSync","interpret","createSpeedService","speedMachine","MediaManager","_mediaState","mediaState","mediaPlaybackOffset","duration","seekToTime","onLoadedMetadata","lastState","isPlaying","playerIsPaused","serializedNode","mediaAttributes","currentTimeAtLastInteraction","Element","SCROLL_TIME","scrollElement","isMicrosoftBrowser","userAgent","userAgentPatterns","ROUNDING_TOLERANCE","ease","shouldBailOut","firstArg","hasScrollableSpace","axis","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","findScrollableParent","step","currentX","currentY","elapsed","smoothScroll","scrollable","startX","startY","method","startTime","left","top","scrollableParent","parentRects","clientRects","SKIP_TIME_INTERVAL","mitt","mittProxy.default","mittProxy","REPLAY_CONSOLE_PREFIX","defaultMouseTailConfig","indicatesTouchDevice","Replayer","RRDocument","createCache","dimension","_event","skipTime","last_index","finish","finish_buffer","defaultConfig","replayerHandler","canvasEvent","canvasMutationData","data","styleSheet","diff","realNode","createOrGetNode","a1","a2","state","firstMeta","firstFullsnapshot","firstEvent","lastEvent","rawEvent","smoothscrollPolyfill","collected","afterAppend","builtNode","rebuild","mutationInQueue","documentElement","head","injectStylesRules","getInjectStyleRules","styleEl","getDefaultSN","cssText","buildNodeWithSN","unloadSheets","beforeLoadState","stateHandler","unsubscribe","css","promises","imgd","lastPosition","triggerFocus","mediaEl","buildFromDom","virtualNode","buildFromNode","legacy_missingNodeMap","nextNotInDOM","next","appendNode","targetDoc","parentSn","prospectiveSiblings","parentDoc","resolveTrees","textValue","currentValue","newSn","newNode","siblingNode","styleValues","targetEl","svp","svs","selectionSet","targetHost","newStyleSheet","hostWindow","MAX_RETRY_TIME","adoptStyleSheets","styleIds","stylesToAdopt","targetMutation","previousId","previousInMap","nextInMap","debugData","base","_x","_y","lineCap","lineWidth","strokeStyle","draw","hoveredEl","currentEl","addCustomEvent","addSailfishEvent","freezePage"],"mappings":"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","x_google_ignoreList":[9,20,25]}