{"version":3,"file":"js/3.884c6ecc.js","sources":["../../frontend/node_modules/@zag-js/core/dist/create-machine.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast-group.machine.mjs","../../frontend/node_modules/@zag-js/toast/dist/index.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast-group.connect.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast.anatomy.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast.connect.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/resize-observer.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast.dom.mjs","../../frontend/node_modules/@zag-js/utils/dist/timers.mjs","../../frontend/node_modules/@zag-js/utils/dist/chunk-MXGZDBDQ.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast.machine.mjs","../../frontend/node_modules/@zag-js/toast/dist/toast.utils.mjs","../../frontend/node_modules/@zag-js/utils/dist/warning.mjs","../../frontend/node_modules/dompurify/dist/purify.es.mjs"],"sourcesContent":["// src/create-machine.ts\nimport { ensureStateIndex } from \"./state.mjs\";\nfunction createGuards() {\n  return {\n    and: (...guards) => {\n      return function andGuard(params) {\n        return guards.every((str) => params.guard(str));\n      };\n    },\n    or: (...guards) => {\n      return function orGuard(params) {\n        return guards.some((str) => params.guard(str));\n      };\n    },\n    not: (guard) => {\n      return function notGuard(params) {\n        return !params.guard(guard);\n      };\n    }\n  };\n}\nfunction createMachine(config) {\n  ensureStateIndex(config);\n  return config;\n}\nfunction setup() {\n  return {\n    guards: createGuards(),\n    createMachine: (config) => {\n      return createMachine(config);\n    },\n    choose: (transitions) => {\n      return function chooseFn({ choose }) {\n        return choose(transitions)?.actions;\n      };\n    }\n  };\n}\nexport {\n  createGuards,\n  createMachine,\n  setup\n};\n","// src/toast-group.machine.ts\nimport { setup } from \"@zag-js/core\";\nimport { trackDismissableBranch } from \"@zag-js/dismissable\";\nimport { addDomEvent, AnimationFrame, contains, getEventTarget } from \"@zag-js/dom-query\";\nimport { uuid } from \"@zag-js/utils\";\nimport * as dom from \"./toast.dom.mjs\";\nvar { guards, createMachine } = setup();\nvar { and } = guards;\nvar groupMachine = createMachine({\n  props({ props }) {\n    return {\n      dir: \"ltr\",\n      id: uuid(),\n      ...props,\n      store: props.store\n    };\n  },\n  initialState({ prop }) {\n    return prop(\"store\").attrs.overlap ? \"overlap\" : \"stack\";\n  },\n  refs() {\n    return {\n      lastFocusedEl: null,\n      isFocusWithin: false,\n      isPointerWithin: false,\n      ignoreMouseTimer: AnimationFrame.create(),\n      dismissableCleanup: void 0\n    };\n  },\n  context({ bindable }) {\n    return {\n      toasts: bindable(() => ({\n        defaultValue: [],\n        sync: true,\n        hash: (toasts) => toasts.map((t) => t.id).join(\",\")\n      })),\n      heights: bindable(() => ({\n        defaultValue: [],\n        sync: true\n      }))\n    };\n  },\n  computed: {\n    count: ({ context }) => context.get(\"toasts\").length,\n    overlap: ({ prop }) => prop(\"store\").attrs.overlap,\n    placement: ({ prop }) => prop(\"store\").attrs.placement\n  },\n  effects: [\"subscribeToStore\", \"subscribeToLayout\", \"trackDocumentVisibility\", \"trackHotKeyPress\"],\n  watch({ track, context, action }) {\n    track([() => context.hash(\"toasts\")], () => {\n      queueMicrotask(() => {\n        action([\"collapsedIfEmpty\", \"setDismissableBranch\", \"resetInteractionIfEmpty\"]);\n      });\n    });\n  },\n  exit: [\"clearDismissableBranch\", \"clearLastFocusedEl\", \"clearMouseEventTimer\"],\n  on: {\n    PAUSE_ALL: {\n      actions: [\"pauseToasts\"]\n    },\n    RESUME_ALL: {\n      actions: [\"resumeToasts\"]\n    },\n    \"DOC.HOTKEY\": {\n      actions: [\"focusRegionEl\"]\n    },\n    \"REGION.BLUR\": [\n      {\n        guard: and(\"isOverlapping\", \"isPointerOut\"),\n        target: \"overlap\",\n        actions: [\"resumeToasts\", \"restoreFocusIfPointerOut\"]\n      },\n      {\n        guard: \"isPointerOut\",\n        target: \"stack\",\n        actions: [\"resumeToasts\", \"restoreFocusIfPointerOut\"]\n      },\n      {\n        actions: [\"clearFocusWithin\"]\n      }\n    ],\n    \"TOAST.DISMISS\": {\n      actions: [\"moveFocusOnDismiss\"]\n    },\n    \"TOAST.REMOVE\": {\n      actions: [\"removeToast\", \"removeHeight\", \"ignoreMouseEventsTemporarily\"]\n    },\n    \"TOAST.PAUSE\": {\n      actions: [\"pauseToasts\"]\n    }\n  },\n  states: {\n    stack: {\n      on: {\n        \"REGION.POINTER_LEAVE\": [\n          {\n            guard: \"isOverlapping\",\n            target: \"overlap\",\n            actions: [\"clearPointerWithin\", \"resumeToasts\"]\n          },\n          {\n            actions: [\"clearPointerWithin\", \"resumeToasts\"]\n          }\n        ],\n        \"REGION.OVERLAP\": {\n          target: \"overlap\"\n        },\n        \"REGION.FOCUS\": {\n          actions: [\"setLastFocusedEl\", \"pauseToasts\"]\n        },\n        \"REGION.POINTER_ENTER\": {\n          actions: [\"setPointerWithin\", \"pauseToasts\"]\n        }\n      }\n    },\n    overlap: {\n      on: {\n        \"REGION.STACK\": {\n          target: \"stack\"\n        },\n        \"REGION.POINTER_ENTER\": {\n          target: \"stack\",\n          actions: [\"setPointerWithin\", \"pauseToasts\"]\n        },\n        \"REGION.POINTER_LEAVE\": {\n          actions: [\"clearPointerWithin\", \"resumeToasts\"]\n        },\n        \"REGION.FOCUS\": {\n          target: \"stack\",\n          actions: [\"setLastFocusedEl\", \"pauseToasts\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOverlapping: ({ computed }) => computed(\"overlap\"),\n      isPointerOut: ({ refs }) => !refs.get(\"isPointerWithin\")\n    },\n    effects: {\n      subscribeToStore({ context, prop }) {\n        const store = prop(\"store\");\n        context.set(\"toasts\", store.getVisibleToasts());\n        return store.subscribe((toast) => {\n          if (toast.dismiss) {\n            context.set(\"toasts\", (prev) => prev.filter((t) => t.id !== toast.id));\n            return;\n          }\n          context.set(\"toasts\", (prev) => {\n            const index = prev.findIndex((t) => t.id === toast.id);\n            if (index !== -1) {\n              return [...prev.slice(0, index), { ...prev[index], ...toast }, ...prev.slice(index + 1)];\n            }\n            return [toast, ...prev];\n          });\n        });\n      },\n      subscribeToLayout({ prop, send }) {\n        return prop(\"store\").subscribeLayout((stacked) => {\n          send({ type: stacked ? \"REGION.STACK\" : \"REGION.OVERLAP\" });\n        });\n      },\n      trackHotKeyPress({ prop, send }) {\n        const handleKeyDown = (event) => {\n          const { hotkey } = prop(\"store\").attrs;\n          const isHotkeyPressed = hotkey.every((key) => event[key] || event.code === key);\n          if (!isHotkeyPressed) return;\n          send({ type: \"DOC.HOTKEY\" });\n        };\n        return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true });\n      },\n      trackDocumentVisibility({ prop, send, scope }) {\n        const { pauseOnPageIdle } = prop(\"store\").attrs;\n        if (!pauseOnPageIdle) return;\n        const doc = scope.getDoc();\n        if (doc.visibilityState === \"hidden\") send({ type: \"PAUSE_ALL\" });\n        return addDomEvent(doc, \"visibilitychange\", () => {\n          const isHidden = doc.visibilityState === \"hidden\";\n          send({ type: isHidden ? \"PAUSE_ALL\" : \"RESUME_ALL\" });\n        });\n      }\n    },\n    actions: {\n      setDismissableBranch({ refs, context, computed, scope }) {\n        const toasts = context.get(\"toasts\");\n        const placement = computed(\"placement\");\n        const hasToasts = toasts.length > 0;\n        if (!hasToasts) {\n          refs.get(\"dismissableCleanup\")?.();\n          refs.set(\"dismissableCleanup\", void 0);\n          return;\n        }\n        if (hasToasts && refs.get(\"dismissableCleanup\")) {\n          return;\n        }\n        const groupEl = () => dom.getRegionEl(scope, placement);\n        const cleanup = trackDismissableBranch(groupEl, { defer: true, getRootNode: scope.getRootNode });\n        refs.set(\"dismissableCleanup\", cleanup);\n      },\n      clearDismissableBranch({ refs }) {\n        refs.get(\"dismissableCleanup\")?.();\n        refs.set(\"dismissableCleanup\", void 0);\n      },\n      focusRegionEl({ scope, computed }) {\n        queueMicrotask(() => {\n          dom.getRegionEl(scope, computed(\"placement\"))?.focus();\n        });\n      },\n      pauseToasts({ prop }) {\n        prop(\"store\").pause();\n      },\n      resumeToasts({ prop, refs, scope, event }) {\n        if (event.type === \"REGION.BLUR\") refs.set(\"isFocusWithin\", false);\n        const idle = prop(\"store\").attrs.pauseOnPageIdle && scope.getDoc().visibilityState === \"hidden\";\n        if (idle || refs.get(\"isPointerWithin\") || refs.get(\"isFocusWithin\")) return;\n        prop(\"store\").resume();\n      },\n      removeToast({ prop, event }) {\n        prop(\"store\").remove(event.id);\n      },\n      removeHeight({ event, context }) {\n        if (event?.id == null) return;\n        queueMicrotask(() => {\n          context.set(\"heights\", (heights) => heights.filter((height) => height.id !== event.id));\n        });\n      },\n      collapsedIfEmpty({ send, computed }) {\n        if (!computed(\"overlap\") || computed(\"count\") > 1) return;\n        send({ type: \"REGION.OVERLAP\" });\n      },\n      setLastFocusedEl({ refs, event }) {\n        if (refs.get(\"isFocusWithin\")) return;\n        refs.set(\"isFocusWithin\", true);\n        refs.set(\"lastFocusedEl\", event.target ?? null);\n      },\n      moveFocusOnDismiss({ refs, scope, computed, event }) {\n        if (event.focusVisible) {\n          const toastEls = dom.getToastEls(scope, computed(\"placement\"));\n          const index = toastEls.findIndex((el) => contains(el, scope.getActiveElement()));\n          const nextEl = findOpenToast(toastEls, index + 1, 1) ?? findOpenToast(toastEls, index - 1, -1);\n          if (nextEl) {\n            nextEl.focus({ preventScroll: true });\n            return;\n          }\n        }\n        const lastFocusedEl = refs.get(\"lastFocusedEl\");\n        if (event.focusVisible && lastFocusedEl) {\n          lastFocusedEl.focus({ preventScroll: true });\n        } else {\n          scope.getActiveElement()?.blur();\n        }\n      },\n      resetInteractionIfEmpty({ refs, prop, scope, computed }) {\n        if (computed(\"count\") > 0) return;\n        refs.set(\"isFocusWithin\", false);\n        refs.set(\"isPointerWithin\", false);\n        refs.set(\"lastFocusedEl\", null);\n        const idle = prop(\"store\").attrs.pauseOnPageIdle && scope.getDoc().visibilityState === \"hidden\";\n        if (!idle) prop(\"store\").resume();\n      },\n      restoreFocusIfPointerOut({ refs }) {\n        if (!refs.get(\"lastFocusedEl\") || refs.get(\"isPointerWithin\")) return;\n        refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n        refs.set(\"lastFocusedEl\", null);\n        refs.set(\"isFocusWithin\", false);\n      },\n      setPointerWithin({ refs }) {\n        refs.set(\"isPointerWithin\", true);\n      },\n      clearPointerWithin({ refs }) {\n        refs.set(\"isPointerWithin\", false);\n        if (refs.get(\"lastFocusedEl\") && !refs.get(\"isFocusWithin\")) {\n          refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n          refs.set(\"lastFocusedEl\", null);\n        }\n      },\n      clearFocusWithin({ refs }) {\n        refs.set(\"isFocusWithin\", false);\n      },\n      clearLastFocusedEl({ refs }) {\n        if (!refs.get(\"lastFocusedEl\")) return;\n        refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n        refs.set(\"lastFocusedEl\", null);\n        refs.set(\"isFocusWithin\", false);\n      },\n      ignoreMouseEventsTemporarily({ refs, scope, computed, send }) {\n        refs.get(\"ignoreMouseTimer\").request(() => {\n          return addDomEvent(\n            scope.getDoc(),\n            \"pointermove\",\n            (event) => {\n              if (!refs.get(\"isPointerWithin\")) return;\n              const regionEl = dom.getRegionEl(scope, computed(\"placement\"));\n              if (contains(regionEl, getEventTarget(event))) return;\n              send({ type: \"REGION.POINTER_LEAVE\", placement: computed(\"placement\") });\n            },\n            { once: true }\n          );\n        });\n      },\n      clearMouseEventTimer({ refs }) {\n        refs.get(\"ignoreMouseTimer\").cancel();\n      }\n    }\n  }\n});\nfunction findOpenToast(toastEls, from, step) {\n  for (let i = from; i >= 0 && i < toastEls.length; i += step) {\n    if (toastEls[i].dataset.state === \"open\") return toastEls[i];\n  }\n  return null;\n}\nexport {\n  groupMachine\n};\n","// src/index.ts\nimport { groupConnect } from \"./toast-group.connect.mjs\";\nimport { groupMachine } from \"./toast-group.machine.mjs\";\nimport { anatomy } from \"./toast.anatomy.mjs\";\nimport { connect } from \"./toast.connect.mjs\";\nimport { machine } from \"./toast.machine.mjs\";\nimport { createToastStore } from \"./toast.store.mjs\";\nvar group = {\n  connect: groupConnect,\n  machine: groupMachine\n};\nexport {\n  anatomy,\n  connect,\n  createToastStore as createStore,\n  group,\n  machine\n};\n","// src/toast-group.connect.ts\nimport { contains } from \"@zag-js/dom-query\";\nimport { parts } from \"./toast.anatomy.mjs\";\nimport * as dom from \"./toast.dom.mjs\";\nimport { getGroupPlacementStyle } from \"./toast.utils.mjs\";\nfunction groupConnect(service, normalize) {\n  const { context, prop, send, refs, computed } = service;\n  return {\n    getCount() {\n      return context.get(\"toasts\").length;\n    },\n    getToasts() {\n      return context.get(\"toasts\");\n    },\n    getGroupProps(options = {}) {\n      const { label = \"Notifications\" } = options;\n      const { hotkey } = prop(\"store\").attrs;\n      const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n      const placement = computed(\"placement\");\n      const [side, align = \"center\"] = placement.split(\"-\");\n      return normalize.element({\n        ...parts.group.attrs,\n        dir: prop(\"dir\"),\n        tabIndex: -1,\n        role: \"region\",\n        \"aria-label\": `${label}, ${placement} (${hotkeyLabel})`,\n        id: dom.getRegionId(placement),\n        \"data-placement\": placement,\n        \"data-side\": side,\n        \"data-align\": align,\n        \"aria-live\": \"polite\",\n        \"aria-relevant\": \"additions text\",\n        \"aria-atomic\": \"false\",\n        style: getGroupPlacementStyle(service, placement),\n        onMouseEnter() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_ENTER\", placement });\n        },\n        onMouseMove() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_ENTER\", placement });\n        },\n        onMouseLeave() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_LEAVE\", placement });\n        },\n        onFocus(event) {\n          send({ type: \"REGION.FOCUS\", target: event.relatedTarget });\n        },\n        onBlur(event) {\n          if (refs.get(\"isFocusWithin\") && !contains(event.currentTarget, event.relatedTarget)) {\n            queueMicrotask(() => send({ type: \"REGION.BLUR\" }));\n          }\n        }\n      });\n    },\n    subscribe(fn) {\n      const store = prop(\"store\");\n      return store.subscribe(() => fn(context.get(\"toasts\")));\n    }\n  };\n}\nexport {\n  groupConnect\n};\n","// src/toast.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"toast\").parts(\n  \"group\",\n  \"root\",\n  \"title\",\n  \"description\",\n  \"actionTrigger\",\n  \"closeTrigger\"\n);\nvar parts = anatomy.build();\nexport {\n  anatomy,\n  parts\n};\n","// src/toast.connect.ts\nimport { dataAttr } from \"@zag-js/dom-query\";\nimport { mergeWithDefault } from \"@zag-js/utils\";\nimport { parts } from \"./toast.anatomy.mjs\";\nimport * as dom from \"./toast.dom.mjs\";\nimport { getGhostAfterStyle, getGhostBeforeStyle, getPlacementStyle } from \"./toast.utils.mjs\";\nvar defaultTranslations = {\n  closeTriggerLabel: \"Dismiss notification\"\n};\nfunction connect(service, normalize) {\n  const { state, send, prop, scope, context, computed } = service;\n  const translations = mergeWithDefault(defaultTranslations, prop(\"translations\"));\n  const visible = state.hasTag(\"visible\");\n  const paused = state.hasTag(\"paused\");\n  const mounted = context.get(\"mounted\");\n  const rendered = context.get(\"rendered\");\n  const frontmost = computed(\"frontmost\");\n  const placement = prop(\"parent\").computed(\"placement\");\n  const type = prop(\"type\");\n  const stacked = prop(\"parent\").state.matches(\"stack\");\n  const title = prop(\"title\");\n  const description = prop(\"description\");\n  const action = prop(\"action\");\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return {\n    type,\n    title,\n    description,\n    placement,\n    visible,\n    paused,\n    closable: !!prop(\"closable\"),\n    pause() {\n      prop(\"parent\").prop(\"store\").pause(prop(\"id\"));\n    },\n    resume() {\n      prop(\"parent\").prop(\"store\").resume(prop(\"id\"));\n    },\n    dismiss() {\n      send({ type: \"DISMISS\", src: \"programmatic\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: dom.getRootId(scope),\n        \"data-state\": visible ? \"open\" : \"closed\",\n        \"data-type\": type,\n        \"data-placement\": placement,\n        \"data-align\": align,\n        \"data-side\": side,\n        \"data-mounted\": dataAttr(mounted),\n        \"data-paused\": dataAttr(paused),\n        \"data-first\": dataAttr(frontmost),\n        \"data-sibling\": dataAttr(!frontmost),\n        \"data-stack\": dataAttr(stacked),\n        \"data-overlap\": dataAttr(!stacked),\n        role: \"status\",\n        \"aria-atomic\": \"true\",\n        \"aria-describedby\": description && rendered.description ? dom.getDescriptionId(scope) : void 0,\n        \"aria-labelledby\": title && rendered.title ? dom.getTitleId(scope) : void 0,\n        tabIndex: 0,\n        style: getPlacementStyle(service, visible),\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (event.key == \"Escape\") {\n            send({ type: \"DISMISS\", src: \"keyboard\" });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    /* Leave a ghost div to avoid setting hover to false when transitioning out */\n    getGhostBeforeProps() {\n      return normalize.element({\n        \"data-ghost\": \"before\",\n        style: getGhostBeforeStyle(service, visible)\n      });\n    },\n    /* Needed to avoid setting hover to false when in between toasts */\n    getGhostAfterProps() {\n      return normalize.element({\n        \"data-ghost\": \"after\",\n        style: getGhostAfterStyle()\n      });\n    },\n    getTitleProps() {\n      return normalize.element({\n        ...parts.title.attrs,\n        id: dom.getTitleId(scope)\n      });\n    },\n    getDescriptionProps() {\n      return normalize.element({\n        ...parts.description.attrs,\n        id: dom.getDescriptionId(scope)\n      });\n    },\n    getActionTriggerProps() {\n      return normalize.button({\n        ...parts.actionTrigger.attrs,\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          action?.onClick?.();\n          send({ type: \"DISMISS\", src: \"user\" });\n        }\n      });\n    },\n    getCloseTriggerProps() {\n      return normalize.button({\n        id: dom.getCloseTriggerId(scope),\n        ...parts.closeTrigger.attrs,\n        type: \"button\",\n        \"aria-label\": translations?.closeTriggerLabel,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"DISMISS\", src: \"user\" });\n        }\n      });\n    }\n  };\n}\nexport {\n  connect\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/resize-observer.ts\nimport { getWindow } from \"./node.mjs\";\nimport { noop } from \"./shared.mjs\";\nfunction createSharedResizeObserver(options) {\n  const listeners = /* @__PURE__ */ new WeakMap();\n  let observer;\n  const entries = /* @__PURE__ */ new WeakMap();\n  const getObserver = (win) => {\n    if (observer) return observer;\n    observer = new win.ResizeObserver((observedEntries) => {\n      for (const entry of observedEntries) {\n        entries.set(entry.target, entry);\n        const elementListeners = listeners.get(entry.target);\n        if (elementListeners) {\n          for (const listener of elementListeners) {\n            listener(entry);\n          }\n        }\n      }\n    });\n    return observer;\n  };\n  const observe = (element, listener) => {\n    const win = getWindow(element);\n    if (typeof win.ResizeObserver !== \"function\") return noop;\n    let elementListeners = listeners.get(element) || /* @__PURE__ */ new Set();\n    elementListeners.add(listener);\n    listeners.set(element, elementListeners);\n    getObserver(win).observe(element, options);\n    return () => {\n      const elementListeners2 = listeners.get(element);\n      if (!elementListeners2) return;\n      elementListeners2.delete(listener);\n      if (elementListeners2.size === 0) {\n        listeners.delete(element);\n        getObserver(win).unobserve(element);\n      }\n    };\n  };\n  const unobserve = (element) => {\n    listeners.delete(element);\n    observer?.unobserve(element);\n  };\n  return {\n    observe,\n    unobserve\n  };\n}\nvar resizeObserverContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"content-box\"\n});\nvar resizeObserverBorderBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"border-box\"\n});\nvar resizeObserverDevicePixelContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"device-pixel-content-box\"\n});\nexport {\n  resizeObserverBorderBox,\n  resizeObserverContentBox,\n  resizeObserverDevicePixelContentBox\n};\n","// src/toast.dom.ts\nimport { AnimationFrame, getWindow, queryAll, resizeObserverBorderBox } from \"@zag-js/dom-query\";\nimport { callAll } from \"@zag-js/utils\";\nvar getRegionId = (placement) => `toast-group:${placement}`;\nvar getRegionEl = (ctx, placement) => ctx.getById(`toast-group:${placement}`);\nvar getToastEls = (ctx, placement) => queryAll(getRegionEl(ctx, placement), \"[data-scope=toast][data-part=root]\");\nvar getRootId = (ctx) => `toast:${ctx.id}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getTitleId = (ctx) => `toast:${ctx.id}:title`;\nvar getDescriptionId = (ctx) => `toast:${ctx.id}:description`;\nvar getTitleEl = (ctx) => ctx.getById(getTitleId(ctx));\nvar getDescriptionEl = (ctx) => ctx.getById(getDescriptionId(ctx));\nvar getCloseTriggerId = (ctx) => `toast${ctx.id}:close`;\nfunction observeContent(rootEl, options) {\n  const { filter = () => true, onChange, onMutate } = options;\n  const win = getWindow(rootEl);\n  const frame = AnimationFrame.create();\n  const notify = () => frame.request(onChange);\n  let stopObservingChildren;\n  const observeChildren = () => {\n    stopObservingChildren?.();\n    const children = Array.from(rootEl.children).filter(filter);\n    stopObservingChildren = callAll(...children.map((child) => resizeObserverBorderBox.observe(child, notify)));\n  };\n  observeChildren();\n  const mutationObserver = new win.MutationObserver(() => {\n    frame.cancel();\n    onChange();\n    onMutate?.();\n    observeChildren();\n  });\n  mutationObserver.observe(rootEl, { childList: true, subtree: true, characterData: true });\n  return () => {\n    mutationObserver.disconnect();\n    stopObservingChildren?.();\n    frame.cancel();\n  };\n}\nexport {\n  getCloseTriggerId,\n  getDescriptionEl,\n  getDescriptionId,\n  getRegionEl,\n  getRegionId,\n  getRootEl,\n  getRootId,\n  getTitleEl,\n  getTitleId,\n  getToastEls,\n  observeContent\n};\n","import {\n  __privateAdd,\n  __privateGet,\n  __publicField\n} from \"./chunk-MXGZDBDQ.mjs\";\n\n// src/timers.ts\nvar currentTime = () => performance.now();\nvar _tick;\nvar Timer = class {\n  constructor(onTick) {\n    __publicField(this, \"onTick\", onTick);\n    __publicField(this, \"frameId\", null);\n    __publicField(this, \"pausedAtMs\", null);\n    __publicField(this, \"context\");\n    __publicField(this, \"cancelFrame\", () => {\n      if (this.frameId === null) return;\n      cancelAnimationFrame(this.frameId);\n      this.frameId = null;\n    });\n    __publicField(this, \"setStartMs\", (startMs) => {\n      this.context.startMs = startMs;\n    });\n    __publicField(this, \"start\", () => {\n      if (this.frameId !== null) return;\n      const now = currentTime();\n      if (this.pausedAtMs !== null) {\n        this.context.startMs += now - this.pausedAtMs;\n        this.pausedAtMs = null;\n      } else {\n        this.context.startMs = now;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    __publicField(this, \"pause\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = currentTime();\n    });\n    __publicField(this, \"stop\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = null;\n    });\n    __privateAdd(this, _tick, (now) => {\n      this.context.now = now;\n      this.context.deltaMs = now - this.context.startMs;\n      const shouldContinue = this.onTick(this.context);\n      if (shouldContinue === false) {\n        this.stop();\n        return;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    this.context = { now: 0, startMs: currentTime(), deltaMs: 0 };\n  }\n  get elapsedMs() {\n    if (this.pausedAtMs !== null) {\n      return this.pausedAtMs - this.context.startMs;\n    }\n    return currentTime() - this.context.startMs;\n  }\n};\n_tick = new WeakMap();\nfunction setRafInterval(fn, intervalMs) {\n  const timer = new Timer(({ now, deltaMs }) => {\n    if (deltaMs >= intervalMs) {\n      const startMs = intervalMs > 0 ? now - deltaMs % intervalMs : now;\n      timer.setStartMs(startMs);\n      fn({ startMs, deltaMs });\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\nfunction setRafTimeout(fn, delayMs) {\n  const timer = new Timer(({ deltaMs }) => {\n    if (deltaMs >= delayMs) {\n      fn();\n      return false;\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\nexport {\n  Timer,\n  setRafInterval,\n  setRafTimeout\n};\n","var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n\nexport {\n  __publicField,\n  __privateGet,\n  __privateAdd\n};\n","// src/toast.machine.ts\nimport { createGuards, createMachine } from \"@zag-js/core\";\nimport { contains, raf } from \"@zag-js/dom-query\";\nimport { ensureProps, setRafTimeout } from \"@zag-js/utils\";\nimport * as dom from \"./toast.dom.mjs\";\nimport { getToastDuration, setHeight } from \"./toast.utils.mjs\";\nvar { not, and } = createGuards();\nvar machine = createMachine({\n  props({ props }) {\n    ensureProps(props, [\"id\", \"type\", \"parent\", \"removeDelay\"], \"toast\");\n    return {\n      closable: true,\n      ...props,\n      duration: getToastDuration(props.duration, props.type)\n    };\n  },\n  initialState({ prop }) {\n    if (prop(\"message\") === \"DISMISS\") return \"dismissing\";\n    const persist = prop(\"type\") === \"loading\" || prop(\"duration\") === Infinity || prop(\"paused\");\n    return persist ? \"visible:persist\" : \"visible\";\n  },\n  context({ prop, bindable }) {\n    return {\n      remainingTime: bindable(() => ({\n        defaultValue: getToastDuration(prop(\"duration\"), prop(\"type\"))\n      })),\n      createdAt: bindable(() => ({\n        defaultValue: Date.now()\n      })),\n      mounted: bindable(() => ({\n        defaultValue: false\n      })),\n      initialHeight: bindable(() => ({\n        defaultValue: 0\n      })),\n      rendered: bindable(() => ({\n        defaultValue: { title: true, description: true }\n      }))\n    };\n  },\n  refs() {\n    return {\n      closeTimerStartTime: Date.now(),\n      lastCloseStartTimerStartTime: 0\n    };\n  },\n  computed: {\n    zIndex: ({ prop }) => {\n      const toasts = prop(\"parent\").context.get(\"toasts\");\n      const index = toasts.findIndex((toast) => toast.id === prop(\"id\"));\n      return toasts.length - index;\n    },\n    height: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      const height = heights.find((height2) => height2.id === prop(\"id\"));\n      return height?.height ?? 0;\n    },\n    heightIndex: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      return heights.findIndex((height) => height.id === prop(\"id\"));\n    },\n    frontmost: ({ prop }) => prop(\"index\") === 0,\n    heightBefore: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      const heightIndex = heights.findIndex((height) => height.id === prop(\"id\"));\n      return heights.reduce((prev, curr, reducerIndex) => {\n        if (reducerIndex >= heightIndex) return prev;\n        return prev + curr.height;\n      }, 0);\n    },\n    shouldPersist: ({ prop }) => prop(\"type\") === \"loading\" || prop(\"duration\") === Infinity\n  },\n  watch({ track, prop, send }) {\n    track([() => prop(\"message\")], () => {\n      const message = prop(\"message\");\n      if (message) send({ type: message, src: \"programmatic\" });\n    });\n    track([() => prop(\"paused\")], () => {\n      send({ type: prop(\"paused\") ? \"PAUSE\" : \"RESUME\" });\n    });\n    track([() => prop(\"type\"), () => prop(\"duration\")], () => {\n      send({ type: \"UPDATE\" });\n    });\n  },\n  on: {\n    UPDATE: [\n      {\n        guard: and(\"isVisible\", \"shouldPause\"),\n        target: \"visible:persist\",\n        actions: [\"resetCloseTimer\"]\n      },\n      {\n        guard: \"isVisible\",\n        target: \"visible:updating\",\n        actions: [\"resetCloseTimer\"]\n      }\n    ],\n    MEASURE: {\n      actions: [\"measureHeight\"]\n    }\n  },\n  entry: [\"setMounted\", \"measureHeight\", \"invokeOnVisible\"],\n  effects: [\"trackContent\"],\n  states: {\n    \"visible:updating\": {\n      tags: [\"visible\", \"updating\"],\n      effects: [\"waitForNextTick\"],\n      on: {\n        DISMISS: {\n          target: \"dismissing\"\n        },\n        PAUSE: {\n          target: \"visible:persist\"\n        },\n        SHOW: {\n          target: \"visible\"\n        }\n      }\n    },\n    \"visible:persist\": {\n      tags: [\"visible\", \"paused\"],\n      on: {\n        RESUME: {\n          guard: not(\"shouldPause\"),\n          target: \"visible\",\n          actions: [\"setCloseTimer\"]\n        },\n        DISMISS: {\n          target: \"dismissing\"\n        }\n      }\n    },\n    visible: {\n      tags: [\"visible\"],\n      effects: [\"waitForDuration\"],\n      on: {\n        DISMISS: {\n          target: \"dismissing\"\n        },\n        PAUSE: {\n          target: \"visible:persist\",\n          actions: [\"syncRemainingTime\"]\n        }\n      }\n    },\n    dismissing: {\n      entry: [\"notifyParentOfDismiss\", \"invokeOnDismiss\"],\n      effects: [\"waitForRemoveDelay\"],\n      on: {\n        REMOVE: {\n          target: \"unmounted\",\n          actions: [\"notifyParentToRemove\"]\n        }\n      }\n    },\n    unmounted: {\n      entry: [\"invokeOnUnmount\"]\n    }\n  },\n  implementations: {\n    effects: {\n      waitForRemoveDelay({ prop, send }) {\n        return setRafTimeout(() => {\n          send({ type: \"REMOVE\", src: \"timer\" });\n        }, prop(\"removeDelay\"));\n      },\n      waitForDuration({ send, context, computed }) {\n        if (computed(\"shouldPersist\")) return;\n        return setRafTimeout(() => {\n          send({ type: \"DISMISS\", src: \"timer\" });\n        }, context.get(\"remainingTime\"));\n      },\n      waitForNextTick({ send }) {\n        return setRafTimeout(() => {\n          send({ type: \"SHOW\", src: \"timer\" });\n        }, 0);\n      },\n      trackContent({ scope, prop, context, state }) {\n        return raf(() => {\n          const rootEl = dom.getRootEl(scope);\n          if (!rootEl) return;\n          const syncHeight = () => {\n            if (!state.hasTag(\"visible\") || !rootEl.isConnected) return;\n            const height = measureLayoutHeight(rootEl);\n            setHeight(prop(\"parent\"), { id: prop(\"id\"), height });\n          };\n          const syncRenderedElements = () => {\n            context.set(\"rendered\", {\n              title: !!dom.getTitleEl(scope),\n              description: !!dom.getDescriptionEl(scope)\n            });\n          };\n          syncRenderedElements();\n          return dom.observeContent(rootEl, {\n            filter: (el) => !el.hasAttribute(\"data-ghost\"),\n            onChange: syncHeight,\n            onMutate: syncRenderedElements\n          });\n        });\n      }\n    },\n    guards: {\n      isVisible: ({ state }) => state.hasTag(\"visible\"),\n      shouldPause: ({ computed, prop }) => computed(\"shouldPersist\") || !!prop(\"paused\")\n    },\n    actions: {\n      setMounted({ context }) {\n        raf(() => {\n          context.set(\"mounted\", true);\n        });\n      },\n      measureHeight({ scope, prop, context }) {\n        queueMicrotask(() => {\n          const rootEl = dom.getRootEl(scope);\n          if (!rootEl) return;\n          const height = measureLayoutHeight(rootEl);\n          context.set(\"initialHeight\", height);\n          const item = { id: prop(\"id\"), height };\n          setHeight(prop(\"parent\"), item);\n        });\n      },\n      setCloseTimer({ refs }) {\n        refs.set(\"closeTimerStartTime\", Date.now());\n      },\n      resetCloseTimer({ context, refs, prop }) {\n        refs.set(\"closeTimerStartTime\", Date.now());\n        context.set(\"remainingTime\", getToastDuration(prop(\"duration\"), prop(\"type\")));\n      },\n      syncRemainingTime({ context, refs }) {\n        context.set(\"remainingTime\", (prev) => {\n          const closeTimerStartTime = refs.get(\"closeTimerStartTime\");\n          const elapsedTime = Date.now() - closeTimerStartTime;\n          refs.set(\"lastCloseStartTimerStartTime\", Date.now());\n          return prev - elapsedTime;\n        });\n      },\n      notifyParentToRemove({ prop }) {\n        const parent = prop(\"parent\");\n        parent.send({ type: \"TOAST.REMOVE\", id: prop(\"id\") });\n      },\n      notifyParentOfDismiss({ prop, scope }) {\n        const activeEl = scope.getActiveElement();\n        if (!contains(dom.getRootEl(scope), activeEl)) return;\n        const focusVisible = !!activeEl?.matches(\":focus-visible\");\n        prop(\"parent\").send({ type: \"TOAST.DISMISS\", focusVisible });\n      },\n      invokeOnDismiss({ prop, event }) {\n        prop(\"parent\").prop(\"store\").dismiss(prop(\"id\"));\n        prop(\"onStatusChange\")?.({ status: \"dismissing\", src: event.src });\n      },\n      invokeOnUnmount({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"unmounted\" });\n      },\n      invokeOnVisible({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"visible\" });\n      }\n    }\n  }\n});\nfunction measureLayoutHeight(el) {\n  const prevHeight = el.style.height;\n  el.style.height = \"auto\";\n  const height = el.offsetHeight;\n  el.style.height = prevHeight;\n  return height;\n}\nexport {\n  machine\n};\n","// src/toast.utils.ts\nimport { MAX_Z_INDEX } from \"@zag-js/dom-query\";\nvar defaultTimeouts = {\n  info: 5e3,\n  error: 5e3,\n  success: 2e3,\n  loading: Infinity,\n  warning: 5e3,\n  DEFAULT: 5e3\n};\nfunction getToastDuration(duration, type) {\n  return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT;\n}\nvar getOffsets = (offsets) => typeof offsets === \"string\" ? { left: offsets, right: offsets, bottom: offsets, top: offsets } : offsets;\nfunction getGroupPlacementStyle(service, placement) {\n  const { prop, computed, context } = service;\n  const { offsets, gap } = prop(\"store\").attrs;\n  const heights = context.get(\"heights\");\n  const computedOffset = getOffsets(offsets);\n  const rtl = prop(\"dir\") === \"rtl\";\n  const computedPlacement = placement.replace(\"-start\", rtl ? \"-right\" : \"-left\").replace(\"-end\", rtl ? \"-left\" : \"-right\");\n  const isRighty = computedPlacement.includes(\"right\");\n  const isLefty = computedPlacement.includes(\"left\");\n  const styles = {\n    position: \"fixed\",\n    pointerEvents: computed(\"count\") > 0 ? void 0 : \"none\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"--gap\": `${gap}px`,\n    \"--first-height\": `${heights[0]?.height || 0}px`,\n    \"--viewport-offset-left\": computedOffset.left,\n    \"--viewport-offset-right\": computedOffset.right,\n    \"--viewport-offset-top\": computedOffset.top,\n    \"--viewport-offset-bottom\": computedOffset.bottom,\n    zIndex: MAX_Z_INDEX\n  };\n  let alignItems = \"center\";\n  if (isRighty) alignItems = \"flex-end\";\n  if (isLefty) alignItems = \"flex-start\";\n  styles.alignItems = alignItems;\n  if (computedPlacement.includes(\"top\")) {\n    const offset = computedOffset.top;\n    styles.top = `max(env(safe-area-inset-top, 0px), ${offset})`;\n  }\n  if (computedPlacement.includes(\"bottom\")) {\n    const offset = computedOffset.bottom;\n    styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`;\n  }\n  if (!computedPlacement.includes(\"left\")) {\n    const offset = computedOffset.right;\n    styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`;\n  }\n  if (!computedPlacement.includes(\"right\")) {\n    const offset = computedOffset.left;\n    styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`;\n  }\n  return styles;\n}\nfunction getPlacementStyle(service, visible) {\n  const { prop, context, computed } = service;\n  const parent = prop(\"parent\");\n  const placement = parent.computed(\"placement\");\n  const { gap } = parent.prop(\"store\").attrs;\n  const [side] = placement.split(\"-\");\n  const mounted = context.get(\"mounted\");\n  const remainingTime = context.get(\"remainingTime\");\n  const height = computed(\"height\");\n  const frontmost = computed(\"frontmost\");\n  const sibling = !frontmost;\n  const stacked = prop(\"parent\").state.matches(\"stack\");\n  const overlap = !stacked;\n  const type = prop(\"type\");\n  const duration = type === \"loading\" ? Number.MAX_SAFE_INTEGER : remainingTime;\n  const offset = computed(\"heightIndex\") * gap + computed(\"heightBefore\");\n  const styles = {\n    position: \"absolute\",\n    pointerEvents: \"auto\",\n    \"--opacity\": \"0\",\n    \"--remove-delay\": `${prop(\"removeDelay\")}ms`,\n    \"--duration\": `${duration}ms`,\n    \"--initial-height\": `${height}px`,\n    \"--offset\": `${offset}px`,\n    \"--index\": prop(\"index\"),\n    \"--z-index\": computed(\"zIndex\"),\n    \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n    \"--y\": \"100%\",\n    \"--x\": \"0\"\n  };\n  const assign = (overrides) => Object.assign(styles, overrides);\n  if (side === \"top\") {\n    assign({\n      top: \"0\",\n      \"--sign\": \"-1\",\n      \"--y\": \"-100%\",\n      \"--lift\": \"1\"\n    });\n  } else if (side === \"bottom\") {\n    assign({\n      bottom: \"0\",\n      \"--sign\": \"1\",\n      \"--y\": \"100%\",\n      \"--lift\": \"-1\"\n    });\n  }\n  if (mounted) {\n    assign({\n      \"--y\": \"0\",\n      \"--opacity\": \"1\"\n    });\n    if (stacked) {\n      assign({\n        \"--y\": \"calc(var(--lift) * var(--offset))\",\n        \"--height\": \"var(--initial-height)\"\n      });\n    }\n  }\n  if (!visible) {\n    assign({\n      \"--opacity\": \"0\",\n      pointerEvents: \"none\"\n    });\n  }\n  if (sibling && overlap) {\n    assign({\n      \"--base-scale\": \"var(--index) * 0.05 + 1\",\n      \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n      \"--scale\": \"calc(-1 * var(--base-scale))\",\n      \"--height\": \"var(--first-height)\"\n    });\n    if (!visible) {\n      assign({\n        \"--y\": \"calc(var(--sign) * 40%)\"\n      });\n    }\n  }\n  if (sibling && stacked && !visible) {\n    assign({\n      \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\"\n    });\n  }\n  if (frontmost && !visible) {\n    assign({\n      \"--y\": \"calc(var(--lift) * -100%)\"\n    });\n  }\n  return styles;\n}\nfunction getGhostBeforeStyle(service, visible) {\n  const { computed } = service;\n  const styles = {\n    position: \"absolute\",\n    inset: \"0\",\n    scale: \"1 2\",\n    pointerEvents: visible ? \"none\" : \"auto\"\n  };\n  const assign = (overrides) => Object.assign(styles, overrides);\n  if (computed(\"frontmost\") && !visible) {\n    assign({\n      height: \"calc(var(--initial-height) + 80%)\"\n    });\n  }\n  return styles;\n}\nfunction getGhostAfterStyle() {\n  return {\n    position: \"absolute\",\n    left: \"0\",\n    height: \"calc(var(--gap) + 2px)\",\n    bottom: \"100%\",\n    width: \"100%\"\n  };\n}\nfunction setHeight(parent, item) {\n  const { id, height } = item;\n  parent.context.set(\"heights\", (prev) => {\n    const existing = prev.find((i) => i.id === id);\n    if (existing) {\n      if (existing.height === height) return prev;\n      return prev.map((i) => i.id === id ? { ...i, height } : i);\n    }\n    const toasts = parent.context.get(\"toasts\");\n    const rank = (id2) => toasts.findIndex((t) => t.id === id2);\n    const index = rank(id);\n    let insertAt = prev.findIndex((i) => {\n      const r = rank(i.id);\n      return r === -1 || r > index;\n    });\n    if (insertAt === -1) insertAt = prev.length;\n    return [...prev.slice(0, insertAt), { id, height }, ...prev.slice(insertAt)];\n  });\n}\nexport {\n  defaultTimeouts,\n  getGhostAfterStyle,\n  getGhostBeforeStyle,\n  getGroupPlacementStyle,\n  getPlacementStyle,\n  getToastDuration,\n  setHeight\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\n\n// src/warning.ts\nfunction warn(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    console.warn(m);\n  }\n}\nfunction invariant(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    throw new Error(m);\n  }\n}\nfunction ensure(c, m) {\n  if (c == null) throw new Error(m());\n}\nfunction ensureProps(props, keys, scope) {\n  let missingKeys = [];\n  for (const key of keys) {\n    if (props[key] == null) missingKeys.push(key);\n  }\n  if (missingKeys.length > 0)\n    throw new Error(`[zag-js${scope ? ` > ${scope}` : \"\"}] missing required props: ${missingKeys.join(\", \")}`);\n}\nexport {\n  ensure,\n  ensureProps,\n  invariant,\n  warn\n};\n","/*! @license DOMPurify 3.4.17 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.17/LICENSE */\nfunction _OverloadYield(e, d) {\n\tthis.v = e, this.k = d;\n}\nfunction _arrayLikeToArray(r, a) {\n\t(null == a || a > r.length) && (a = r.length);\n\tfor (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n\treturn n;\n}\nfunction _arrayWithHoles(r) {\n\tif (Array.isArray(r)) return r;\n}\nfunction _iterableToArrayLimit(r, l) {\n\tvar t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n\tif (null != t) {\n\t\tvar e, n, i, u, a = [], f = !0, o = !1;\n\t\ttry {\n\t\t\tif (i = (t = t.call(r)).next, 0 === l) {\n\t\t\t\tif (Object(t) !== t) return;\n\t\t\t\tf = !1;\n\t\t\t} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n\t\t} catch (r) {\n\t\t\to = !0, n = r;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n\t\t\t} finally {\n\t\t\t\tif (o) throw n;\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n}\nfunction _nonIterableRest() {\n\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\nfunction _slicedToArray(r, e) {\n\treturn _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n\tif (r) {\n\t\tif (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n\t\tvar t = {}.toString.call(r).slice(8, -1);\n\t\treturn \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n\t}\n}\nfunction AsyncGenerator(e) {\n\tvar t, n;\n\tfunction resume(t, n) {\n\t\ttry {\n\t\t\tvar r = e[t](n), o = r.value, u = o instanceof _OverloadYield;\n\t\t\tPromise.resolve(u ? o.v : o).then(function(n) {\n\t\t\t\tif (u) {\n\t\t\t\t\tvar i = \"return\" === t && o.k ? t : \"next\";\n\t\t\t\t\tif (!o.k || n.done) return resume(i, n);\n\t\t\t\t\tn = e[i](n).value;\n\t\t\t\t}\n\t\t\t\tsettle(!!r.done, n);\n\t\t\t}, function(e) {\n\t\t\t\tresume(\"throw\", e);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tsettle(2, e);\n\t\t}\n\t}\n\tfunction settle(e, r) {\n\t\t2 === e ? t.reject(r) : t.resolve({\n\t\t\tvalue: r,\n\t\t\tdone: e\n\t\t}), (t = t.next) ? resume(t.key, t.arg) : n = null;\n\t}\n\tthis._invoke = function(e, r) {\n\t\treturn new Promise(function(o, u) {\n\t\t\tvar i = {\n\t\t\t\tkey: e,\n\t\t\t\targ: r,\n\t\t\t\tresolve: o,\n\t\t\t\treject: u,\n\t\t\t\tnext: null\n\t\t\t};\n\t\t\tn ? n = n.next = i : (t = n = i, resume(e, r));\n\t\t});\n\t}, \"function\" != typeof e.return && (this.return = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function() {\n\treturn this;\n}, AsyncGenerator.prototype.next = function(e) {\n\treturn this._invoke(\"next\", e);\n}, AsyncGenerator.prototype.throw = function(e) {\n\treturn this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype.return = function(e) {\n\treturn this._invoke(\"return\", e);\n};\nconst entries = Object.entries;\nconst setPrototypeOf = Object.setPrototypeOf;\nconst isFrozen = Object.isFrozen;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nlet freeze = Object.freeze;\nlet seal = Object.seal;\nlet create = Object.create;\nlet _ref = typeof Reflect !== \"undefined\" && Reflect;\nlet apply = _ref.apply;\nlet construct = _ref.construct;\nif (!freeze) freeze = function freeze(x) {\n\treturn x;\n};\nif (!seal) seal = function seal(x) {\n\treturn x;\n};\nif (!apply) apply = function apply(func, thisArg) {\n\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\treturn func.apply(thisArg, args);\n};\nif (!construct) construct = function construct(Func) {\n\tfor (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];\n\treturn new Func(...args);\n};\nconst arrayForEach = unapply(Array.prototype.forEach);\nArray.prototype.indexOf;\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\nconst setCreate = unconstruct(Set);\nconst setAdd = unapply(Set.prototype.add);\nconst setHas = unapply(Set.prototype.has);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString = typeof BigInt === \"undefined\" ? null : unapply(BigInt.prototype.toString);\nconst symbolToString = typeof Symbol === \"undefined\" ? null : unapply(Symbol.prototype.toString);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n* Creates a new function that calls the given function with a specified thisArg and arguments.\n*\n* @param func - The function to be wrapped and called.\n* @returns A new function that calls the given function with a specified thisArg and arguments.\n*/\nfunction unapply(func) {\n\treturn function(thisArg) {\n\t\tif (thisArg instanceof RegExp) thisArg.lastIndex = 0;\n\t\tfor (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];\n\t\treturn apply(func, thisArg, args);\n\t};\n}\n/**\n* Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n*\n* @param func - The constructor function to be wrapped and called.\n* @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n*/\nfunction unconstruct(Func) {\n\treturn function() {\n\t\tfor (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];\n\t\treturn construct(Func, args);\n\t};\n}\n/**\n* Add properties to a lookup table\n*\n* @param set - The set to which elements will be added.\n* @param array - The array containing elements to be added to the set.\n* @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n* @returns The modified set with added elements.\n*/\nfunction addToSet(set, array) {\n\tlet transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;\n\tif (setPrototypeOf) setPrototypeOf(set, null);\n\tif (!arrayIsArray(array)) return set;\n\tlet l = array.length;\n\twhile (l--) {\n\t\tlet element = array[l];\n\t\tif (typeof element === \"string\") {\n\t\t\tconst lcElement = transformCaseFunc(element);\n\t\t\tif (lcElement !== element) {\n\t\t\t\tif (!isFrozen(array)) array[l] = lcElement;\n\t\t\t\telement = lcElement;\n\t\t\t}\n\t\t}\n\t\tset[element] = true;\n\t}\n\treturn set;\n}\n/**\n* Clean up an array to harden against CSPP\n*\n* @param array - The array to be cleaned.\n* @returns The cleaned version of the array\n*/\nfunction cleanArray(array) {\n\tfor (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null;\n\treturn array;\n}\n/**\n* Shallow clone an object\n*\n* @param object - The object to be cloned.\n* @returns A new object that copies the original.\n*/\nfunction clone(object) {\n\tconst newObject = create(null);\n\tfor (const _ref2 of entries(object)) {\n\t\tvar _ref3 = _slicedToArray(_ref2, 2);\n\t\tconst property = _ref3[0];\n\t\tconst value = _ref3[1];\n\t\tif (objectHasOwnProperty(object, property)) {\n\t\t\tif (arrayIsArray(value)) newObject[property] = cleanArray(value);\n\t\t\telse if (value && typeof value === \"object\" && value.constructor === Object) newObject[property] = clone(value);\n\t\t\telse newObject[property] = value;\n\t\t}\n\t}\n\treturn newObject;\n}\n/**\n* Convert non-node values into strings without depending on direct property access.\n*\n* @param value - The value to stringify.\n* @returns A string representation of the provided value.\n*/\nfunction stringifyValue(value) {\n\tswitch (typeof value) {\n\t\tcase \"string\": return value;\n\t\tcase \"number\": return numberToString(value);\n\t\tcase \"boolean\": return booleanToString(value);\n\t\tcase \"bigint\": return bigintToString ? bigintToString(value) : \"0\";\n\t\tcase \"symbol\": return symbolToString ? symbolToString(value) : \"Symbol()\";\n\t\tcase \"undefined\": return objectToString(value);\n\t\tcase \"function\":\n\t\tcase \"object\": {\n\t\t\tif (value === null) return objectToString(value);\n\t\t\tconst valueAsRecord = value;\n\t\t\tconst valueToString = lookupGetter(valueAsRecord, \"toString\");\n\t\t\tif (typeof valueToString === \"function\") {\n\t\t\t\tconst stringified = valueToString(valueAsRecord);\n\t\t\t\treturn typeof stringified === \"string\" ? stringified : objectToString(stringified);\n\t\t\t}\n\t\t\treturn objectToString(value);\n\t\t}\n\t\tdefault: return objectToString(value);\n\t}\n}\n/**\n* This method automatically checks if the prop is function or getter and behaves accordingly.\n*\n* @param object - The object to look up the getter function in its prototype chain.\n* @param prop - The property name for which to find the getter function.\n* @returns The getter function found in the prototype chain or a fallback function.\n*/\nfunction lookupGetter(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) {\n\t\t\tif (desc.get) return unapply(desc.get);\n\t\t\tif (typeof desc.value === \"function\") return unapply(desc.value);\n\t\t}\n\t\tobject = getPrototypeOf(object);\n\t}\n\tfunction fallbackValue() {\n\t\treturn null;\n\t}\n\treturn fallbackValue;\n}\n/**\n* Like lookupGetter, but for accessor properties only, and returns null\n* instead of a null-returning fallback when no getter exists on the chain.\n* Lets a caller fall back to a direct property read in environments that\n* lack the getter, where a fallback returning null would be indistinguishable\n* from a legitimate null value (e.g. namespaceURI of a no-namespace element).\n*\n* @param object - The object (usually a prototype) to start the lookup at.\n* @param prop - The accessor property name.\n* @returns The unapplied getter, or null if none was found.\n*/\nfunction lookupAccessor(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) return desc.get ? unapply(desc.get) : null;\n\t\tobject = getPrototypeOf(object);\n\t}\n\treturn null;\n}\nfunction isRegex(value) {\n\ttry {\n\t\tregExpTest(value, \"\");\n\t\treturn true;\n\t} catch (_unused) {\n\t\treturn false;\n\t}\n}\nconst html$1 = freeze([\n\t\"a\",\n\t\"abbr\",\n\t\"acronym\",\n\t\"address\",\n\t\"area\",\n\t\"article\",\n\t\"aside\",\n\t\"audio\",\n\t\"b\",\n\t\"bdi\",\n\t\"bdo\",\n\t\"big\",\n\t\"blink\",\n\t\"blockquote\",\n\t\"body\",\n\t\"br\",\n\t\"button\",\n\t\"canvas\",\n\t\"caption\",\n\t\"center\",\n\t\"cite\",\n\t\"code\",\n\t\"col\",\n\t\"colgroup\",\n\t\"content\",\n\t\"data\",\n\t\"datalist\",\n\t\"dd\",\n\t\"decorator\",\n\t\"del\",\n\t\"details\",\n\t\"dfn\",\n\t\"dialog\",\n\t\"dir\",\n\t\"div\",\n\t\"dl\",\n\t\"dt\",\n\t\"element\",\n\t\"em\",\n\t\"fieldset\",\n\t\"figcaption\",\n\t\"figure\",\n\t\"font\",\n\t\"footer\",\n\t\"form\",\n\t\"h1\",\n\t\"h2\",\n\t\"h3\",\n\t\"h4\",\n\t\"h5\",\n\t\"h6\",\n\t\"head\",\n\t\"header\",\n\t\"hgroup\",\n\t\"hr\",\n\t\"html\",\n\t\"i\",\n\t\"img\",\n\t\"input\",\n\t\"ins\",\n\t\"kbd\",\n\t\"label\",\n\t\"legend\",\n\t\"li\",\n\t\"main\",\n\t\"map\",\n\t\"mark\",\n\t\"marquee\",\n\t\"menu\",\n\t\"menuitem\",\n\t\"meter\",\n\t\"nav\",\n\t\"nobr\",\n\t\"ol\",\n\t\"optgroup\",\n\t\"option\",\n\t\"output\",\n\t\"p\",\n\t\"picture\",\n\t\"pre\",\n\t\"progress\",\n\t\"q\",\n\t\"rp\",\n\t\"rt\",\n\t\"ruby\",\n\t\"s\",\n\t\"samp\",\n\t\"search\",\n\t\"section\",\n\t\"select\",\n\t\"shadow\",\n\t\"slot\",\n\t\"small\",\n\t\"source\",\n\t\"spacer\",\n\t\"span\",\n\t\"strike\",\n\t\"strong\",\n\t\"style\",\n\t\"sub\",\n\t\"summary\",\n\t\"sup\",\n\t\"table\",\n\t\"tbody\",\n\t\"td\",\n\t\"template\",\n\t\"textarea\",\n\t\"tfoot\",\n\t\"th\",\n\t\"thead\",\n\t\"time\",\n\t\"tr\",\n\t\"track\",\n\t\"tt\",\n\t\"u\",\n\t\"ul\",\n\t\"var\",\n\t\"video\",\n\t\"wbr\"\n]);\nconst svg$1 = freeze([\n\t\"svg\",\n\t\"a\",\n\t\"altglyph\",\n\t\"altglyphdef\",\n\t\"altglyphitem\",\n\t\"animatecolor\",\n\t\"animatemotion\",\n\t\"animatetransform\",\n\t\"circle\",\n\t\"clippath\",\n\t\"defs\",\n\t\"desc\",\n\t\"ellipse\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"filter\",\n\t\"font\",\n\t\"g\",\n\t\"glyph\",\n\t\"glyphref\",\n\t\"hkern\",\n\t\"image\",\n\t\"inputmode\",\n\t\"line\",\n\t\"lineargradient\",\n\t\"marker\",\n\t\"mask\",\n\t\"metadata\",\n\t\"mpath\",\n\t\"part\",\n\t\"path\",\n\t\"pattern\",\n\t\"polygon\",\n\t\"polyline\",\n\t\"radialgradient\",\n\t\"rect\",\n\t\"stop\",\n\t\"style\",\n\t\"switch\",\n\t\"symbol\",\n\t\"text\",\n\t\"textpath\",\n\t\"title\",\n\t\"tref\",\n\t\"tspan\",\n\t\"view\",\n\t\"vkern\"\n]);\nconst svgFilters = freeze([\n\t\"feBlend\",\n\t\"feColorMatrix\",\n\t\"feComponentTransfer\",\n\t\"feComposite\",\n\t\"feConvolveMatrix\",\n\t\"feDiffuseLighting\",\n\t\"feDisplacementMap\",\n\t\"feDistantLight\",\n\t\"feDropShadow\",\n\t\"feFlood\",\n\t\"feFuncA\",\n\t\"feFuncB\",\n\t\"feFuncG\",\n\t\"feFuncR\",\n\t\"feGaussianBlur\",\n\t\"feImage\",\n\t\"feMerge\",\n\t\"feMergeNode\",\n\t\"feMorphology\",\n\t\"feOffset\",\n\t\"fePointLight\",\n\t\"feSpecularLighting\",\n\t\"feSpotLight\",\n\t\"feTile\",\n\t\"feTurbulence\"\n]);\nconst svgDisallowed = freeze([\n\t\"animate\",\n\t\"color-profile\",\n\t\"cursor\",\n\t\"discard\",\n\t\"font-face\",\n\t\"font-face-format\",\n\t\"font-face-name\",\n\t\"font-face-src\",\n\t\"font-face-uri\",\n\t\"foreignobject\",\n\t\"hatch\",\n\t\"hatchpath\",\n\t\"mesh\",\n\t\"meshgradient\",\n\t\"meshpatch\",\n\t\"meshrow\",\n\t\"missing-glyph\",\n\t\"script\",\n\t\"set\",\n\t\"solidcolor\",\n\t\"unknown\",\n\t\"use\"\n]);\nconst mathMl$1 = freeze([\n\t\"math\",\n\t\"menclose\",\n\t\"merror\",\n\t\"mfenced\",\n\t\"mfrac\",\n\t\"mglyph\",\n\t\"mi\",\n\t\"mlabeledtr\",\n\t\"mmultiscripts\",\n\t\"mn\",\n\t\"mo\",\n\t\"mover\",\n\t\"mpadded\",\n\t\"mphantom\",\n\t\"mroot\",\n\t\"mrow\",\n\t\"ms\",\n\t\"mspace\",\n\t\"msqrt\",\n\t\"mstyle\",\n\t\"msub\",\n\t\"msup\",\n\t\"msubsup\",\n\t\"mtable\",\n\t\"mtd\",\n\t\"mtext\",\n\t\"mtr\",\n\t\"munder\",\n\t\"munderover\",\n\t\"mprescripts\"\n]);\nconst mathMlDisallowed = freeze([\n\t\"maction\",\n\t\"maligngroup\",\n\t\"malignmark\",\n\t\"mlongdiv\",\n\t\"mscarries\",\n\t\"mscarry\",\n\t\"msgroup\",\n\t\"mstack\",\n\t\"msline\",\n\t\"msrow\",\n\t\"semantics\",\n\t\"annotation\",\n\t\"annotation-xml\",\n\t\"mprescripts\",\n\t\"none\"\n]);\nconst text = freeze([\"#text\"]);\nconst html = freeze([\n\t\"accept\",\n\t\"action\",\n\t\"align\",\n\t\"alt\",\n\t\"autocapitalize\",\n\t\"autocomplete\",\n\t\"autopictureinpicture\",\n\t\"autoplay\",\n\t\"background\",\n\t\"bgcolor\",\n\t\"border\",\n\t\"capture\",\n\t\"cellpadding\",\n\t\"cellspacing\",\n\t\"checked\",\n\t\"cite\",\n\t\"class\",\n\t\"clear\",\n\t\"color\",\n\t\"cols\",\n\t\"colspan\",\n\t\"command\",\n\t\"commandfor\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"coords\",\n\t\"crossorigin\",\n\t\"datetime\",\n\t\"decoding\",\n\t\"default\",\n\t\"dir\",\n\t\"disabled\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"download\",\n\t\"draggable\",\n\t\"enctype\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"face\",\n\t\"for\",\n\t\"headers\",\n\t\"height\",\n\t\"hidden\",\n\t\"high\",\n\t\"href\",\n\t\"hreflang\",\n\t\"id\",\n\t\"inert\",\n\t\"inputmode\",\n\t\"integrity\",\n\t\"ismap\",\n\t\"kind\",\n\t\"label\",\n\t\"lang\",\n\t\"list\",\n\t\"loading\",\n\t\"loop\",\n\t\"low\",\n\t\"max\",\n\t\"maxlength\",\n\t\"media\",\n\t\"method\",\n\t\"min\",\n\t\"minlength\",\n\t\"multiple\",\n\t\"muted\",\n\t\"name\",\n\t\"nonce\",\n\t\"noshade\",\n\t\"novalidate\",\n\t\"nowrap\",\n\t\"open\",\n\t\"optimum\",\n\t\"part\",\n\t\"pattern\",\n\t\"placeholder\",\n\t\"playsinline\",\n\t\"popover\",\n\t\"popovertarget\",\n\t\"popovertargetaction\",\n\t\"poster\",\n\t\"preload\",\n\t\"pubdate\",\n\t\"radiogroup\",\n\t\"readonly\",\n\t\"rel\",\n\t\"required\",\n\t\"rev\",\n\t\"reversed\",\n\t\"role\",\n\t\"rows\",\n\t\"rowspan\",\n\t\"spellcheck\",\n\t\"scope\",\n\t\"selected\",\n\t\"shape\",\n\t\"size\",\n\t\"sizes\",\n\t\"slot\",\n\t\"span\",\n\t\"srclang\",\n\t\"start\",\n\t\"src\",\n\t\"srcset\",\n\t\"step\",\n\t\"style\",\n\t\"summary\",\n\t\"tabindex\",\n\t\"title\",\n\t\"translate\",\n\t\"type\",\n\t\"usemap\",\n\t\"valign\",\n\t\"value\",\n\t\"width\",\n\t\"wrap\",\n\t\"xmlns\"\n]);\nconst svg = freeze([\n\t\"accent-height\",\n\t\"accumulate\",\n\t\"additive\",\n\t\"alignment-baseline\",\n\t\"amplitude\",\n\t\"ascent\",\n\t\"attributename\",\n\t\"attributetype\",\n\t\"azimuth\",\n\t\"basefrequency\",\n\t\"baseline-shift\",\n\t\"begin\",\n\t\"bias\",\n\t\"by\",\n\t\"class\",\n\t\"clip\",\n\t\"clippathunits\",\n\t\"clip-path\",\n\t\"clip-rule\",\n\t\"color\",\n\t\"color-interpolation\",\n\t\"color-interpolation-filters\",\n\t\"color-profile\",\n\t\"color-rendering\",\n\t\"cx\",\n\t\"cy\",\n\t\"d\",\n\t\"dx\",\n\t\"dy\",\n\t\"diffuseconstant\",\n\t\"direction\",\n\t\"display\",\n\t\"divisor\",\n\t\"dominant-baseline\",\n\t\"dur\",\n\t\"edgemode\",\n\t\"elevation\",\n\t\"end\",\n\t\"exponent\",\n\t\"fill\",\n\t\"fill-opacity\",\n\t\"fill-rule\",\n\t\"filter\",\n\t\"filterunits\",\n\t\"flood-color\",\n\t\"flood-opacity\",\n\t\"font-family\",\n\t\"font-size\",\n\t\"font-size-adjust\",\n\t\"font-stretch\",\n\t\"font-style\",\n\t\"font-variant\",\n\t\"font-weight\",\n\t\"fx\",\n\t\"fy\",\n\t\"g1\",\n\t\"g2\",\n\t\"glyph-name\",\n\t\"glyphref\",\n\t\"gradientunits\",\n\t\"gradienttransform\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"image-rendering\",\n\t\"in\",\n\t\"in2\",\n\t\"intercept\",\n\t\"k\",\n\t\"k1\",\n\t\"k2\",\n\t\"k3\",\n\t\"k4\",\n\t\"kerning\",\n\t\"keypoints\",\n\t\"keysplines\",\n\t\"keytimes\",\n\t\"lang\",\n\t\"lengthadjust\",\n\t\"letter-spacing\",\n\t\"kernelmatrix\",\n\t\"kernelunitlength\",\n\t\"lighting-color\",\n\t\"local\",\n\t\"marker-end\",\n\t\"marker-mid\",\n\t\"marker-start\",\n\t\"markerheight\",\n\t\"markerunits\",\n\t\"markerwidth\",\n\t\"maskcontentunits\",\n\t\"maskunits\",\n\t\"max\",\n\t\"mask\",\n\t\"mask-type\",\n\t\"media\",\n\t\"method\",\n\t\"mode\",\n\t\"min\",\n\t\"name\",\n\t\"numoctaves\",\n\t\"offset\",\n\t\"operator\",\n\t\"opacity\",\n\t\"order\",\n\t\"orient\",\n\t\"orientation\",\n\t\"origin\",\n\t\"overflow\",\n\t\"paint-order\",\n\t\"path\",\n\t\"pathlength\",\n\t\"patterncontentunits\",\n\t\"patterntransform\",\n\t\"patternunits\",\n\t\"pointer-events\",\n\t\"points\",\n\t\"preservealpha\",\n\t\"preserveaspectratio\",\n\t\"primitiveunits\",\n\t\"r\",\n\t\"rx\",\n\t\"ry\",\n\t\"radius\",\n\t\"refx\",\n\t\"refy\",\n\t\"repeatcount\",\n\t\"repeatdur\",\n\t\"restart\",\n\t\"result\",\n\t\"rotate\",\n\t\"scale\",\n\t\"seed\",\n\t\"shape-rendering\",\n\t\"slope\",\n\t\"specularconstant\",\n\t\"specularexponent\",\n\t\"spreadmethod\",\n\t\"startoffset\",\n\t\"stddeviation\",\n\t\"stitchtiles\",\n\t\"stop-color\",\n\t\"stop-opacity\",\n\t\"stroke-dasharray\",\n\t\"stroke-dashoffset\",\n\t\"stroke-linecap\",\n\t\"stroke-linejoin\",\n\t\"stroke-miterlimit\",\n\t\"stroke-opacity\",\n\t\"stroke\",\n\t\"stroke-width\",\n\t\"style\",\n\t\"surfacescale\",\n\t\"systemlanguage\",\n\t\"tabindex\",\n\t\"tablevalues\",\n\t\"targetx\",\n\t\"targety\",\n\t\"transform\",\n\t\"transform-origin\",\n\t\"text-anchor\",\n\t\"text-decoration\",\n\t\"text-orientation\",\n\t\"text-rendering\",\n\t\"textlength\",\n\t\"type\",\n\t\"u1\",\n\t\"u2\",\n\t\"unicode\",\n\t\"values\",\n\t\"vector-effect\",\n\t\"viewbox\",\n\t\"visibility\",\n\t\"version\",\n\t\"vert-adv-y\",\n\t\"vert-origin-x\",\n\t\"vert-origin-y\",\n\t\"width\",\n\t\"word-spacing\",\n\t\"wrap\",\n\t\"writing-mode\",\n\t\"xchannelselector\",\n\t\"ychannelselector\",\n\t\"x\",\n\t\"x1\",\n\t\"x2\",\n\t\"xmlns\",\n\t\"y\",\n\t\"y1\",\n\t\"y2\",\n\t\"z\",\n\t\"zoomandpan\"\n]);\nconst mathMl = freeze([\n\t\"accent\",\n\t\"accentunder\",\n\t\"align\",\n\t\"bevelled\",\n\t\"close\",\n\t\"columnalign\",\n\t\"columnlines\",\n\t\"columnspacing\",\n\t\"columnspan\",\n\t\"denomalign\",\n\t\"depth\",\n\t\"dir\",\n\t\"display\",\n\t\"displaystyle\",\n\t\"encoding\",\n\t\"fence\",\n\t\"frame\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"largeop\",\n\t\"length\",\n\t\"linethickness\",\n\t\"lquote\",\n\t\"lspace\",\n\t\"mathbackground\",\n\t\"mathcolor\",\n\t\"mathsize\",\n\t\"mathvariant\",\n\t\"maxsize\",\n\t\"minsize\",\n\t\"movablelimits\",\n\t\"notation\",\n\t\"numalign\",\n\t\"open\",\n\t\"rowalign\",\n\t\"rowlines\",\n\t\"rowspacing\",\n\t\"rowspan\",\n\t\"rspace\",\n\t\"rquote\",\n\t\"scriptlevel\",\n\t\"scriptminsize\",\n\t\"scriptsizemultiplier\",\n\t\"selection\",\n\t\"separator\",\n\t\"separators\",\n\t\"stretchy\",\n\t\"subscriptshift\",\n\t\"supscriptshift\",\n\t\"symmetric\",\n\t\"voffset\",\n\t\"width\",\n\t\"xmlns\"\n]);\nconst xml = freeze([\n\t\"xlink:href\",\n\t\"xml:id\",\n\t\"xlink:title\",\n\t\"xml:space\",\n\t\"xmlns:xlink\"\n]);\nconst MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nconst ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nconst TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/);\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\nconst ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nconst COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nconst FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nconst SELF_CLOSING_TAG = seal(/\\/>/i);\nconst NODE_TYPE = {\n\telement: 1,\n\tattribute: 2,\n\ttext: 3,\n\tcdataSection: 4,\n\tentityReference: 5,\n\tentityNode: 6,\n\tprocessingInstruction: 7,\n\tcomment: 8,\n\tdocument: 9,\n\tdocumentType: 10,\n\tdocumentFragment: 11,\n\tnotation: 12\n};\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, [\n\t\"style\",\n\t\"script\",\n\t\"xmp\",\n\t\"iframe\",\n\t\"noembed\",\n\t\"noframes\",\n\t\"plaintext\",\n\t\"noscript\"\n]));\nconst getGlobal = function getGlobal() {\n\treturn typeof window === \"undefined\" ? null : window;\n};\n/**\n* Creates a no-op policy for internal use only.\n* Don't export this function outside this module!\n* @param trustedTypes The policy factory.\n* @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n* @return The policy created (or null, if Trusted Types\n* are not supported or creating the policy failed).\n*/\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n\tif (typeof trustedTypes !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") return null;\n\tlet suffix = null;\n\tconst ATTR_NAME = \"data-tt-policy-suffix\";\n\tif (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME);\n\tconst policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n\ttry {\n\t\treturn trustedTypes.createPolicy(policyName, {\n\t\t\tcreateHTML(html) {\n\t\t\t\treturn html;\n\t\t\t},\n\t\t\tcreateScriptURL(scriptUrl) {\n\t\t\t\treturn scriptUrl;\n\t\t\t}\n\t\t});\n\t} catch (_) {\n\t\tconsole.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n\t\treturn null;\n\t}\n};\nconst _createHooksMap = function _createHooksMap() {\n\treturn {\n\t\tafterSanitizeAttributes: [],\n\t\tafterSanitizeElements: [],\n\t\tafterSanitizeShadowDOM: [],\n\t\tbeforeSanitizeAttributes: [],\n\t\tbeforeSanitizeElements: [],\n\t\tbeforeSanitizeShadowDOM: [],\n\t\tuponSanitizeAttribute: [],\n\t\tuponSanitizeElement: [],\n\t\tuponSanitizeShadowNode: []\n\t};\n};\n/**\n* Resolve a set-valued configuration option: a fresh set built from\n* cfg[key] when it is an own array property (seeded with a clone of\n* options.base when given, case-normalized via options.transform),\n* the fallback set otherwise.\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param fallback the set to use when the option is absent or not an array\n* @param options transform and optional base set to merge into\n* @returns the resolved set\n*/\nconst _resolveSetOption = function _resolveSetOption(cfg, key, fallback, options) {\n\treturn objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;\n};\n/**\n* Resolve an object-valued configuration option: a prototype-free clone\n* of cfg[key] when it is an own, truthy object property, else a fresh\n* fallback built by makeFallback (fresh on every parse, so a previous\n* parse can never leak state into the next one).\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param makeFallback builds the fallback value when the option is absent\n* @returns the resolved object\n*/\nconst _resolveObjectOption = function _resolveObjectOption(cfg, key, makeFallback) {\n\tconst value = objectHasOwnProperty(cfg, key) ? cfg[key] : void 0;\n\treturn value && typeof value === \"object\" ? clone(value) : makeFallback();\n};\nfunction createDOMPurify() {\n\tlet window = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n\tconst DOMPurify = (root) => createDOMPurify(root);\n\tDOMPurify.version = \"3.4.17\";\n\tDOMPurify.removed = [];\n\tif (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n\t\tDOMPurify.isSupported = false;\n\t\treturn DOMPurify;\n\t}\n\tlet document = window.document;\n\tconst originalDocument = document;\n\tconst currentScript = originalDocument.currentScript;\n\twindow.DocumentFragment;\n\tconst HTMLTemplateElement = window.HTMLTemplateElement, Node = window.Node, Element = window.Element, NodeFilter = window.NodeFilter;\n\twindow.NamedNodeMap === void 0 && (window.NamedNodeMap || window.MozNamedAttrMap);\n\twindow.HTMLFormElement;\n\tconst DOMParser = window.DOMParser, trustedTypes = window.trustedTypes;\n\tconst ElementPrototype = Element.prototype;\n\tconst cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n\tconst remove = lookupGetter(ElementPrototype, \"remove\");\n\tconst removeAttributeNode = lookupGetter(ElementPrototype, \"removeAttributeNode\");\n\tconst getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n\tconst getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n\tconst getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n\tconst getShadowRoot = lookupGetter(ElementPrototype, \"shadowRoot\");\n\tconst getAttributes = lookupGetter(ElementPrototype, \"attributes\");\n\tconst getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeType\") : null;\n\tconst getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeName\") : null;\n\tconst getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, \"ownerDocument\") : null;\n\tconst _readNodeType = function _readNodeType(node) {\n\t\treturn getNodeType ? getNodeType(node) : node.nodeType;\n\t};\n\tconst _readNodeName = function _readNodeName(node) {\n\t\treturn getNodeName ? getNodeName(node) : node.nodeName;\n\t};\n\tconst getNamespaceURI = lookupAccessor(ElementPrototype, \"namespaceURI\");\n\tconst _readNamespaceURI = function _readNamespaceURI(element) {\n\t\treturn getNamespaceURI ? getNamespaceURI(element) : element.namespaceURI;\n\t};\n\tif (typeof HTMLTemplateElement === \"function\") {\n\t\tconst template = document.createElement(\"template\");\n\t\tif (template.content && template.content.ownerDocument) document = template.content.ownerDocument;\n\t}\n\tlet trustedTypesPolicy;\n\tlet emptyHTML = \"\";\n\tlet defaultTrustedTypesPolicy;\n\tlet defaultTrustedTypesPolicyResolved = false;\n\tlet IN_TRUSTED_TYPES_POLICY = 0;\n\tconst _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {\n\t\tif (IN_TRUSTED_TYPES_POLICY > 0) throw typeErrorCreate(\"A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the \\\"DOMPurify and Trusted Types\\\" section of the README.\");\n\t};\n\tconst _createTrustedHTML = function _createTrustedHTML(html) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createHTML(html);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _createTrustedScriptURL = function _createTrustedScriptURL(scriptUrl) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createScriptURL(scriptUrl);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy() {\n\t\tif (!defaultTrustedTypesPolicyResolved) {\n\t\t\tdefaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n\t\t\tdefaultTrustedTypesPolicyResolved = true;\n\t\t}\n\t\treturn defaultTrustedTypesPolicy;\n\t};\n\tconst _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n\tconst importNode = originalDocument.importNode;\n\tlet hooks = _createHooksMap();\n\t/**\n\t* Expose whether this browser supports running the full DOMPurify.\n\t*/\n\tDOMPurify.isSupported = typeof entries === \"function\" && typeof getParentNode === \"function\" && implementation && implementation.createHTMLDocument !== void 0;\n\tconst MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n\tlet IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n\t/**\n\t* We consider the elements and attributes below to be safe. Ideally\n\t* don't add any new ones but feel free to remove unwanted ones.\n\t*/\n\tlet ALLOWED_TAGS = null;\n\tconst DEFAULT_ALLOWED_TAGS = addToSet({}, [\n\t\t...html$1,\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...mathMl$1,\n\t\t...text\n\t]);\n\tlet ALLOWED_ATTR = null;\n\tconst DEFAULT_ALLOWED_ATTR = addToSet({}, [\n\t\t...html,\n\t\t...svg,\n\t\t...mathMl,\n\t\t...xml\n\t]);\n\tlet CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tallowCustomizedBuiltInElements: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: false\n\t\t}\n\t}));\n\tlet FORBID_TAGS = null;\n\tlet FORBID_ATTR = null;\n\tconst EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t}\n\t}));\n\tlet ALLOW_ARIA_ATTR = true;\n\tlet ALLOW_DATA_ATTR = true;\n\tlet ALLOW_UNKNOWN_PROTOCOLS = false;\n\tlet ALLOW_SELF_CLOSE_IN_ATTR = true;\n\tlet SAFE_FOR_TEMPLATES = false;\n\tlet SAFE_FOR_XML = true;\n\tlet WHOLE_DOCUMENT = false;\n\tlet SET_CONFIG = false;\n\tlet SET_CONFIG_ALLOWED_TAGS = null;\n\tlet SET_CONFIG_ALLOWED_ATTR = null;\n\tlet FORCE_BODY = false;\n\tlet RETURN_DOM = false;\n\tlet RETURN_DOM_FRAGMENT = false;\n\tlet RETURN_TRUSTED_TYPE = false;\n\tlet SANITIZE_DOM = true;\n\tlet SANITIZE_NAMED_PROPS = false;\n\tconst SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n\tlet KEEP_CONTENT = true;\n\tlet IN_PLACE = false;\n\tlet IN_PLACE_VISITED = null;\n\tlet USE_PROFILES = {};\n\tlet FORBID_CONTENTS = null;\n\tconst DEFAULT_FORBID_CONTENTS = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"audio\",\n\t\t\"colgroup\",\n\t\t\"desc\",\n\t\t\"foreignobject\",\n\t\t\"head\",\n\t\t\"iframe\",\n\t\t\"math\",\n\t\t\"mi\",\n\t\t\"mn\",\n\t\t\"mo\",\n\t\t\"ms\",\n\t\t\"mtext\",\n\t\t\"noembed\",\n\t\t\"noframes\",\n\t\t\"noscript\",\n\t\t\"plaintext\",\n\t\t\"script\",\n\t\t\"selectedcontent\",\n\t\t\"style\",\n\t\t\"svg\",\n\t\t\"template\",\n\t\t\"thead\",\n\t\t\"title\",\n\t\t\"video\",\n\t\t\"xmp\"\n\t]);\n\tlet DATA_URI_TAGS = null;\n\tconst DEFAULT_DATA_URI_TAGS = addToSet({}, [\n\t\t\"audio\",\n\t\t\"video\",\n\t\t\"img\",\n\t\t\"source\",\n\t\t\"image\",\n\t\t\"track\"\n\t]);\n\tlet URI_SAFE_ATTRIBUTES = null;\n\tconst DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n\t\t\"alt\",\n\t\t\"class\",\n\t\t\"for\",\n\t\t\"id\",\n\t\t\"label\",\n\t\t\"name\",\n\t\t\"pattern\",\n\t\t\"placeholder\",\n\t\t\"role\",\n\t\t\"summary\",\n\t\t\"title\",\n\t\t\"value\",\n\t\t\"style\",\n\t\t\"xmlns\"\n\t]);\n\tconst MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n\tconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n\tconst HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n\tlet NAMESPACE = HTML_NAMESPACE;\n\tlet IS_EMPTY_INPUT = false;\n\tlet ALLOWED_NAMESPACES = null;\n\tconst DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [\n\t\tMATHML_NAMESPACE,\n\t\tSVG_NAMESPACE,\n\t\tHTML_NAMESPACE\n\t], stringToString);\n\tconst DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n\t\t\"mi\",\n\t\t\"mo\",\n\t\t\"mn\",\n\t\t\"ms\",\n\t\t\"mtext\"\n\t]);\n\tlet MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);\n\tconst DEFAULT_HTML_INTEGRATION_POINTS = freeze([\"annotation-xml\"]);\n\tlet HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\tconst COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n\t\t\"title\",\n\t\t\"style\",\n\t\t\"font\",\n\t\t\"a\",\n\t\t\"script\"\n\t]);\n\tlet PARSER_MEDIA_TYPE = null;\n\tconst SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n\tconst DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n\tlet transformCaseFunc = null;\n\tlet CONFIG = null;\n\tconst formElement = document.createElement(\"form\");\n\tconst isRegexOrFunction = function isRegexOrFunction(testValue) {\n\t\treturn testValue instanceof RegExp || testValue instanceof Function;\n\t};\n\t/**\n\t* _parseConfig\n\t*\n\t* @param cfg optional config literal\n\t*/\n\tconst _parseConfig = function _parseConfig() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\tif (CONFIG && CONFIG === cfg) return;\n\t\tif (!cfg || typeof cfg !== \"object\") cfg = {};\n\t\tcfg = clone(cfg);\n\t\tPARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\t\ttransformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? stringToString : stringToLowerCase;\n\t\tALLOWED_TAGS = _resolveSetOption(cfg, \"ALLOWED_TAGS\", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });\n\t\tALLOWED_ATTR = _resolveSetOption(cfg, \"ALLOWED_ATTR\", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });\n\t\tALLOWED_NAMESPACES = _resolveSetOption(cfg, \"ALLOWED_NAMESPACES\", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });\n\t\tURI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, \"ADD_URI_SAFE_ATTR\", DEFAULT_URI_SAFE_ATTRIBUTES, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_URI_SAFE_ATTRIBUTES\n\t\t});\n\t\tDATA_URI_TAGS = _resolveSetOption(cfg, \"ADD_DATA_URI_TAGS\", DEFAULT_DATA_URI_TAGS, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_DATA_URI_TAGS\n\t\t});\n\t\tFORBID_CONTENTS = _resolveSetOption(cfg, \"FORBID_CONTENTS\", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });\n\t\tFORBID_TAGS = _resolveSetOption(cfg, \"FORBID_TAGS\", clone({}), { transform: transformCaseFunc });\n\t\tFORBID_ATTR = _resolveSetOption(cfg, \"FORBID_ATTR\", clone({}), { transform: transformCaseFunc });\n\t\tUSE_PROFILES = objectHasOwnProperty(cfg, \"USE_PROFILES\") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === \"object\" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;\n\t\tALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n\t\tALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n\t\tALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n\t\tALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n\t\tSAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n\t\tSAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;\n\t\tWHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n\t\tRETURN_DOM = cfg.RETURN_DOM || false;\n\t\tRETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n\t\tRETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n\t\tFORCE_BODY = cfg.FORCE_BODY || false;\n\t\tSANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n\t\tSANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n\t\tKEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n\t\tIN_PLACE = cfg.IN_PLACE || false;\n\t\tIS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;\n\t\tNAMESPACE = typeof cfg.NAMESPACE === \"string\" ? cfg.NAMESPACE : HTML_NAMESPACE;\n\t\tMATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"MATHML_TEXT_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS));\n\t\tHTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"HTML_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));\n\t\tconst customElementHandling = _resolveObjectOption(cfg, \"CUSTOM_ELEMENT_HANDLING\", () => create(null));\n\t\tCUSTOM_ELEMENT_HANDLING = create(null);\n\t\tif (objectHasOwnProperty(customElementHandling, \"tagNameCheck\") && isRegexOrFunction(customElementHandling.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"attributeNameCheck\") && isRegexOrFunction(customElementHandling.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"allowCustomizedBuiltInElements\") && typeof customElementHandling.allowCustomizedBuiltInElements === \"boolean\") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;\n\t\tseal(CUSTOM_ELEMENT_HANDLING);\n\t\tif (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false;\n\t\tif (RETURN_DOM_FRAGMENT) RETURN_DOM = true;\n\t\tif (USE_PROFILES) {\n\t\t\tALLOWED_TAGS = addToSet({}, text);\n\t\t\tALLOWED_ATTR = create(null);\n\t\t\tif (USE_PROFILES.html === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, html$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, html);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svg === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svg$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svgFilters === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svgFilters);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.mathMl === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, mathMl$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, mathMl);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t}\n\t\tEXTRA_ELEMENT_HANDLING.tagCheck = null;\n\t\tEXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\t\tif (objectHasOwnProperty(cfg, \"ADD_TAGS\")) {\n\t\t\tif (typeof cfg.ADD_TAGS === \"function\") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n\t\t\telse if (arrayIsArray(cfg.ADD_TAGS)) {\n\t\t\t\tif (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\t\t\taddToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_ATTR\")) {\n\t\t\tif (typeof cfg.ADD_ATTR === \"function\") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n\t\t\telse if (arrayIsArray(cfg.ADD_ATTR)) {\n\t\t\t\tif (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\t\t\taddToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_FORBID_CONTENTS\") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {\n\t\t\tif (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);\n\t\t\taddToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n\t\t}\n\t\tif (KEEP_CONTENT) ALLOWED_TAGS[\"#text\"] = true;\n\t\tif (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS, [\n\t\t\t\"html\",\n\t\t\t\"head\",\n\t\t\t\"body\"\n\t\t]);\n\t\tif (ALLOWED_TAGS.table) {\n\t\t\taddToSet(ALLOWED_TAGS, [\"tbody\"]);\n\t\t\tdelete FORBID_TAGS.tbody;\n\t\t}\n\t\tif (cfg.TRUSTED_TYPES_POLICY) {\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createHTML\\\" hook.\");\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createScriptURL\\\" hook.\");\n\t\t\tconst previousTrustedTypesPolicy = trustedTypesPolicy;\n\t\t\ttrustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\t\t\ttry {\n\t\t\t\temptyHTML = _createTrustedHTML(\"\");\n\t\t\t} catch (error) {\n\t\t\t\ttrustedTypesPolicy = previousTrustedTypesPolicy;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t} else if (cfg.TRUSTED_TYPES_POLICY === null) {\n\t\t\ttrustedTypesPolicy = void 0;\n\t\t\temptyHTML = \"\";\n\t\t} else {\n\t\t\tif (trustedTypesPolicy === void 0) trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n\t\t\tif (trustedTypesPolicy && typeof emptyHTML === \"string\") emptyHTML = _createTrustedHTML(\"\");\n\t\t}\n\t\tif (freeze) freeze(cfg);\n\t\tCONFIG = cfg;\n\t};\n\tconst ALL_SVG_TAGS = addToSet({}, [\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...svgDisallowed\n\t]);\n\tconst ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\t/**\n\t* Namespace rules for an element in the SVG namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkSvgNamespace = function _checkSvgNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"svg\";\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE) return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n\t\treturn Boolean(ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the MathML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkMathMlNamespace = function _checkMathMlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"math\";\n\t\tif (parent.namespaceURI === SVG_NAMESPACE) return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n\t\treturn Boolean(ALL_MATHML_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the HTML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkHtmlNamespace = function _checkHtmlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false;\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false;\n\t\treturn !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* @param element a DOM element whose namespace is being checked\n\t* @returns Return false if the element has a\n\t*  namespace that a spec-compliant parser would never\n\t*  return. Return true otherwise.\n\t*/\n\tconst _checkValidNamespace = function _checkValidNamespace(element) {\n\t\tconst elementNamespace = _readNamespaceURI(element);\n\t\tconst tagName = stringToLowerCase(_readNodeName(element));\n\t\tconst parentNode = getParentNode(element);\n\t\tlet parent;\n\t\tlet parentTagName;\n\t\tif (parentNode && _readNodeType(parentNode) === NODE_TYPE.element) {\n\t\t\tparent = { namespaceURI: _readNamespaceURI(parentNode) };\n\t\t\tparentTagName = stringToLowerCase(_readNodeName(parentNode));\n\t\t} else {\n\t\t\tparent = { namespaceURI: NAMESPACE };\n\t\t\tparentTagName = \"template\";\n\t\t}\n\t\tif (!ALLOWED_NAMESPACES[elementNamespace]) return false;\n\t\tif (elementNamespace === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);\n\t\tif (elementNamespace === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);\n\t\tif (elementNamespace === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && ALLOWED_NAMESPACES[elementNamespace]) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* _forceRemove\n\t*\n\t* @param node a DOM node\n\t*/\n\tconst _forceRemove = function _forceRemove(node) {\n\t\tarrayPush(DOMPurify.removed, { element: node });\n\t\ttry {\n\t\t\tgetParentNode(node).removeChild(node);\n\t\t} catch (_) {\n\t\t\tremove(node);\n\t\t\tif (!getParentNode(node)) throw typeErrorCreate(\"a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place\");\n\t\t}\n\t};\n\t/**\n\t* _stripAttributeNode\n\t*\n\t* Remove a single Attr node case/namespace-exactly on an attribute-teardown\n\t* path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n\t* HTML element in an HTML document and so silently misses a case-preserved\n\t* handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n\t* _removeAttribute() was fixed for, which a name-based call would reintroduce\n\t* on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n\t* record into DOMPurify.removed: the neutralize passes intentionally do not\n\t* book-keep. A clobbered/detached node falls back to best-effort name-based\n\t* removal.\n\t*\n\t* @param element the element to strip the attribute from\n\t* @param attribute the Attr node to remove\n\t* @param name the attribute's name, for the fallback path\n\t*/\n\tconst _stripAttributeNode = function _stripAttributeNode(element, attribute, name) {\n\t\ttry {\n\t\t\tremoveAttributeNode(element, attribute);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* Fail-closed teardown of an in-place root: strip every disallowed attribute\n\t* in the subtree first, so nothing armed is left behind, then remove all\n\t* children and the root's own attributes.\n\t*\n\t* @param root the in-place root to empty\n\t*/\n\tconst _neutralizeRoot = function _neutralizeRoot(root) {\n\t\t_neutralizeSubtree(root);\n\t\tconst childNodes = getChildNodes(root);\n\t\tif (childNodes) arrayForEach(arraySlice(childNodes), (child) => {\n\t\t\ttry {\n\t\t\t\tremove(child);\n\t\t\t} catch (_) {}\n\t\t});\n\t\tconst attributes = _readNodeType(root) === NODE_TYPE.element ? getAttributes(root) : null;\n\t\tif (attributes) for (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name === \"string\") _stripAttributeNode(root, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* Removes an attribute, preferably as its exact Attr node: name-based\n\t* removal lowercases the name in HTML documents and misses case-preserved\n\t* names, e.g. from imported XHTML.\n\t*\n\t* @param name an Attribute name\n\t* @param element a DOM node\n\t* @param attr the exact Attr node to remove, when the caller has it\n\t*/\n\tconst _removeAttribute = function _removeAttribute(name, element, attr) {\n\t\tif (!attr) try {\n\t\t\tattr = element.getAttributeNode(name);\n\t\t} catch (_) {\n\t\t\tattr = null;\n\t\t}\n\t\tarrayPush(DOMPurify.removed, {\n\t\t\tattribute: attr || null,\n\t\t\tfrom: element\n\t\t});\n\t\ttry {\n\t\t\tif (attr) removeAttributeNode(element, attr);\n\t\t\telse element.removeAttribute(name);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t\tif (name === \"is\") {\n\t\t\tif (RETURN_DOM || RETURN_DOM_FRAGMENT) try {\n\t\t\t\t_forceRemove(element);\n\t\t\t} catch (_) {}\n\t\t\telse try {\n\t\t\t\telement.setAttribute(name, \"\");\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* Removes every attribute the configuration does not allow. Used to\n\t* neutralize nodes discarded from an in-place tree.\n\t*\n\t* @param element the element to strip\n\t*/\n\tconst _stripDisallowedAttributes = function _stripDisallowedAttributes(element) {\n\t\tconst attributes = getAttributes(element);\n\t\tif (!attributes) return;\n\t\tfor (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name !== \"string\" || ALLOWED_ATTR[transformCaseFunc(name)]) continue;\n\t\t\t_stripAttributeNode(element, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* Iterative depth-first walk, so deep trees cannot overflow the call stack,\n\t* reading through the cached getters, so clobbering cannot hide children.\n\t* When `visit` returns false, the node's children are skipped. With\n\t* `intoShadow`, open shadow roots are walked after their host's children.\n\t*\n\t* @param root where to start\n\t* @param visit called for every node\n\t* @param intoShadow whether to enter open shadow roots\n\t*/\n\tconst _walkTree = function _walkTree(root, visit) {\n\t\tlet intoShadow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n\t\tconst stack = [root];\n\t\twhile (stack.length > 0) {\n\t\t\tconst node = stack.pop();\n\t\t\tif (visit(node) === false) continue;\n\t\t\tif (intoShadow && _readNodeType(node) === NODE_TYPE.element) {\n\t\t\t\tconst shadowRoot = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(shadowRoot)) stack.push(shadowRoot);\n\t\t\t}\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);\n\t\t}\n\t};\n\t/**\n\t* Strips disallowed attributes from every element of a discarded subtree,\n\t* so a handler that is already queued (a loading image) cannot fire.\n\t*\n\t* @param root the root of a removed subtree\n\t*/\n\tconst _neutralizeSubtree = function _neutralizeSubtree(root) {\n\t\t_walkTree(root, (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);\n\t\t});\n\t};\n\t/**\n\t* All nodes under `root`, root first, including open shadow roots. Template\n\t* content is not entered, it is inert.\n\t*\n\t* @param root the in-place root\n\t* @return the nodes\n\t*/\n\tconst _collectLiveNodes = function _collectLiveNodes(root) {\n\t\tconst nodes = [];\n\t\t_walkTree(root, (node) => {\n\t\t\tnodes.push(node);\n\t\t}, true);\n\t\treturn nodes;\n\t};\n\t/**\n\t* Strips disallowed attributes from every element that was under the\n\t* in-place root when the call started and no longer is, whatever removed\n\t* or moved it.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t*/\n\tconst _neutralizeEscapedElements = function _neutralizeEscapedElements(root, before) {\n\t\tconst reachable = setCreate();\n\t\tarrayForEach(_collectLiveNodes(root), (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) setAdd(reachable, node);\n\t\t});\n\t\tarrayForEach(before, (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element && !setHas(reachable, node)) _stripDisallowedAttributes(node);\n\t\t});\n\t};\n\t/**\n\t* Neutralizes everything that left the in-place tree during the call: what\n\t* DOMPurify removed, and what hooks or custom elements removed or moved out.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t* @return true if the root itself was removed\n\t*/\n\tconst _neutralizeDiscarded = function _neutralizeDiscarded(root, before) {\n\t\tlet rootRemoved = false;\n\t\tarrayForEach(DOMPurify.removed, (entry) => {\n\t\t\tif (entry.element) {\n\t\t\t\trootRemoved = rootRemoved || entry.element === root;\n\t\t\t\t_neutralizeSubtree(entry.element);\n\t\t\t}\n\t\t});\n\t\t_neutralizeEscapedElements(root, before);\n\t\treturn rootRemoved;\n\t};\n\tconst MAX_UNVISITED_ROUNDS = 8;\n\t/**\n\t* The walk only moves forward, so a node moved to a position it already\n\t* passed is never visited. Give every original node that is still in the\n\t* tree but unvisited the normal treatment, hooks included. Nodes created\n\t* during the call are left alone. Fails closed if the tree keeps changing.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t*/\n\tconst _sanitizeUnvisitedNodes = function _sanitizeUnvisitedNodes(root, before) {\n\t\tconst visited = IN_PLACE_VISITED;\n\t\tlet original = null;\n\t\tconst getOriginal = () => {\n\t\t\tif (!original) {\n\t\t\t\toriginal = setCreate();\n\t\t\t\tarrayForEach(before, (beforeNode) => {\n\t\t\t\t\tsetAdd(original, beforeNode);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn original;\n\t\t};\n\t\tfor (let round = 0;; round++) {\n\t\t\tconst live = _collectLiveNodes(root);\n\t\t\tconst containers = [root];\n\t\t\tlet pending = false;\n\t\t\tarrayForEach(live, (node) => {\n\t\t\t\tif (_readNodeType(node) === NODE_TYPE.documentFragment) arrayPush(containers, node);\n\t\t\t\telse if (!pending && !setHas(visited, node)) pending = setHas(getOriginal(), node);\n\t\t\t});\n\t\t\tif (!pending) return;\n\t\t\tif (round >= MAX_UNVISITED_ROUNDS) throw typeErrorCreate(\"the tree kept changing during in-place sanitization; refusing to return it\");\n\t\t\tarrayForEach(containers, (container, index) => {\n\t\t\t\t_sanitizeUnvisitedIn(container, index > 0, root, getOriginal());\n\t\t\t});\n\t\t}\n\t};\n\t/**\n\t* One _sanitizeUnvisitedNodes pass over the root or an open shadow root.\n\t*\n\t* @param container the root or an open shadow root\n\t* @param inShadow whether container is a shadow root\n\t* @param root the in-place root\n\t* @param original the root's nodes collected before the walk, as a set\n\t*/\n\tconst _sanitizeUnvisitedIn = function _sanitizeUnvisitedIn(container, inShadow, root, original) {\n\t\tconst iterator = _createNodeIterator(container);\n\t\tlet node;\n\t\twhile (node = iterator.nextNode()) {\n\t\t\tif (!setHas(original, node) || setHas(IN_PLACE_VISITED, node)) continue;\n\t\t\tif (inShadow) _executeHooks(hooks.uponSanitizeShadowNode, node, null);\n\t\t\t_sanitizeElements(node, root);\n\t\t\t_sanitizeAttributes(node, root);\n\t\t\tif (_isDocumentFragment(node.content)) _sanitizeShadowDOM2(node.content);\n\t\t}\n\t};\n\t/**\n\t* Records that _sanitizeElements processed `node`. No-op outside IN_PLACE.\n\t*\n\t* @param node the node being processed\n\t*/\n\tconst _markVisited = function _markVisited(node) {\n\t\tif (IN_PLACE_VISITED) setAdd(IN_PLACE_VISITED, node);\n\t};\n\t/**\n\t* Patch-linkage attributes (declarative partial updates): `patchsrc`\n\t* always, `for` everywhere except on <label> and <output>. Gated on\n\t* SAFE_FOR_XML. Shared by the IN_PLACE pre-pass and _isValidAttribute.\n\t*\n\t* @param lcName the transformCaseFunc'd attribute name\n\t* @param lcTag the transformCaseFunc'd tag name of the carrying element\n\t* @return true if the attribute is patch linkage and must be dropped\n\t*/\n\tconst _isPatchLinkageAttribute = function _isPatchLinkageAttribute(lcName, lcTag) {\n\t\tif (!SAFE_FOR_XML) return false;\n\t\tif (lcName === \"patchsrc\") return true;\n\t\treturn lcName === \"for\" && lcTag !== \"label\" && lcTag !== \"output\";\n\t};\n\t/**\n\t* IN_PLACE pre-pass: sever all patch linkage before the walk, so no patch\n\t* can fire mid-walk into a part of the tree the walker already passed.\n\t* Removes range markers (processing instructions, comments with markup)\n\t* and strips linkage attributes. It cannot undo a patch that already fired.\n\t*\n\t* TODO: if the shipped feature can patch through `for` on <label>/<output>,\n\t* drop that pair here too (see test/declarative-patch-probe.html).\n\t*\n\t* @param root the in-place root to sweep\n\t*/\n\tconst _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {\n\t\tif (!SAFE_FOR_XML) return;\n\t\t_walkTree(root, (node) => {\n\t\t\tconst nodeType = _readNodeType(node);\n\t\t\tif (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {\n\t\t\t\ttry {\n\t\t\t\t\tremove(node);\n\t\t\t\t} catch (_) {}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (nodeType === NODE_TYPE.element) {\n\t\t\t\tconst element = node;\n\t\t\t\tconst lcTag = transformCaseFunc(_readNodeName(node));\n\t\t\t\ttry {\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"patchsrc\")) element.removeAttribute(\"patchsrc\");\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"for\") && _isPatchLinkageAttribute(\"for\", lcTag)) element.removeAttribute(\"for\");\n\t\t\t\t} catch (_) {}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t};\n\t/**\n\t* _initDocument\n\t*\n\t* @param dirty - a string of dirty markup\n\t* @return a DOM, filled with the dirty markup\n\t*/\n\tconst _initDocument = function _initDocument(dirty) {\n\t\tlet doc = null;\n\t\tlet leadingWhitespace = null;\n\t\tif (FORCE_BODY) dirty = \"<remove></remove>\" + dirty;\n\t\telse {\n\t\t\tconst matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n\t\t\tleadingWhitespace = matches && matches[0];\n\t\t}\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && NAMESPACE === HTML_NAMESPACE) dirty = \"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\"><head></head><body>\" + dirty + \"</body></html>\";\n\t\tconst dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n\t\tif (NAMESPACE === HTML_NAMESPACE) try {\n\t\t\tdoc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n\t\t} catch (_) {}\n\t\tif (!doc || !doc.documentElement) {\n\t\t\tdoc = implementation.createDocument(NAMESPACE, \"template\", null);\n\t\t\ttry {\n\t\t\t\tdoc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n\t\t\t} catch (_) {}\n\t\t}\n\t\tconst body = doc.body || doc.documentElement;\n\t\tif (dirty && leadingWhitespace) body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n\t\tif (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n\t\treturn WHOLE_DOCUMENT ? doc.documentElement : body;\n\t};\n\t/**\n\t* Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n\t*\n\t* @param root The root element or node to start traversing on.\n\t* @return The created NodeIterator\n\t*/\n\tconst _createNodeIterator = function _createNodeIterator(root) {\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n\t\treturn createNodeIterator.call(doc || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n\t};\n\t/**\n\t* Replace template expression syntax (mustache, ERB, template\n\t* literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n\t* sites. Order matters: mustache, then ERB, then template literal.\n\t*\n\t* @param value the string to scrub\n\t* @returns the scrubbed string\n\t*/\n\tconst _stripTemplateExpressions = function _stripTemplateExpressions(value) {\n\t\tvalue = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, ERB_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, TMPLIT_EXPR$1, \" \");\n\t\treturn value;\n\t};\n\t/**\n\t* Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n\t* character data of an element subtree. Used as the final safety net for\n\t* SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n\t* which only form after text-node normalization (e.g. fragments split across\n\t* stripped elements) cannot survive into a template-evaluating framework.\n\t*\n\t* Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n\t* in place rather than round-tripping through innerHTML. This preserves\n\t* descendant node references (important for IN_PLACE callers), avoids a\n\t* serialize/reparse cycle, and reads literal character data — which means\n\t* `<%...%>` in text content matches the ERB regex against its real bytes\n\t* instead of the HTML-entity-escaped form innerHTML would produce.\n\t*\n\t* Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n\t* attributes is performed during the per-node `_sanitizeAttributes` pass.\n\t*\n\t* @param node The root element whose character data should be scrubbed.\n\t*/\n\tconst _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {\n\t\tvar _node$querySelectorAl;\n\t\t_scrubOwnCharacterData(node);\n\t\tconst templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node, \"template\");\n\t\tif (templates) arrayForEach(templates, (tmpl) => {\n\t\t\tif (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);\n\t\t});\n\t};\n\t/**\n\t* _scrubOwnCharacterData\n\t*\n\t* Non-recursive core of _scrubTemplateExpressions: normalize `node` and\n\t* strip template expressions from its own character data only. Does not\n\t* enter <template>.content or attached shadow roots (NodeIterator never\n\t* does). Used by _sanitizeShadowDOM, where every nested template content\n\t* and shadow root is already walked - and therefore scrubbed - by its own\n\t* recursive _sanitizeShadowDOM call; recursing here as well would rescrub\n\t* each nested fragment once per ancestor, which is quadratic in nesting\n\t* depth.\n\t*\n\t* @param node The root whose own character data should be scrubbed.\n\t*/\n\tconst _scrubOwnCharacterData = function _scrubOwnCharacterData(node) {\n\t\tnode.normalize();\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n\t\tconst walker = createNodeIterator.call(doc || node, node, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);\n\t\tlet currentNode = walker.nextNode();\n\t\twhile (currentNode) {\n\t\t\tcurrentNode.data = _stripTemplateExpressions(currentNode.data);\n\t\t\tcurrentNode = walker.nextNode();\n\t\t}\n\t};\n\t/**\n\t* _isClobbered\n\t*\n\t* Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n\t* interface with [LegacyOverrideBuiltIns]; a descendant element with a\n\t* `name` attribute matching a prototype property shadows that property\n\t* on direct reads. We use this check at the IN_PLACE entry-point and\n\t* during attribute sanitization to refuse clobbered forms.\n\t*\n\t* @param element element to check for clobbering attacks\n\t* @return true if clobbered, false if safe\n\t*/\n\tconst _isClobbered = function _isClobbered(element) {\n\t\tconst realTagName = getNodeName ? getNodeName(element) : null;\n\t\tif (typeof realTagName !== \"string\") return false;\n\t\tif (transformCaseFunc(realTagName) !== \"form\") return false;\n\t\treturn typeof element.nodeName !== \"string\" || typeof element.textContent !== \"string\" || typeof element.removeChild !== \"function\" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== \"function\" || typeof element.removeAttributeNode !== \"function\" || typeof element.getAttributeNode !== \"function\" || typeof element.setAttribute !== \"function\" || typeof element.namespaceURI !== \"string\" || typeof element.insertBefore !== \"function\" || typeof element.hasChildNodes !== \"function\" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);\n\t};\n\t/**\n\t* Checks whether the given value is a DocumentFragment from any realm.\n\t*\n\t* The realm-independent replacement reads `nodeType` through the cached\n\t* Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n\t* constant (11). nodeType is a numeric value resolved from the node's\n\t* internal slot, identical across realms for the same kind of node.\n\t*\n\t* @param value object to check\n\t* @return true if value is a DocumentFragment-shaped node from any realm\n\t*/\n\tconst _isDocumentFragment = function _isDocumentFragment(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn getNodeType(value) === NODE_TYPE.documentFragment;\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* Checks whether the given object is a DOM node, including nodes that\n\t* originate from a different window/realm (e.g. an iframe's\n\t* contentDocument). The previous `value instanceof Node` check was\n\t* realm-bound: nodes from a different window failed it, causing\n\t* sanitize() to silently stringify them and reset IN_PLACE to false,\n\t* returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n\t*\n\t* @param value object to check whether it's a DOM node\n\t* @return true if value is a DOM node from any realm\n\t*/\n\tconst _isNode = function _isNode(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn typeof getNodeType(value) === \"number\";\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\tfunction _executeHooks(hooks, currentNode, data) {\n\t\tif (hooks.length === 0) return;\n\t\tarrayForEach(hooks, (hook) => {\n\t\t\thook.call(DOMPurify, currentNode, data, CONFIG);\n\t\t});\n\t}\n\t/**\n\t* Structural-threat checks that condemn a node regardless of the\n\t* allowlists: mXSS via namespace confusion, risky CSS construction,\n\t* processing instructions, markup-bearing comments. Pure predicate;\n\t* the caller removes. Check order is load-bearing.\n\t*\n\t* @param currentNode the node to inspect\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node must be removed\n\t*/\n\tconst _isUnsafeNode = function _isUnsafeNode(currentNode, tagName) {\n\t\tif (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) return true;\n\t\tif (SAFE_FOR_XML && LITERAL_TEXT_ELEMENTS[tagName] && _readNodeType(currentNode) === NODE_TYPE.element && _readNamespaceURI(currentNode) === HTML_NAMESPACE && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === \"string\" && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent))) return true;\n\t\tif (currentNode.nodeType === NODE_TYPE.processingInstruction) return true;\n\t\tif (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n\t* function, per the validation in _parseConfig) against a name.\n\t* Additional arguments are forwarded to predicate functions - the\n\t* attributeNameCheck predicate receives the tag name as its second\n\t* argument. A null/absent check never matches.\n\t*\n\t* @param check the configured tagNameCheck / attributeNameCheck value\n\t* @param name the name to test\n\t* @param args extra arguments forwarded to a predicate function\n\t* @return true if the check matches the name\n\t*/\n\tconst _matchesNameCheck = function _matchesNameCheck(check, name) {\n\t\tif (check instanceof RegExp) return regExpTest(check, name);\n\t\tif (check instanceof Function) {\n\t\t\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\t\t\treturn Boolean(check(name, ...args));\n\t\t}\n\t\treturn false;\n\t};\n\t/**\n\t* Handle a node whose tag is forbidden or not allowlisted: keep\n\t* allowed custom elements (false return exits _sanitizeElements\n\t* early - the namespace and fallback-tag removal checks are\n\t* intentionally skipped for kept custom elements), else hoist\n\t* content per KEEP_CONTENT and remove.\n\t*\n\t* A kept custom element is the ONLY case in which this function\n\t* returns false, so the caller uses that return value to run the\n\t* afterSanitizeElements hook on the kept element and keep the\n\t* element-hook lifecycle consistent with normal allowlisted\n\t* elements (GHSA-c2j3-45gr-mqc4).\n\t*\n\t* @param currentNode the disallowed node\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node was removed, false if kept\n\t*/\n\tconst _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {\n\t\tif (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n\t\tif (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && !FORBID_CONTENTS[stringToLowerCase(tagName)]) {\n\t\t\tconst parentNode = getParentNode(currentNode);\n\t\t\tconst childNodes = getChildNodes(currentNode);\n\t\t\tif (childNodes && parentNode) {\n\t\t\t\tconst childCount = childNodes.length;\n\t\t\t\tfor (let i = childCount - 1; i >= 0; --i) {\n\t\t\t\t\tconst hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];\n\t\t\t\t\tparentNode.insertBefore(hoisted, getNextSibling(currentNode));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_forceRemove(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* Fork a hook-mutable allowlist off its shared binding the first time a\n\t* (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n\t* hook cannot widen the per-instance default or the setConfig binding by\n\t* reference and leak past the call. Returns the set unchanged once it is\n\t* already call-local, so repeated calls across elements are idempotent.\n\t*\n\t* @param hookList the uponSanitize* hook array for this event\n\t* @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n\t* @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n\t* @param setConfigSet the captured setConfig() binding, or null\n\t* @return a call-local clone if a hook is present and set is still shared,\n\t*   else set unchanged\n\t*/\n\tconst _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {\n\t\tif (hookList.length === 0) return set;\n\t\treturn set === defaultSet || set === setConfigSet ? clone(set) : set;\n\t};\n\t/**\n\t* A hook may have detached the node it was called for. If so, treat it as\n\t* removed and stop processing it; the walk root is exempt. On the IN_PLACE\n\t* path the detached subtree is neutralized right away.\n\t*\n\t* @param currentNode the node a hook may have detached\n\t* @param root the current walk root\n\t* @return true if the node was detached\n\t*/\n\tconst _handleHookDetachedNode = function _handleHookDetachedNode(currentNode, root) {\n\t\tif (currentNode === root || getParentNode(currentNode) !== null) return false;\n\t\tif (IN_PLACE) _neutralizeSubtree(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* _sanitizeElements\n\t*\n\t* @protect nodeName\n\t* @protect textContent\n\t* @protect removeChild\n\t* @param currentNode to check for permission to exist\n\t* @return true if node was killed, false if left alive\n\t*/\n\tconst _sanitizeElements = function _sanitizeElements(currentNode, root) {\n\t\t_markVisited(currentNode);\n\t\t_executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isClobbered(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tconst tagName = transformCaseFunc(_readNodeName(currentNode));\n\t\tALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);\n\t\t_executeHooks(hooks.uponSanitizeElement, currentNode, {\n\t\t\ttagName,\n\t\t\tallowedTags: ALLOWED_TAGS\n\t\t});\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isUnsafeNode(currentNode, tagName)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {\n\t\t\tconst removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n\t\t\tif (removed === false) {\n\t\t\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\t\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\t\t}\n\t\t\treturn removed;\n\t\t}\n\t\tif (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif ((tagName === \"noscript\" || tagName === \"noembed\" || tagName === \"noframes\") && regExpTest(FALLBACK_TAG_CLOSE, currentNode.innerHTML)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n\t\t\tconst content = _stripTemplateExpressions(currentNode.textContent);\n\t\t\tif (currentNode.textContent !== content) {\n\t\t\t\tarrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n\t\t\t\tcurrentNode.textContent = content;\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\treturn _handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _isValidAttribute\n\t*\n\t* @param lcTag Lowercase tag name of containing element.\n\t* @param lcName Lowercase attribute name.\n\t* @param value Attribute value.\n\t* @return Returns true if `value` is valid, otherwise false.\n\t*/\n\tconst _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n\t\tif (FORBID_ATTR[lcName]) return false;\n\t\tif (_isPatchLinkageAttribute(lcName, lcTag)) return false;\n\t\tif (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) return false;\n\t\tconst nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);\n\t\tif (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) return true;\n\t\tif (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) return true;\n\t\tif (!nameIsPermitted) return _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value);\n\t\tif (URI_SAFE_ATTRIBUTES[lcName]) return true;\n\t\tif (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\tif ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag]) return true;\n\t\tif (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\treturn !value;\n\t};\n\tconst RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"color-profile\",\n\t\t\"font-face\",\n\t\t\"font-face-format\",\n\t\t\"font-face-name\",\n\t\t\"font-face-src\",\n\t\t\"font-face-uri\",\n\t\t\"missing-glyph\"\n\t]);\n\t/**\n\t* _isBasicCustomElement\n\t* checks if at least one dash is included in tagName, and it's not the first char\n\t* for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n\t*\n\t* @param tagName name of the tag of the node to sanitize\n\t* @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n\t*/\n\tconst _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n\t\treturn !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);\n\t};\n\t/**\n\t* Wrap an attribute value in the matching Trusted Types object when\n\t* the active policy requires it. Namespaced attributes pass through\n\t* unchanged (no TT support yet, see\n\t* https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n\t*\n\t* @param lcTag lowercase tag name of the containing element\n\t* @param lcName lowercase attribute name\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the attribute value to wrap\n\t* @return the value, wrapped when Trusted Types demand it\n\t*/\n\tconst _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value) {\n\t\tif (trustedTypesPolicy && typeof trustedTypes === \"object\" && typeof trustedTypes.getAttributeType === \"function\" && !namespaceURI) switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n\t\t\tcase \"TrustedHTML\": return _createTrustedHTML(value);\n\t\t\tcase \"TrustedScriptURL\": return _createTrustedScriptURL(value);\n\t\t}\n\t\treturn value;\n\t};\n\t/**\n\t* Write a modified attribute value back onto the element. On\n\t* success, re-probe for clobbering introduced by the new value and\n\t* remove the element when found; otherwise, when this writeback is the\n\t* recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n\t* removal entry that path recorded so it does not show as removed. On\n\t* failure, remove the attribute instead.\n\t*\n\t* Returns true only on a clean write (the value was set and the new value\n\t* introduced no clobbering). The caller uses that, together with its own\n\t* knowledge of whether this attribute pushed a DOMPurify.removed record, to\n\t* decide whether to pop that record. The pop must happen ONLY for the\n\t* named-prop remove-and-recreate; popping on any other value change (trim,\n\t* template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n\t* subtree-cleanup record and let that detached subtree keep a live event\n\t* handler through the IN_PLACE neutralization pass (SO-001).\n\t*\n\t* @param currentNode the element carrying the attribute\n\t* @param name the attribute name as present on the element\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the new attribute value\n\t* @return true if the value was written without introducing clobbering\n\t*/\n\tconst _setAttributeValue = function _setAttributeValue(currentNode, name, namespaceURI, value) {\n\t\ttry {\n\t\t\tif (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value);\n\t\t\telse currentNode.setAttribute(name, value);\n\t\t\tif (_isClobbered(currentNode)) {\n\t\t\t\t_forceRemove(currentNode);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (_) {\n\t\t\t_removeAttribute(name, currentNode);\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* _isUnsafeAttributeValue\n\t*\n\t* Value-based attribute checks that the attribute walk applies before any\n\t* hook can force-keep an attribute, shared with the public\n\t* isValidAttribute() so that it never approves a value sanitize() would\n\t* strip.\n\t*\n\t* @param name the attribute name as found on the node (case preserved)\n\t* @param value the attribute value\n\t* @returns true if the attribute must be removed because of its value\n\t*/\n\tconst _isUnsafeAttributeValue = function _isUnsafeAttributeValue(name, value) {\n\t\tif (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) return true;\n\t\treturn stringToLowerCase(name) === \"attributename\" && stringMatch(value, \"href\") !== null;\n\t};\n\t/**\n\t* _sanitizeAttributes\n\t*\n\t* @protect attributes\n\t* @protect nodeName\n\t* @protect removeAttribute\n\t* @protect setAttribute\n\t*\n\t* @param currentNode to sanitize\n\t* @param root the current walk root\n\t*/\n\tconst _sanitizeAttributes = function _sanitizeAttributes(currentNode, root) {\n\t\t_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return;\n\t\tconst attributes = currentNode.attributes;\n\t\tif (!attributes || _isClobbered(currentNode)) return;\n\t\tALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);\n\t\tconst hookEvent = {\n\t\t\tattrName: \"\",\n\t\t\tattrValue: \"\",\n\t\t\tkeepAttr: true,\n\t\t\tallowedAttributes: ALLOWED_ATTR,\n\t\t\tforceKeepAttr: void 0\n\t\t};\n\t\tlet l = attributes.length;\n\t\tconst lcTag = transformCaseFunc(currentNode.nodeName);\n\t\twhile (l--) {\n\t\t\tconst attr = attributes[l];\n\t\t\tconst name = attr.name, namespaceURI = attr.namespaceURI, attrValue = attr.value;\n\t\t\tconst lcName = transformCaseFunc(name);\n\t\t\tconst initValue = attrValue;\n\t\t\tlet value = name === \"value\" ? initValue : stringTrim(initValue);\n\t\t\tlet recreatedNamedProp = false;\n\t\t\thookEvent.attrName = lcName;\n\t\t\thookEvent.attrValue = value;\n\t\t\thookEvent.keepAttr = true;\n\t\t\thookEvent.forceKeepAttr = void 0;\n\t\t\t_executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n\t\t\tvalue = hookEvent.attrValue;\n\t\t\tif (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tvalue = SANITIZE_NAMED_PROPS_PREFIX + value;\n\t\t\t\trecreatedNamedProp = true;\n\t\t\t}\n\t\t\tif (_isUnsafeAttributeValue(name, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (hookEvent.forceKeepAttr) continue;\n\t\t\tif (!hookEvent.keepAttr) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (SAFE_FOR_TEMPLATES) value = _stripTemplateExpressions(value);\n\t\t\tif (!_isValidAttribute(lcTag, lcName, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalue = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\t\t\tif (value !== initValue) {\n\t\t\t\tif (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp) arrayPop(DOMPurify.removed);\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n\t\t_handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _sanitizeShadowDOM\n\t*\n\t* @param fragment to iterate over recursively\n\t*/\n\tconst _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {\n\t\tlet shadowNode = null;\n\t\tconst shadowIterator = _createNodeIterator(fragment);\n\t\t_executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\t\twhile (shadowNode = shadowIterator.nextNode()) {\n\t\t\t_executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\t\t\t_sanitizeElements(shadowNode, fragment);\n\t\t\t_sanitizeAttributes(shadowNode, fragment);\n\t\t\tif (_isDocumentFragment(shadowNode.content)) _sanitizeShadowDOM2(shadowNode.content);\n\t\t\tif (_readNodeType(shadowNode) === NODE_TYPE.element) {\n\t\t\t\tconst innerSr = getShadowRoot(shadowNode);\n\t\t\t\tif (_isDocumentFragment(innerSr)) {\n\t\t\t\t\t_sanitizeAttachedShadowRoots(innerSr);\n\t\t\t\t\t_sanitizeShadowDOM2(innerSr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES) _scrubOwnCharacterData(fragment);\n\t\t_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n\t};\n\t/**\n\t* Sanitizes every attached shadow root under `root`, since the node\n\t* iterator does not enter shadow trees. Needed for IN_PLACE input and for\n\t* DOM input whose clonable shadow roots were copied by importNode().\n\t*\n\t* @param root the subtree root to walk for attached shadow roots\n\t*/\n\tconst _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots(root) {\n\t\tconst stack = [{\n\t\t\tnode: root,\n\t\t\tshadow: null\n\t\t}];\n\t\twhile (stack.length > 0) {\n\t\t\tconst item = stack.pop();\n\t\t\tif (item.shadow) {\n\t\t\t\t_sanitizeShadowDOM2(item.shadow);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst node = item.node;\n\t\t\tconst isElement = _readNodeType(node) === NODE_TYPE.element;\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push({\n\t\t\t\tnode: childNodes[i],\n\t\t\t\tshadow: null\n\t\t\t});\n\t\t\tif (isElement) {\n\t\t\t\tconst rootName = getNodeName ? getNodeName(node) : null;\n\t\t\t\tif (typeof rootName === \"string\" && transformCaseFunc(rootName) === \"template\") {\n\t\t\t\t\tconst content = node.content;\n\t\t\t\t\tif (_isDocumentFragment(content)) stack.push({\n\t\t\t\t\t\tnode: content,\n\t\t\t\t\t\tshadow: null\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isElement) {\n\t\t\t\tconst sr = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(sr)) stack.push({\n\t\t\t\t\tnode: null,\n\t\t\t\t\tshadow: sr\n\t\t\t\t}, {\n\t\t\t\t\tnode: sr,\n\t\t\t\t\tshadow: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\tDOMPurify.sanitize = function(dirty) {\n\t\tlet cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\t\tlet body = null;\n\t\tlet importedNode = null;\n\t\tlet currentNode = null;\n\t\tlet returnNode = null;\n\t\tIS_EMPTY_INPUT = !dirty;\n\t\tif (IS_EMPTY_INPUT) dirty = \"<!-->\";\n\t\tif (typeof dirty !== \"string\" && !_isNode(dirty)) {\n\t\t\tdirty = stringifyValue(dirty);\n\t\t\tif (typeof dirty !== \"string\") throw typeErrorCreate(\"dirty is not a string, aborting\");\n\t\t}\n\t\tif (!DOMPurify.isSupported) return dirty;\n\t\tif (SET_CONFIG) {\n\t\t\tALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n\t\t\tALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n\t\t} else _parseConfig(cfg);\n\t\tif (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\tif (hooks.uponSanitizeAttribute.length > 0) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\tDOMPurify.removed = [];\n\t\tconst inPlace = IN_PLACE && typeof dirty !== \"string\" && _isNode(dirty);\n\t\tlet inPlaceNodes = [];\n\t\tconst outerVisited = IN_PLACE_VISITED;\n\t\tif (inPlace) {\n\t\t\t_neutralizePatchLinkage(dirty);\n\t\t\tconst nn = _readNodeName(dirty);\n\t\t\tif (typeof nn === \"string\") {\n\t\t\t\tconst tagName = transformCaseFunc(nn);\n\t\t\t\tif (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n\t\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t\tthrow typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_isClobbered(dirty)) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\tthrow typeErrorCreate(\"root node is clobbered and cannot be sanitized in-place\");\n\t\t\t}\n\t\t\tinPlaceNodes = _collectLiveNodes(dirty);\n\t\t\tIN_PLACE_VISITED = setCreate();\n\t\t} else if (_isNode(dirty)) {\n\t\t\tbody = _initDocument(\"<!---->\");\n\t\t\timportedNode = body.ownerDocument.importNode(dirty, true);\n\t\t\tif (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === \"BODY\") body = importedNode;\n\t\t\telse if (importedNode.nodeName === \"HTML\") body = importedNode;\n\t\t\telse body.appendChild(importedNode);\n\t\t\t_sanitizeAttachedShadowRoots(body);\n\t\t} else {\n\t\t\tif (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;\n\t\t\tbody = _initDocument(dirty);\n\t\t\tif (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n\t\t}\n\t\tif (body && FORCE_BODY) _forceRemove(body.firstChild);\n\t\tconst walkRoot = inPlace ? dirty : body;\n\t\ttry {\n\t\t\tif (inPlace) _sanitizeAttachedShadowRoots(dirty);\n\t\t\tconst nodeIterator = _createNodeIterator(walkRoot);\n\t\t\twhile (currentNode = nodeIterator.nextNode()) {\n\t\t\t\t_sanitizeElements(currentNode, walkRoot);\n\t\t\t\t_sanitizeAttributes(currentNode, walkRoot);\n\t\t\t\tif (_isDocumentFragment(currentNode.content)) _sanitizeShadowDOM2(currentNode.content);\n\t\t\t}\n\t\t\tif (inPlace) _sanitizeUnvisitedNodes(dirty, inPlaceNodes);\n\t\t} catch (error) {\n\t\t\tif (inPlace) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t_neutralizeDiscarded(dirty, inPlaceNodes);\n\t\t\t}\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tIN_PLACE_VISITED = outerVisited;\n\t\t}\n\t\tif (inPlace) {\n\t\t\tif (_neutralizeDiscarded(dirty, inPlaceNodes)) throw typeErrorCreate(\"a node selected for removal could not be safely returned; refusing to sanitize in place\");\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(dirty);\n\t\t\treturn dirty;\n\t\t}\n\t\tif (RETURN_DOM) {\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(body);\n\t\t\tif (RETURN_DOM_FRAGMENT) {\n\t\t\t\treturnNode = createDocumentFragment.call(body.ownerDocument);\n\t\t\t\twhile (body.firstChild) returnNode.appendChild(body.firstChild);\n\t\t\t} else returnNode = body;\n\t\t\tif (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true);\n\t\t\treturn returnNode;\n\t\t}\n\t\tlet serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\t\tif (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n\t\tif (SAFE_FOR_TEMPLATES) serializedHTML = _stripTemplateExpressions(serializedHTML);\n\t\treturn trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;\n\t};\n\tDOMPurify.setConfig = function() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\t_parseConfig(cfg);\n\t\tSET_CONFIG = true;\n\t\tSET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n\t\tSET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n\t};\n\tDOMPurify.clearConfig = function() {\n\t\tCONFIG = null;\n\t\tSET_CONFIG = false;\n\t\tSET_CONFIG_ALLOWED_TAGS = null;\n\t\tSET_CONFIG_ALLOWED_ATTR = null;\n\t\ttrustedTypesPolicy = defaultTrustedTypesPolicy;\n\t\temptyHTML = \"\";\n\t};\n\tDOMPurify.isValidAttribute = function(tag, attr, value) {\n\t\tif (!CONFIG) _parseConfig({});\n\t\tconst lcTag = transformCaseFunc(tag);\n\t\tconst lcName = transformCaseFunc(attr);\n\t\tif (typeof value === \"string\" && (_isUnsafeAttributeValue(attr, value) || !ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value))) return false;\n\t\treturn _isValidAttribute(lcTag, lcName, value);\n\t};\n\tDOMPurify.addHook = function(entryPoint, hookFunction) {\n\t\tif (typeof hookFunction !== \"function\") return;\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tarrayPush(hooks[entryPoint], hookFunction);\n\t};\n\tDOMPurify.removeHook = function(entryPoint, hookFunction) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tif (hookFunction !== void 0) {\n\t\t\tconst index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\t\t\treturn index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];\n\t\t}\n\t\treturn arrayPop(hooks[entryPoint]);\n\t};\n\tDOMPurify.removeHooks = function(entryPoint) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\thooks[entryPoint] = [];\n\t};\n\tDOMPurify.removeAllHooks = function() {\n\t\thooks = _createHooksMap();\n\t};\n\treturn DOMPurify;\n}\nvar purify_default = createDOMPurify();\nexport { purify_default as default };\n\n//# sourceMappingURL=purify.es.mjs.map"],"names":["s","g","c","e","queueMicrotask","t","document","i","WeakMap","Set","o","Array","m","Object","TypeError","cancelAnimationFrame","performance","requestAnimationFrame","WeakSet","Date","r","f","Number","Error","n","Promise","Symbol","Reflect","arguments","String","Boolean","BigInt","RegExp","a","console","window","Function","p"],"mappings":"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,AALlG,WACC,MAAM,AAAIS,UAAU,4IACrB,IAoLE,IAAM,EAAW,CAAK,CAAC,EAAE,CACnB,EAAQ,CAAK,CAAC,EAAE,CAClB,EAAqB,EAAQ,KAC5B,EAAa,GAAQ,CAAS,CAAC,EAAS,CAAG,AAjBlD,SAAoB,CAAK,EACxB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,MAAM,CAAE,IAAa,AAAC,EAAqB,EAAO,IAAQ,EAAK,CAAC,EAAM,CAAG,IAAG,EAC9G,OAAO,CACR,EAc6D,GACjD,GAAS,AAAiB,UAAjB,OAAO,GAAsB,EAAM,WAAW,GAAKD,OAAQ,CAAS,CAAC,EAAS,CAAG,EAAM,GACpG,CAAS,CAAC,EAAS,CAAG,EAE7B,CACA,OAAO,CACR,CAoCA,SAAS,EAAa,CAAM,CAAE,CAAI,EACjC,KAAO,AAAW,OAAX,GAAiB,CACvB,IAAM,EAAO,EAAyB,EAAQ,GAC9C,GAAI,EAAM,CACT,GAAI,EAAK,GAAG,CAAE,OAAO,EAAQ,EAAK,GAAG,EACrC,GAAI,AAAsB,YAAtB,OAAO,EAAK,KAAK,CAAiB,OAAO,EAAQ,EAAK,KAAK,CAChE,CACA,EAAS,EAAe,EACzB,CAIA,OAHA,WACC,OAAO,IACR,CAED,CA4BA,IAAM,EAAS,EAAO,CACrB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,MACA,EACK,EAAQ,EAAO,CACpB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,QACA,EACK,EAAa,EAAO,CACzB,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,EACK,EAAgB,EAAO,CAC5B,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,MACA,EACK,EAAW,EAAO,CACvB,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,cACA,EACK,EAAmB,EAAO,CAC/B,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,OACA,EACK,EAAO,EAAO,CAAC,QAAQ,EACvB,EAAO,EAAO,CACnB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,EACK,GAAM,EAAO,CAClB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,oBACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,iBACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,mBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,gBACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,aACA,EACK,GAAS,EAAO,CACrB,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,QACA,EACK,GAAM,EAAO,CAClB,aACA,SACA,cACA,YACA,cACA,EACK,GAAgB,EAAK,yBACrB,GAAW,EAAK,yBAChB,GAAc,EAAK,eACnB,GAAY,EAAK,gCACjB,GAAY,EAAK,kBACjB,GAAiB,EAAK,oGACtB,GAAoB,EAAK,yBACzB,GAAkB,EAAK,+DACvB,GAAe,EAAK,WACpB,GAAiB,EAAK,4BACtB,GAAuB,EAAK,YAC5B,GAAuB,EAAK,WAC5B,GAAqB,EAAK,+BAC1B,GAAmB,EAAK,QAexB,GAAwB,EAAO,EAAS,CAAC,EAAG,CACjD,QACA,SACA,MACA,SACA,UACA,WACA,YACA,WACA,GAYK,GAA4B,SAAmC,CAAY,CAAE,CAAiB,EACnG,GAAI,AAAwB,UAAxB,OAAO,GAA6B,AAAqC,YAArC,OAAO,EAAa,YAAY,CAAiB,OAAO,KAChG,IAAI,EAAS,KACP,EAAY,uBACd,IAAqB,EAAkB,YAAY,CAAC,IAAY,GAAS,EAAkB,YAAY,CAAC,EAAS,EACrH,IAAM,EAAa,YAAe,GAAS,IAAM,EAAS,EAAC,EAC3D,GAAI,CACH,OAAO,EAAa,YAAY,CAAC,EAAY,CAC5C,WAAW,GACH,EAER,gBAAgB,GACR,CAET,EACD,CAAE,MAAO,EAAG,CAEX,OADAqB,QA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"}