{"version":3,"file":"Hero.b1aa31ca.js","sources":["../../../../../../node_modules/svelte/src/runtime/internal/spread.js","../../../../../../src/lib/components/Bleed.svelte","../../../../../../src/lib/assets/icons/caution.svelte","../../../../../../src/lib/assets/icons/chevron-down.svelte","../../../../../../src/lib/assets/icons/chevron-left.svelte","../../../../../../src/lib/assets/icons/chevron-right.svelte","../../../../../../src/lib/assets/icons/chevron-up.svelte","../../../../../../src/lib/assets/icons/chevron-back-to-top.svelte","../../../../../../src/lib/assets/icons/check.svelte","../../../../../../src/lib/assets/icons/close.svelte","../../../../../../src/lib/assets/icons/confirm.svelte","../../../../../../src/lib/assets/icons/dollar.svelte","../../../../../../src/lib/assets/icons/download.svelte","../../../../../../src/lib/assets/icons/error.svelte","../../../../../../src/lib/assets/icons/euro.svelte","../../../../../../src/lib/assets/icons/external.svelte","../../../../../../src/lib/assets/icons/facebook.svelte","../../../../../../src/lib/assets/icons/favorite.svelte","../../../../../../src/lib/assets/icons/filter.svelte","../../../../../../src/lib/assets/icons/info.svelte","../../../../../../src/lib/assets/icons/instagram.svelte","../../../../../../src/lib/assets/icons/invisible.svelte","../../../../../../src/lib/assets/icons/link.svelte","../../../../../../src/lib/assets/icons/linkedin.svelte","../../../../../../src/lib/assets/icons/menu.svelte","../../../../../../src/lib/assets/icons/minus.svelte","../../../../../../src/lib/assets/icons/of-dark.svelte","../../../../../../src/lib/assets/icons/of.svelte","../../../../../../src/lib/assets/icons/plus.svelte","../../../../../../src/lib/assets/icons/pound.svelte","../../../../../../src/lib/assets/icons/store.svelte","../../../../../../src/lib/assets/icons/twitter.svelte","../../../../../../src/lib/assets/icons/visible.svelte","../../../../../../src/lib/assets/icons/yen.svelte","../../../../../../src/lib/assets/icons/youtube.svelte","../../../../../../src/lib/components/Icon.svelte","../../../../../../src/lib/utilities/url-helpers.js","../../../../../../src/lib/components/Button.svelte","../../../../../../src/lib/components/ExternalLinkLabel.svelte","../../../../../../node_modules/svelte/src/runtime/transition/index.js","../../../../../../node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/linkedom/esm/shared/symbols.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-html.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../../../../node_modules/entities/lib/esm/decode_codepoint.js","../../../../../../node_modules/entities/lib/esm/decode.js","../../../../../../node_modules/htmlparser2/lib/esm/Tokenizer.js","../../../../../../node_modules/htmlparser2/lib/esm/Parser.js","../../../../../../node_modules/domelementtype/lib/esm/index.js","../../../../../../node_modules/domhandler/lib/esm/node.js","../../../../../../node_modules/domhandler/lib/esm/index.js","../../../../../../node_modules/entities/lib/esm/escape.js","../../../../../../node_modules/dom-serializer/lib/esm/foreignNames.js","../../../../../../node_modules/dom-serializer/lib/esm/index.js","../../../../../../node_modules/domutils/lib/esm/stringify.js","../../../../../../node_modules/domutils/lib/esm/traversal.js","../../../../../../node_modules/domutils/lib/esm/manipulation.js","../../../../../../node_modules/domutils/lib/esm/querying.js","../../../../../../node_modules/domutils/lib/esm/legacy.js","../../../../../../node_modules/domutils/lib/esm/helpers.js","../../../../../../node_modules/domutils/lib/esm/feeds.js","../../../../../../node_modules/htmlparser2/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/constants.js","../../../../../../node_modules/linkedom/esm/shared/object.js","../../../../../../node_modules/linkedom/esm/shared/utils.js","../../../../../../node_modules/linkedom/esm/shared/shadow-roots.js","../../../../../../node_modules/linkedom/esm/interface/custom-element-registry.js","../../../../../../node_modules/linkedom/esm/shared/parse-from-string.js","../../../../../../node_modules/linkedom/esm/shared/register-html-class.js","../../../../../../__vite-browser-external","../../../../../../node_modules/linkedom/commonjs/perf_hooks.cjs","../../../../../../node_modules/linkedom/esm/shared/jsdon.js","../../../../../../node_modules/linkedom/esm/interface/mutation-observer.js","../../../../../../node_modules/linkedom/esm/shared/attributes.js","../../../../../../node_modules/linkedom/esm/interface/event-target.js","../../../../../../node_modules/linkedom/esm/interface/node-list.js","../../../../../../node_modules/linkedom/esm/interface/node.js","../../../../../../node_modules/linkedom/esm/interface/attr.js","../../../../../../node_modules/linkedom/esm/shared/node.js","../../../../../../node_modules/linkedom/esm/mixin/non-document-type-child-node.js","../../../../../../node_modules/linkedom/esm/mixin/child-node.js","../../../../../../node_modules/linkedom/esm/interface/character-data.js","../../../../../../node_modules/linkedom/esm/interface/cdata-section.js","../../../../../../node_modules/linkedom/esm/interface/comment.js","../../../../../../node_modules/boolbase/index.js","../../../../../../node_modules/css-what/lib/es/types.js","../../../../../../node_modules/css-what/lib/es/parse.js","../../../../../../node_modules/css-select/lib/esm/sort.js","../../../../../../node_modules/css-select/lib/esm/attributes.js","../../../../../../node_modules/nth-check/lib/esm/parse.js","../../../../../../node_modules/nth-check/lib/esm/compile.js","../../../../../../node_modules/nth-check/lib/esm/index.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/filters.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/index.js","../../../../../../node_modules/css-select/lib/esm/general.js","../../../../../../node_modules/css-select/lib/esm/compile.js","../../../../../../node_modules/css-select/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/matches.js","../../../../../../node_modules/linkedom/esm/shared/text-escaper.js","../../../../../../node_modules/linkedom/esm/interface/text.js","../../../../../../node_modules/linkedom/esm/mixin/parent-node.js","../../../../../../node_modules/linkedom/esm/mixin/non-element-parent-node.js","../../../../../../node_modules/linkedom/esm/interface/document-fragment.js","../../../../../../node_modules/linkedom/esm/interface/document-type.js","../../../../../../node_modules/linkedom/esm/mixin/inner-html.js","../../../../../../node_modules/uhyphen/esm/index.js","../../../../../../node_modules/linkedom/esm/dom/string-map.js","../../../../../../node_modules/linkedom/esm/dom/token-list.js","../../../../../../node_modules/linkedom/esm/interface/css-style-declaration.js","../../../../../../node_modules/linkedom/esm/interface/event.js","../../../../../../node_modules/linkedom/esm/interface/named-node-map.js","../../../../../../node_modules/linkedom/esm/interface/shadow-root.js","../../../../../../node_modules/linkedom/esm/interface/element.js","../../../../../../node_modules/linkedom/esm/svg/element.js","../../../../../../node_modules/linkedom/esm/shared/facades.js","../../../../../../node_modules/linkedom/esm/html/element.js","../../../../../../node_modules/linkedom/esm/html/template-element.js","../../../../../../node_modules/linkedom/esm/html/html-element.js","../../../../../../node_modules/linkedom/esm/html/text-element.js","../../../../../../node_modules/linkedom/esm/html/script-element.js","../../../../../../node_modules/linkedom/esm/html/frame-element.js","../../../../../../node_modules/linkedom/esm/html/i-frame-element.js","../../../../../../node_modules/linkedom/esm/html/object-element.js","../../../../../../node_modules/linkedom/esm/html/head-element.js","../../../../../../node_modules/linkedom/esm/html/body-element.js","../../../../../../node_modules/cssom/lib/StyleSheet.js","../../../../../../node_modules/cssom/lib/CSSRule.js","../../../../../../node_modules/cssom/lib/CSSStyleRule.js","../../../../../../node_modules/cssom/lib/CSSStyleSheet.js","../../../../../../node_modules/cssom/lib/MediaList.js","../../../../../../node_modules/cssom/lib/CSSImportRule.js","../../../../../../node_modules/cssom/lib/CSSGroupingRule.js","../../../../../../node_modules/cssom/lib/CSSConditionRule.js","../../../../../../node_modules/cssom/lib/CSSMediaRule.js","../../../../../../node_modules/cssom/lib/CSSSupportsRule.js","../../../../../../node_modules/cssom/lib/CSSFontFaceRule.js","../../../../../../node_modules/cssom/lib/CSSHostRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframeRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframesRule.js","../../../../../../node_modules/cssom/lib/CSSValue.js","../../../../../../node_modules/cssom/lib/CSSValueExpression.js","../../../../../../node_modules/cssom/lib/MatcherList.js","../../../../../../node_modules/cssom/lib/CSSDocumentRule.js","../../../../../../node_modules/cssom/lib/parse.js","../../../../../../node_modules/cssom/lib/CSSStyleDeclaration.js","../../../../../../node_modules/cssom/lib/clone.js","../../../../../../node_modules/cssom/lib/index.js","../../../../../../node_modules/linkedom/esm/html/style-element.js","../../../../../../node_modules/linkedom/esm/html/time-element.js","../../../../../../node_modules/linkedom/esm/html/field-set-element.js","../../../../../../node_modules/linkedom/esm/html/embed-element.js","../../../../../../node_modules/linkedom/esm/html/hr-element.js","../../../../../../node_modules/linkedom/esm/html/progress-element.js","../../../../../../node_modules/linkedom/esm/html/paragraph-element.js","../../../../../../node_modules/linkedom/esm/html/table-element.js","../../../../../../node_modules/linkedom/esm/html/frame-set-element.js","../../../../../../node_modules/linkedom/esm/html/li-element.js","../../../../../../node_modules/linkedom/esm/html/base-element.js","../../../../../../node_modules/linkedom/esm/html/data-list-element.js","../../../../../../node_modules/linkedom/esm/html/input-element.js","../../../../../../node_modules/linkedom/esm/html/param-element.js","../../../../../../node_modules/linkedom/esm/html/media-element.js","../../../../../../node_modules/linkedom/esm/html/audio-element.js","../../../../../../node_modules/linkedom/esm/html/heading-element.js","../../../../../../node_modules/linkedom/esm/html/directory-element.js","../../../../../../node_modules/linkedom/esm/html/quote-element.js","../../../../../../node_modules/linkedom/commonjs/canvas-shim.cjs","../../../../../../node_modules/linkedom/commonjs/canvas.cjs","../../../../../../node_modules/linkedom/esm/html/canvas-element.js","../../../../../../node_modules/linkedom/esm/html/legend-element.js","../../../../../../node_modules/linkedom/esm/html/option-element.js","../../../../../../node_modules/linkedom/esm/html/span-element.js","../../../../../../node_modules/linkedom/esm/html/meter-element.js","../../../../../../node_modules/linkedom/esm/html/video-element.js","../../../../../../node_modules/linkedom/esm/html/table-cell-element.js","../../../../../../node_modules/linkedom/esm/html/title-element.js","../../../../../../node_modules/linkedom/esm/html/output-element.js","../../../../../../node_modules/linkedom/esm/html/table-row-element.js","../../../../../../node_modules/linkedom/esm/html/data-element.js","../../../../../../node_modules/linkedom/esm/html/menu-element.js","../../../../../../node_modules/linkedom/esm/html/select-element.js","../../../../../../node_modules/linkedom/esm/html/br-element.js","../../../../../../node_modules/linkedom/esm/html/button-element.js","../../../../../../node_modules/linkedom/esm/html/map-element.js","../../../../../../node_modules/linkedom/esm/html/opt-group-element.js","../../../../../../node_modules/linkedom/esm/html/d-list-element.js","../../../../../../node_modules/linkedom/esm/html/text-area-element.js","../../../../../../node_modules/linkedom/esm/html/font-element.js","../../../../../../node_modules/linkedom/esm/html/div-element.js","../../../../../../node_modules/linkedom/esm/html/link-element.js","../../../../../../node_modules/linkedom/esm/html/slot-element.js","../../../../../../node_modules/linkedom/esm/html/form-element.js","../../../../../../node_modules/linkedom/esm/html/image-element.js","../../../../../../node_modules/linkedom/esm/html/pre-element.js","../../../../../../node_modules/linkedom/esm/html/u-list-element.js","../../../../../../node_modules/linkedom/esm/html/meta-element.js","../../../../../../node_modules/linkedom/esm/html/picture-element.js","../../../../../../node_modules/linkedom/esm/html/area-element.js","../../../../../../node_modules/linkedom/esm/html/o-list-element.js","../../../../../../node_modules/linkedom/esm/html/table-caption-element.js","../../../../../../node_modules/linkedom/esm/html/anchor-element.js","../../../../../../node_modules/linkedom/esm/html/label-element.js","../../../../../../node_modules/linkedom/esm/html/unknown-element.js","../../../../../../node_modules/linkedom/esm/html/mod-element.js","../../../../../../node_modules/linkedom/esm/html/details-element.js","../../../../../../node_modules/linkedom/esm/html/source-element.js","../../../../../../node_modules/linkedom/esm/html/track-element.js","../../../../../../node_modules/linkedom/esm/html/marquee-element.js","../../../../../../node_modules/linkedom/esm/shared/html-classes.js","../../../../../../node_modules/linkedom/esm/shared/mime.js","../../../../../../node_modules/linkedom/esm/interface/custom-event.js","../../../../../../node_modules/linkedom/esm/interface/input-event.js","../../../../../../node_modules/linkedom/esm/interface/image.js","../../../../../../node_modules/linkedom/esm/interface/range.js","../../../../../../node_modules/linkedom/esm/interface/tree-walker.js","../../../../../../node_modules/linkedom/esm/interface/document.js","../../../../../../node_modules/linkedom/esm/index.js","../../../../../../src/lib/utilities/dom-helpers.js","../../../../../../src/lib/components/Markdown.svelte","../../../../../../src/lib/components/Image.svelte","../../../../../../src/lib/contentTypes/ImageComponent.svelte","../../../../../../node_modules/dompurify/dist/purify.js","../../../../../../node_modules/isomorphic-dompurify/browser.js","../../../../../../src/lib/utilities/components/markdown.js","../../../../../../src/lib/utilities/components/image-helpers.js","../../../../../../src/lib/components/Heading.svelte","../../../../../../src/lib/islands/Components/SocialBar.svelte","../../../../../../node_modules/@lukeed/uuid/dist/index.mjs","../../../../../../src/lib/components/Island.svelte","../../../../../../src/lib/components/Page/PageTitle.svelte","../../../../../../src/lib/components/Eyebrow.svelte","../../../../../../src/lib/components/Hero/Hero.svelte"],"sourcesContent":["/** @returns {{}} */\nexport function get_spread_update(levels, updates) {\n\tconst update = {};\n\tconst to_null_out = {};\n\tconst accounted_for = { $$scope: 1 };\n\tlet i = levels.length;\n\twhile (i--) {\n\t\tconst o = levels[i];\n\t\tconst n = updates[i];\n\t\tif (n) {\n\t\t\tfor (const key in o) {\n\t\t\t\tif (!(key in n)) to_null_out[key] = 1;\n\t\t\t}\n\t\t\tfor (const key in n) {\n\t\t\t\tif (!accounted_for[key]) {\n\t\t\t\t\tupdate[key] = n[key];\n\t\t\t\t\taccounted_for[key] = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlevels[i] = n;\n\t\t} else {\n\t\t\tfor (const key in o) {\n\t\t\t\taccounted_for[key] = 1;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const key in to_null_out) {\n\t\tif (!(key in update)) update[key] = undefined;\n\t}\n\treturn update;\n}\n\nexport function get_spread_object(spread_props) {\n\treturn typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n","\n\n
\n \n \n
\n \n
\n
\n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n \n \n \n\n","\n\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","\n \n\n","\n \n \n\n","\n \n\n","\n \n\n","\n\n{#if inheritSize}\n \n{:else}\n \n{/if}\n","export function getUrlObject(url) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return null;\n }\n\n try {\n const urlObj = new URL(url);\n return urlObj;\n } catch (e) {\n console.warn(`can't convert \"${url}\" to URL object`);\n return null;\n }\n}\n\nexport function isExternalUrl(url, currentOrigin) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return false;\n }\n\n const urlObj = getUrlObject(url);\n if (urlObj) {\n const targetOrigin = urlObj.origin;\n if (\n targetOrigin === \"https://www.obama.org\" ||\n targetOrigin === \"http://www.obama.org\" ||\n targetOrigin === \"https://obama.org\"\n ) {\n return false;\n }\n return targetOrigin !== currentOrigin;\n }\n // Default to the link being external if we can't figure out the origin\n return true;\n}\n\n/*\n correctedUrl \n a) makes internal full links relative (So www.obama.org/about becomes /about, so sveltekit will render page on static build)\n b) adds trailing slash if not \n*/\nexport function correctedUrl(url) {\n let isExternal = isExternalUrl(url);\n if (!isExternal) {\n const urlObj = getUrlObject(url);\n if (urlObj) {\n url = urlObj.pathname;\n }\n }\n return isMissingTrailingSlash(url) ? `${url}/` : url;\n}\n\nexport function isNotStaticFile(url) {\n const types = [\".pdf\", \".mp4\", \".html\", \".jpg\", \".jpeg\", \".png\", \".csv\", \".zip\"];\n return !types.some((type) => url.includes(type));\n}\n\nexport function isRootRelative(url) {\n return url.startsWith(\"/\");\n}\n\nexport function hasNoTrailingSlash(url) {\n return !url.endsWith(\"/\") && !url.match(/(\\/)?#.*$/) && !url.match(/(\\/)?\\?.*$/);\n}\n\nexport function isMissingTrailingSlash(url) {\n return !!url && isNotStaticFile(url) && isRootRelative(url) && hasNoTrailingSlash(url);\n}\n","\n\n\n {\n dispatch(\"urlDispatch\", {\n url\n });\n }}\n class=\"{getVariantClasses()} {getSizeClasses()} {clazz}\"\n style={!disabled ? getRippleColors() : null}\n data-testid={testid}\n {...$$restProps}\n target={isExternal ? \"_blank\" : null}\n rel={isExternal ? \"noopener noreferrer\" : null}\n {id}\n>\n {#if !!icon?.type && icon?.leading}\n \n {/if}\n \n {#if !!icon?.type && icon?.trailing && (!isExternal || variant == \"donate\")}\n \n {/if}\n {#if url && isExternal && variant !== \"donate\"}\n \n {/if}\n\n\n\n","\n\n\n\n\n\n\n\n {#if text}\n {#if reducedText}\n \n {reducedText}\n \n {/if}\n \n {lastWord}\n \n \n \n {/if}\n\nOpens in a new tab\n\n\n\n","import { cubicOut, cubicInOut, linear } from '../easing/index.js';\nimport { assign, split_css_unit, is_function } from '../internal/index.js';\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => `${e[0].toUpperCase()}${e.slice(1)}`\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `` and ``.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map} */\n\tconst to_receive = new Map();\n\t/** @type {Map} */\n\tconst to_send = new Map();\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubicOut\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: is_function(duration) ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\tt + (1 - t) * dh\n\t\t\t});\n\t\t\t`\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map} items\n\t * @param {Map} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(other_node, node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","/**\n * marked v10.0.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n list.items[list.items.length - 1].text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^\\||\\| *$/g, '').split('|'),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
'\n                + (escaped ? code : escape(code, true))\n                + '
\\n';\n }\n return '
'\n            + (escaped ? code : escape(code, true))\n            + '
\\n';\n }\n blockquote(quote) {\n return `
\\n${quote}
\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"SpecialStartSequence\"] = 23] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 24] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 25] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // ` this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.options.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(callback, options, elementCallback) {\n const handler = new DomHandler((error) => callback(error, handler.root), options, elementCallback);\n return new Parser(handler, options);\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const CDATA_SECTION_NODE = 4;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_CDATA_SECTION = 8;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n","const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n","import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n","export const shadowRoots = new WeakMap;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n}\n","import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n let parsingCData = false;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) {\n if (parsingCData) {\n append(node, document.createCDATASection(text), active);\n } else {\n append(node, document.createTextNode(text), active);\n }\n },\n\n // #cdata\n oncdatastart() { parsingCData = true; },\n oncdataend() { parsingCData = false; },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n","export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n","export default {}","/* c8 ignore start */\ntry {\n const {performance} = require('perf_hooks');\n exports.performance = performance;\n}\ncatch (fallback) {\n exports.performance = {now() { return +new Date; }};\n}\n/* c8 ignore stop */\n","import {\n NODE_END,\n ATTRIBUTE_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n","import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, addedNodes, removedNodes, attributeName, oldValue) =>\n ({type, target, addedNodes, removedNodes, attributeName, oldValue});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n","import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n","// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n","// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n","// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n","import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, name, ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n return emptyAttributes.has(name) && !value ?\n name : `${name}=\"${value.replace(QUOTE, '"')}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n","import {\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n","// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n","// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n","// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n","import {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new CDATASection(ownerDocument, data);\n }\n\n toString() { return `<![CDATA[${this[VALUE]}]]>`; }\n}\n","import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.js.map","import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n","import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n","// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n CDATA_SECTION_NODE,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE | typeof CDATA_SECTION_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n","// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n","import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n","import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n","export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n","import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n","import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n","import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const self = this[PRIVATE];\n updateKeys(self);\n const keys = getKeys(self);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n","// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path;\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n","/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n","// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase,\n String\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n getBoundingClientRect() {\n return {\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n };\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n\n get slot() { return stringAttribute.get(this, 'slot'); }\n set slot(value) { stringAttribute.set(this, 'slot', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text != null)\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && attribute.value;\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n","import {Element} from '../interface/element.js';\nimport {String} from '../shared/utils.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n","import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {CDATASection as _CDATASection} from '../interface/cdata-section.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CDATASection,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n","import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() { this.dispatchEvent(new Event('click')); }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n","import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace(/></, `>${this.textContent}<`);\n }\n}\n","import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nexport class HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n","class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() {\n return null;\n }\n toDataURL() {\n return '';\n }\n}\n\nmodule.exports = {\n createCanvas: (width, height) => new Canvas(width, height),\n};\n","/* c8 ignore start */\ntry {\n module.exports = require('canvas');\n} catch (fallback) {\n module.exports = require('./canvas-shim.cjs');\n}\n/* c8 ignore stop */\n","import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href'); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n assign() {}\n\n assignedNodes(options) {\n const isNamedSlot = !!this.name;\n const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n let slottables;\n\n if (isNamedSlot) {\n slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n } else {\n slottables = [...hostChildNodes].filter(node => !node.slot);\n }\n\n if (options?.flatten) {\n const result = [];\n\n // Element and Text nodes are slottables. A slot can be a slottable.\n for (let slottable of slottables) {\n if (slottable.localName === 'slot') {\n result.push(...slottable.assignedNodes({ flatten: true }));\n } else {\n result.push(slottable);\n }\n }\n\n slottables = result;\n }\n\n // If no assigned nodes are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.childNodes];\n }\n\n assignedElements(options) {\n const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n // If no assigned elements are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.children];\n }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(decodeURI(stringAttribute.get(this, 'href'))); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(decodeURI(stringAttribute.get(this, 'download'))); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n","// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n","import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n","// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n // TODO: SVG elements should then create contextual fragments\n // that return SVG nodes\n selectNodeContents(node) {\n this.selectNode(node);\n this.commonAncestorContainer = node;\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const { commonAncestorContainer: doc } = this;\n const isSVG = 'ownerSVGElement' in doc;\n const document = isSVG ? doc.ownerDocument : doc;\n const template = document.createElement('template');\n template.innerHTML = html;\n let {content} = template;\n if (isSVG) {\n const childNodes = [...content.childNodes];\n content = document.createDocumentFragment();\n Object.setPrototypeOf(content, SVGElement.prototype);\n content.ownerSVGElement = document;\n for (const child of childNodes) {\n Object.setPrototypeOf(child, SVGElement.prototype);\n child.ownerSVGElement = document;\n content.appendChild(child);\n }\n }\n else\n this.selectNode(content);\n return content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n","import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_CDATA_SECTION,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n case CDATA_SECTION_NODE:\n return mask & SHOW_CDATA_SECTION;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n","import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {CDATASection} from './cdata-section.js'\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createCDATASection(data) { return new CDATASection(this, data); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n","import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n","import { parseHTML } from \"linkedom\";\n\n/**\n * @param { String } string\n * @return HTMLDocument\n */\nexport function createDocumentFromString(string) {\n const parser = parseHTML(string);\n return parser.document;\n}\n\n/**\n * creates an array of parent elements sorted from closest parent of node to furthest parent of node.\n * inclusive of the element matching `condition`\n *\n * @param { HTMLElement } node\n * @param { Function } condition\n * @returns { HTMLElement[] } array of parent elements\n */\n\nexport function parentsThrough(node, condition) {\n const breakOnCondition = condition && typeof condition == \"function\";\n\n let parent = node.parentNode;\n // Escape hatch for development mode\n\n const parents = [];\n while (parent && parent.tagName !== \"BODY\") {\n parents.push(parent);\n\n if (breakOnCondition && condition(parent)) {\n return parents;\n }\n if (parent.parentNode?.id === \"svelte\") {\n parent = parent.parentNode.parentNode;\n }\n parent = parent.parentNode;\n }\n return parents;\n}\n\n/**\n * receives a string and strips its non alphanumeric characters\n *\n * @param { String } text\n * @param { String } id\n * @return a lowercase alphanumeric string\n */\nexport function textToId(text) {\n const spaces = new RegExp(/\\s/g);\n const anythingButSpacesAndLetters = /[^\\sA-Za-z0-9]/g;\n const punctuationToStrip = new RegExp(anythingButSpacesAndLetters);\n const id = text?.toLowerCase().replace(punctuationToStrip, \"\").replace(spaces, \"-\");\n return id;\n}\n\nexport function hasData(onNode, key) {\n if (!onNode) {\n return false;\n }\n if (!onNode.dataset) {\n return false;\n }\n return onNode.dataset[key] !== undefined;\n}\n\nexport function copyElement({ element, elementType, textContent, id, rootNode = document }) {\n if (!elementType) {\n console.error(\"no elementType provided to copyElement\");\n return;\n }\n const newElement = rootNode.createElement(elementType);\n [...element.attributes].forEach(({ name, value }) => {\n newElement.setAttribute(name, value);\n });\n newElement.textContent = textContent;\n newElement.id = id;\n\n return newElement;\n}\n\nexport function clickOutside(element, callbackFunction) {\n function onClick(event) {\n if (!element.contains(event.target)) {\n callbackFunction(event);\n }\n }\n\n document.body.addEventListener(\"click\", onClick);\n\n return {\n update(newCallbackFunction) {\n callbackFunction = newCallbackFunction;\n },\n destroy() {\n document.body.removeEventListener(\"click\", onClick);\n }\n };\n}\n\nexport function elementIsFullyInViewport(element) {\n const elementRect = element.getBoundingClientRect();\n const headerOffset =\n document.documentElement.style.getPropertyValue(\"--scroll-header-padding\") ?? 0;\n return (\n elementRect.top >= parseInt(headerOffset) &&\n elementRect.left >= 0 &&\n elementRect.bottom <= window.innerHeight &&\n elementRect.right <= window.innerWidth\n );\n}\n","<script>\n import { marked } from \"marked\";\n import { renderSanitizedHTML } from \"$lib/utilities\";\n import { isExternalUrl, correctedUrl } from \"$lib/utilities/url-helpers\";\n import { textToId } from \"$lib/utilities/dom-helpers\";\n\n import ExternalLinkLabel from \"./ExternalLinkLabel.svelte\";\n // eslint-disable-next-line @ObamaFoundation/of-svelte/no-stores\n import { page } from \"$app/stores\";\n import { onMount } from \"svelte\";\n\n export let input;\n export let id;\n let clazz = \"\";\n export { clazz as class };\n\n let isExternal = false;\n\n let externalLinks = {};\n let origin;\n\n $: origin = $page.url?.origin;\n\n marked.use({\n extensions: [\n {\n name: \"strong\",\n renderer(token) {\n return `<span class=\"font-bold !p-0\">${token.text}</span>`;\n }\n },\n {\n name: \"link\",\n renderer(token) {\n let href = token.href;\n let text = token.text;\n isExternal = isExternalUrl(href, origin);\n let linkToRender = correctedUrl(href);\n\n if (isExternal) {\n const externalId = `markdown-link-${id}` || `markdown-link-${textToId(text)}`;\n externalLinks[externalId] = text;\n\n return `<a\n id=\"${externalId}\"\n class=\"btn-link !p-0 markdown-external no-underline center\"\n data-sveltekit-reload\n href=\"${linkToRender}\"\n aria-haspopup=\"false\"\n aria-expanded=\"false\"\n target=\"_blank\" \n rel=\"noopener noreferrer\"\n ></a>`;\n } else {\n return `<a\n id=\"${id}\"\n class=\"btn-link !p-0\"\n data-sveltekit-reload\n href=\"${linkToRender}\"\n >${text}</a>`;\n }\n }\n }\n ]\n });\n\n marked.Renderer.prototype.paragraph = (text) => {\n return `<p class='!p-0'>${text}</p>`;\n };\n\n let htmlText = renderSanitizedHTML(input);\n\n onMount(() => {\n Object.keys(externalLinks).forEach((l) => {\n let link = document.getElementById(l);\n if (link.classList.contains(\"markdown-external\")) {\n link.classList.remove(\"markdown-external\");\n\n new ExternalLinkLabel({\n target: link,\n props: { text: externalLinks[l], iconClass: \"!inline align-top\" }\n });\n }\n });\n });\n</script>\n\n{#if input}\n <div class={clazz} {id}>\n <!-- eslint-disable-next-line svelte/no-at-html-tags -->\n {@html htmlText}\n </div>\n{/if}\n","<script>\n import { getContext } from \"svelte\";\n import { fade } from \"svelte/transition\";\n import { buildSrc, srcSetFromWidths, sizesForBreakpoints } from \"$lib/utilities\";\n import Markdown from \"$lib/components/Markdown.svelte\";\n\n // Deprecated in favor of eagerload\n export const preload = false;\n\n // Required\n export let asset;\n export let alt;\n export let id;\n\n // With Defaults\n export let containerClass = \"\";\n export let containerElement = \"figure\";\n export let elementClass = \"\";\n export let caption = \"\";\n\n const ariaId = caption ? `img-${id}` : null;\n const childElement = containerElement === \"figure\" ? \"figcaption\" : \"div\";\n\n export let resizeParams = {};\n export let dimensions = {};\n\n // Responsive Images flags.\n export let eagerload = false;\n export let responsive = false;\n\n export let widthsAt;\n\n // Boolean used to ignore the Contentful Image API image resizing logic\n // Introduced to remove chromatic image flakiness caused by small differences in images\n export let ignoreContentfulImgResize = getContext(\"ignoreContentfulImgResize\");\n\n // A sensible array of widths for srcset.\n const srcsetWidths = [180, 360, 420, 720, 850, 1250, 1670, 3200];\n $: src = buildSrc(asset, resizeParams, ignoreContentfulImgResize);\n\n $: srcset =\n responsive && !ignoreContentfulImgResize\n ? srcSetFromWidths(asset?.fields?.file?.url, srcsetWidths, resizeParams)\n : undefined;\n const sizes = responsive ? sizesForBreakpoints(widthsAt) : undefined;\n</script>\n\n<svelte:element this={containerElement} class={containerClass} aria-labelledby={ariaId}>\n <img\n class={elementClass}\n {...dimensions}\n {src}\n {srcset}\n {sizes}\n {alt}\n loading={eagerload ? \"eager\" : \"lazy\"}\n in:fade\n />\n {#if caption}\n <svelte:element this={childElement} id={ariaId} class=\"pt-16 lg:pt-32 px-24 lg:px-72\">\n <div class=\"border-l-2 border-neutral-300 pl-24\">\n <Markdown input={caption} id=\"markdown-caption-${id}\" />\n </div>\n </svelte:element>\n {/if}\n</svelte:element>\n","<script>\n import { getContext } from \"svelte\";\n import Image from \"$lib/components/Image.svelte\";\n import { altTextToDisplay } from \"$lib/utilities\";\n\n export let containerClass = \"\";\n export let elementClass = \"rounded-5\";\n export let data;\n\n export let displayCaption = true;\n export let resizeParams = {};\n export let dimensions = {};\n\n // Deprecated in favor of eagerload\n export let preload = false;\n\n //Ordinarily we just use the context, but we need to override this\n //in some cases like featured images on our templates\n export let containerized = getContext(\"containerized\");\n\n // Image sizes (widths) for available breakpoints.\n // These can be set using any unit, but we recommend using vw (50vw, 100vw, etc.)\n // If you don't set these, the image will be full width at all breakpoints.\n export let lg = \"75vw\";\n export let md;\n export let sm;\n\n // Pass through following a more conventional naming convention\n export let eagerload = preload;\n // Responsive flag\n export let responsive = true;\n\n export let widthClass = \"\";\n // These don't do much other than provide the browser with\n // the correct aspect ratio for the image. But we allow\n // the user to override them if they want (e.g., if we do\n // some cropping via our image service)\n $: imageDimensions = {\n width: data.fields.imageAsset?.fields?.file?.details?.image?.width,\n height: data.fields.imageAsset?.fields?.file?.details?.image?.height,\n ...dimensions\n };\n\n $: widthClass = imageDimensions.width < 806 && !containerized ? \" md:max-w-806 mx-auto\" : \"\";\n\n export let altText = altTextToDisplay(data.fields.altText);\n altText = !data.fields?.imageIsDecorative ? altText : \"\";\n</script>\n\n<div class:embedded-content={!containerized} class:containerized-image={containerized}>\n <Image\n id={data.sys?.id}\n containerClass={`${containerClass} ${widthClass}`}\n {elementClass}\n asset={data.fields.imageAsset}\n alt={altText}\n caption={displayCaption ? data.fields.caption : null}\n {eagerload}\n {resizeParams}\n dimensions={imageDimensions}\n {responsive}\n widthsAt={{ lg, md, sm }}\n />\n</div>\n","/*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n } = Object;\n let {\n freeze,\n seal,\n create\n } = Object; // eslint-disable-line import/no-mutable-exports\n\n let {\n apply,\n construct\n } = typeof Reflect !== 'undefined' && Reflect;\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n }\n\n const arrayForEach = unapply(Array.prototype.forEach);\n const arrayPop = unapply(Array.prototype.pop);\n const arrayPush = unapply(Array.prototype.push);\n const stringToLowerCase = unapply(String.prototype.toLowerCase);\n const stringToString = unapply(String.prototype.toString);\n const stringMatch = unapply(String.prototype.match);\n const stringReplace = unapply(String.prototype.replace);\n const stringIndexOf = unapply(String.prototype.indexOf);\n const stringTrim = unapply(String.prototype.trim);\n const regExpTest = unapply(RegExp.prototype.test);\n const typeErrorCreate = unconstruct(TypeError);\n /**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n /**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\n\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n /**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\n\n\n function addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n\n while (l--) {\n let element = array[l];\n\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n /**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\n\n\n function clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n if (getOwnPropertyDescriptor(object, property) !== undefined) {\n newObject[property] = value;\n }\n }\n\n return newObject;\n }\n /**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\n\n function lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n\n const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n\n const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n const text = freeze(['#text']);\n\n const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n const DOCTYPE_NAME = seal(/^html$/i);\n\n var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n ERB_EXPR: ERB_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR,\n DATA_ATTR: DATA_ATTR,\n ARIA_ATTR: ARIA_ATTR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n DOCTYPE_NAME: DOCTYPE_NAME\n });\n\n const getGlobal = function getGlobal() {\n return 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 {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\n\n\n const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n const DOMPurify = root => createDOMPurify(root);\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '3.0.6';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n let SAFE_FOR_TEMPLATES = false;\n /* Decide if document with <html>... should be returned */\n\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [...text]);\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n } // Overwrite existing TrustedTypes policy.\n\n\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; // Sign local variables required by `sanitize`.\n\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n } // If creating the internal policy succeeded sign internal variables.\n\n\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n const ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n const ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n const _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param {Node} root The root element or node to start traversing on.\n * @return {NodeIterator} The created NodeIterator\n */\n\n\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n const _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param {Node} object object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n const _isNode = function _isNode(object) {\n return typeof Node === 'function' && object instanceof Node;\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n\n\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param {string} tagName name of the tag of the node to sanitize\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n\n\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n\n\n const lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} cfg object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n\n\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n }\n /* If we sanitized `dirty` in-place, return it. */\n\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {String} tag Tag name of containing element.\n * @param {String} attr Attribute name.\n * @param {String} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","module.exports = window.DOMPurify || (window.DOMPurify = require('dompurify').default || require('dompurify'));","import { parse } from \"marked\";\nimport DOMPurify from \"isomorphic-dompurify\";\n\nexport function renderSanitizedHTML(input) {\n if (!input) {\n return;\n }\n\n const rawHtml = parse(input);\n return DOMPurify.sanitize(rawHtml, { ADD_ATTR: [\"target\"] });\n}\n","const CONTENTFUL_API_DEFAULTS = {\n q: 75,\n w: 1014\n};\n\nexport function contentfulImageUrlFor(url, paramOverrides = {}) {\n if (!url) {\n throw new Error(\"Asset is missing a url\");\n }\n\n // default to `webp` except for pngs and svgs\n const fm = url.endsWith(\".png\") || url.endsWith(\".svg\") ? \"\" : \"webp\";\n\n const apiParams = { ...CONTENTFUL_API_DEFAULTS, fm, ...paramOverrides };\n\n const params = new URLSearchParams();\n\n for (const key of Object.keys(apiParams)) {\n params.set(key, apiParams[key]);\n }\n\n // this is an unfortunate necessity. For some reason the `size` property\n // is not available on the params object, so we spread it and check the length.\n if ([...params].length) {\n return `${url}?${params.toString()}`;\n } else {\n return url;\n }\n}\n\nexport function buildSrc(asset, resizeParams, ignoreContentfulImgResize) {\n const url = asset?.fields?.file?.url;\n if (!url) {\n return null;\n }\n\n if (ignoreContentfulImgResize || !url?.startsWith(\"//images.ctfassets.net\")) {\n return url;\n }\n\n return contentfulImageUrlFor(url, resizeParams);\n}\n\n// This function is used to generate the srcset attribute for an image\n// It takes an array integers representing the widths of each image in (real) pixels\n// and generates a srcset for each.\nexport function srcSetFromWidths(url, widths = [], paramOverrides = {}) {\n if (widths.length === 0) {\n return;\n }\n\n return widths\n .map((width) => `${contentfulImageUrlFor(url, { ...paramOverrides, w: width })} ${width}w`)\n .join(\",\\n\");\n}\n\n// These values are pulled directly from our tailwind config\n// in the .tailwind.config.cjs file\nconst SCREENS = {\n sm: \"360px\",\n md: \"834px\",\n lg: \"1366px\"\n};\n\nfunction sizeForMinWidth(minWidth, size) {\n return `(min-width: ${minWidth}) ${size}`;\n}\n\nexport function sizesForBreakpoints(sizes, breakpoints = SCREENS) {\n // If there are no sizes, or all sizes are 100vw, we don't need to specify\n if (!sizes) {\n return;\n }\n if (Object.keys(sizes).length === 0) {\n return;\n }\n if (Object.values(sizes).every((size) => !size || size === \"100vw\")) {\n return;\n }\n\n // We want to control the order here because the sizes are cascading\n // and we want to make sure the smallest size is last.\n const sizeAttr = [\"lg\", \"md\", \"sm\"].flatMap((size) => {\n const minWidth = breakpoints[size];\n const sizeForWidth = sizes[size];\n\n // Ignore missing values so we can respect the cascade\n // without needing to specify all sizes\n if (!minWidth || !sizeForWidth) {\n return [];\n }\n\n return sizeForMinWidth(minWidth, sizeForWidth);\n });\n\n // Add the default size (all screen sizes < sm)\n sizeAttr.push(\"100vw\");\n\n return sizeAttr.join(\", \");\n}\n\nexport function altTextToDisplay(altText) {\n const placeholderAltValues = [\n \"placeholder\",\n \"none\",\n \"alt text missing\",\n \"gray placeholder image for qa\",\n \"missing\"\n ];\n if (altText && !placeholderAltValues.includes(altText.toLowerCase())) {\n return altText;\n } else {\n return \"\";\n }\n}\n\nexport function getImageOrientation(asset) {\n const { height, width } = asset?.fields?.file?.details?.image || {};\n\n if (!height || !width) {\n return;\n }\n\n // if the difference between height and width is within 5%, treat as square\n return height > width\n ? (height - width) / width > 0.05\n ? \"portrait\"\n : \"square\"\n : (width - height) / height > 0.05\n ? \"landscape\"\n : \"square\";\n}\n","<script>\n /* eslint-disable no-console */\n import { textToId } from \"$lib/utilities/dom-helpers\";\n\n export let idOverride = \"\";\n export let text;\n let clazz = \"\";\n export { clazz as class };\n\n const id = idOverride || textToId(text);\n const classes = `focus:underline ${clazz} block`;\n</script>\n\n<!-- This element is replaced entirely on render -->\n<span data-heading data-testid=\"heading\" class={classes} {id} {...$$restProps}>\n {text}\n</span>\n","<script>\n import { onMount } from \"svelte\";\n import Icon from \"$lib/components/Icon.svelte\";\n\n let clazz;\n export { clazz as class };\n export let iconSpacingClass = \"gap-16\";\n\n export let shareButtonsLabel = \"Share\";\n export let shareText = \"I just checked this out! You should, too!\";\n\n export let overrideURL; //Used for testing; Facebook and LinkedIn error on iFrames and Localhost\n // When this text is changed, also update the socialShare.spec.js e2e test.\n\n let socials;\n onMount(() => {\n let currentURL = overrideURL || window.location.href;\n socials = {\n // When these URLs are changed, also update the socialShare.spec.js e2e test.\n Facebook: `https://www.facebook.com/sharer/sharer.php?u=${currentURL}&src=sdkpreparse`,\n LinkedIn: `https://www.linkedin.com/sharing/share-offsite/?url=${currentURL}`\n };\n });\n\n function openNewWindow(social, w = 312, h = 500) {\n const left = window.screen.width / 2 - w / 2 + w;\n const top = window.screen.height / 2 - h;\n\n let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=${w},height=${h},left=-${left},top=${top}`;\n window.open(socials[social], shareText, params);\n }\n\n const handleClick = (social) => () => openNewWindow(social);\n\n const handleKeydown = (social) => (e) => {\n if (e?.key == \"Enter\" || e?.key == \" \") {\n openNewWindow(social);\n }\n };\n\n const buttonClasses =\n \"text-black w-24 h-24 md:w-48 md:h-48 rounded-full border-2 bg-white hover:bg-neutral-100 generic-focus focus:border-none focus:drop-shadow-[0_2px_0_#98DDFB] flex flex-col\";\n</script>\n\n<div\n class={`flex flex-row items-center justify-center place-items-center gap-16 text-center ${clazz}`}\n>\n {#if shareButtonsLabel}\n <div class=\"text-black font-bold text-size-12\">{shareButtonsLabel}</div>\n {/if}\n\n {#if socials}\n <div class=\"flex {iconSpacingClass}\">\n {#each Object.keys(socials) as social}\n <button\n class={buttonClasses}\n aria-label=\"Share to {social}. Opens in a new window.\"\n on:click={handleClick(social)}\n on:keydown={handleKeydown(social)}\n >\n <Icon\n type={social.toLowerCase()}\n size=\"lg\"\n inheritSize\n class=\"pt-[15%] pb-[15%] mx-auto\"\n />\n </button>\n {/each}\n </div>\n {/if}\n</div>\n","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","<script>\n import { v4 as uuid } from \"@lukeed/uuid\";\n // eslint-disable-next-line @ObamaFoundation/of-svelte/no-browser\n import { browser } from \"$app/environment\";\n /**\n * The component you want to initialize\n * @type {new (args: { target: any; props?: any; }) => import('svelte').SvelteComponent}\n */\n export let component;\n /**\n * The name of the component. This will be used to build the island import.\n * @type {string}\n */\n export let name;\n\n /**\n * The props to set on the is-land element, e.g. { 'on:visible': true }\n */\n export let islandProps = {};\n const id = `island-${uuid()}`;\n const importPath = `/__islands/${name}.js`;\n // once we start client-side rendering, we don't want to initialize the island and import unnecessary code\n const renderIsland = !browser;\n const dataProps = JSON.stringify($$restProps);\n</script>\n\n<is-land {...islandProps} {id}>\n <svelte:component this={component} {...$$restProps} />\n {#if renderIsland}\n <template data-island>\n <!-- eslint-disable-next-line svelte/no-at-html-tags -->\n {@html `\n <script type=\"module\">\n import App from '${importPath}';\n let target = document.getElementById('${id}');\n if (target) {\n new App({\n target,\n props: '${dataProps}',\n hydrate: true\n });\n }\n </script>\n `}\n </template>\n {/if}\n</is-land>\n","<script context=\"module\">\n const BIG_TITLE_LENGTH_LIMIT = 25;\n const BIG_TITLE_WORD_LENGTH_LIMIT = 12;\n\n export function getPageHeadingClass(isCategoryPage, title) {\n const longTitle = title.length > BIG_TITLE_LENGTH_LIMIT;\n const containsLongWords = title.split(\" \").some((w) => w.length > BIG_TITLE_WORD_LENGTH_LIMIT);\n\n let typeStackClass = \"short-heading-1\";\n\n if (!isCategoryPage || longTitle) {\n typeStackClass = \"long-heading-1\";\n } else if (!longTitle && containsLongWords) {\n typeStackClass = \"long-heading-1 md:short-heading-1\";\n }\n return typeStackClass;\n }\n</script>\n\n<script>\n import { getContext } from \"svelte\";\n import Heading from \"../Heading.svelte\";\n\n export let title = \"\";\n\n const isCategoryPage = getContext(\"pageType\") === \"categoryPageTemplate\";\n\n let clazz = \"\";\n export { clazz as class };\n</script>\n\n<Heading\n class={`${getPageHeadingClass(isCategoryPage, title)} text-center text-neutral-900 ${clazz}`}\n text={title}\n/>\n","<script>\n export let content;\n export let link;\n\n let clazz;\n export { clazz as class };\n</script>\n\n<p data-testid=\"eyebrow\" class={`text-center text-size-16 ${clazz}`}>\n {#if link}\n <a class=\"font-extrabold generic-focus focus:text-cyan-700\" data-sveltekit-reload href={link}\n >{content}</a\n >\n {:else}\n <span class=\"font-extrabold text-neutral-600\">{content}</span>\n {/if}\n</p>\n","<script>\n import ImageComponent from \"$lib/contentTypes/ImageComponent.svelte\";\n import PageTitle from \"$lib/components/Page/PageTitle.svelte\";\n import Eyebrow from \"$lib/components/Eyebrow.svelte\";\n import SocialBar from \"$lib/islands/Components/SocialBar.svelte\";\n import Bleed from \"$lib/components/Bleed.svelte\";\n import Island from \"$lib/components/Island.svelte\";\n\n export let title;\n export let featuredImage = null;\n export let eyebrow = {};\n export let byline = null;\n export let parentInfo;\n export let showSocialBar = true;\n\n let socialBarPaddingClass = \"pb-48 lg:mb-104\";\n let pageTitlePaddingClass = showSocialBar ? \"lg:pb-48 pb-24\" : \"lg:pb-72 pb-48\";\n let backgroundColorClass = \"bg-neutral-100\";\n if (featuredImage) {\n socialBarPaddingClass = \"pb-24 lg:pb-48\";\n pageTitlePaddingClass = \"pb-24 lg:pb-48\";\n }\n\n // This behavior can be overridden by specifying a breadcrumb\n if (!eyebrow.content && parentInfo) {\n eyebrow.content = parentInfo?.headline;\n eyebrow.link = parentInfo?.relativeUrl;\n }\n</script>\n\n<div class=\"w-full hero\" test-id=\"hero\">\n <Bleed fullWidth fullWidthClasses={backgroundColorClass} contentClasses=\"px-24 lg:px-72\">\n <div class={`pt-48 lg:pt-72 flex flex-col ${backgroundColorClass}`}>\n <PageTitle class=\"lg:max-w-screen-lg lg:mx-auto order-2 {pageTitlePaddingClass}\" {title} />\n\n {#if eyebrow.content}\n <Eyebrow class=\"lg:pb-48 pb-24 lg:max-w-screen-lg lg:mx-auto order-1\" {...eyebrow} />\n {/if}\n\n {#if byline}\n <div class=\"lg:pb-24 pb-8 text-center lg:max-w-screen-lg lg:mx-auto order-3\">\n <!-- Byline -->\n {#if byline.author}\n <span class=\"font-bold\">{byline.author.name},</span>\n <span>{byline.author.organization}</span>\n {/if}\n <span class=\"font-bold\">{byline.publishDate}</span>\n </div>\n {/if}\n {#if showSocialBar}\n <Island\n id=\"hero-social-bar\"\n islandProps={{ class: `order-4 ${socialBarPaddingClass}` }}\n component={SocialBar}\n name=\"SocialBar\"\n class=\"lg:max-w-screen-lg lg:mx-auto\"\n />\n {/if}\n </div>\n </Bleed>\n {#if featuredImage}\n <Bleed fullWidth fullWidthClasses=\"bg-hero lg:bg-hero-lg\" contentClasses=\"px-24 lg:px-72\">\n <div class=\"\">\n <ImageComponent\n containerClass=\"w-full place-items-center\"\n elementClass=\"object-cover w-full rounded-5 lg:max-w-screen-lg lg:m-auto\"\n data={featuredImage}\n displayCaption={false}\n containerized={true}\n lg={\"1250px\"}\n responsive\n />\n </div>\n </Bleed>\n {/if}\n</div>\n"],"names":["get_spread_update","levels","updates","update","to_null_out","accounted_for","i","o","n","key","get_spread_object","spread_props","ctx","attr","div1","div1_style_value","insert_hydration","target","div2","anchor","append_hydration","div0","current","dirty","fullWidth","$$props","fullWidthClasses","fullWidthStyles","contentClasses","svg","path","g","path0","path1","path2","svg_stroke_value","g1","g0","path3","path4","path5","path6","path7","path8","path9","type","inheritSize","sizeProp","clazz","SIZE_MAP","ICON_TYPES","Caution","ChevronDown","ChevronLeft","ChevronRight","ChevronUp","ChevronBackToTop","Check","Close","Confirm","Dollar","Download","Error","Euro","External","Facebook","Favorite","Filter","Info","Instagram","Invisible","Link","Linkedin","Menu","Minus","OfDark","Of","Plus","Pound","Store","Twitter","Visible","Yen","Youtube","size","$$invalidate","component","getUrlObject","url","isExternalUrl","currentOrigin","urlObj","targetOrigin","correctedUrl","isMissingTrailingSlash","isNotStaticFile","isRootRelative","hasNoTrailingSlash","icon_1_changes","if_block0","_a","_b","create_if_block_2","_c","_d","create_if_block_1","if_block2","create_if_block","svelte_element","svelte_element_data","svelte_element_levels","svelte_element_href_value","svelte_element_class_value","svelte_element_style_value","svelte_element_target_value","svelte_element_rel_value","create_dynamic_element","id","variant","disabled","testid","icon","dispatch","createEventDispatcher","typeProps","$page","getVariantClasses","getSizeClasses","getRippleColors","val","displayIconOnlyOnMobile","isExternal","span1","span0","if_block","span","isolateLastWordForWrapping","text","lastWord","reducedText","word","index","array","iconSize","iconClass","textClass","singleWordWrapClass","fade","node","delay","duration","easing","linear","t","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","unescapeTest","unescape","_","caret","edit","regex","opt","obj","name","cleanUrl","href","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","outputLink","cap","link","raw","lexer","title","token","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer","options","__publicField","src","trimmed","top","tokens","bull","isordered","list","itemRegex","itemContents","endsWithBlankLine","endEarly","line","nextLine","indent","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","spacers","hasMultipleLineBreaks","tag","item","j","k","align","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","block","inline","_Lexer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","code","infostring","lang","quote","body","ordered","start","startatt","task","checked","header","content","flags","cleanHref","out","_TextRenderer","_Parser","genericToken","ret","headingToken","codeToken","tableToken","cell","blockquoteToken","listToken","loose","itemBody","checkbox","htmlToken","paragraphToken","textToken","renderer","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","markdown","Marked","args","__privateAdd","_parseMarkdown","_onError","__privateMethod","parseMarkdown_fn","callback","values","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererFunc","rendererKey","tokenizer","tokenizerFunc","tokenizerKey","prevTokenizer","hooks","hooksFunc","hooksKey","prevHook","arg","walkTokens","packWalktokens","parser","origOpt","throwError","onError_fn","e","silent","async","msg","markedInstance","marked","parse","CHANGED","CLASS_LIST","CUSTOM_ELEMENTS","CONTENT","DATASET","DOCTYPE","DOM_PARSER","END","EVENT_TARGET","GLOBALS","IMAGE","MIME","MUTATION_OBSERVER","NEXT","OWNER_ELEMENT","PREV","PRIVATE","SHEET","START","STYLE","UPGRADE","VALUE","htmlDecodeTree","xmlDecodeTree","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","end","base","digitCount","startIdx","char","lastCp","expectedLength","valueLength","determineBranch","result","consumed","getDecoder","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","length","endIndex","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","_e","data","impliesClose","element","isImplied","_f","_g","_h","pos","isOpenImplied","_j","_k","slice","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node$2","parent","prev","recursive","cloneNode","DataNode","Node","ProcessingInstruction","NodeWithChildren","children","attribs","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","clone","Element","child","Document","instruction","childs","defaultOpts","DomHandler","elementCB","error","lastNode","previousSibling","xmlReplacer","xmlCodeMap","getCodePoint","encodeXML","lastIdx","getEscaper","map","escapeAttribute","escapeText","elementNames","attributeNames","unencodedElements","replaceQuotes","formatAttributes","attributes","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","renderTag","ElementType.Text","renderText","foreignModeIntegrationPoints","foreignElements","getOuterHTML","renderHTML","getInnerHTML","getText","textContent","innerText","getChildren","getParent","getSiblings","siblings","getAttributeValue","hasAttrib","getName","nextElementSibling","prevElementSibling","removeElement","childsIndex","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","filter","test","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","findAll","Checks","getAttribCheck","attrib","combineFuncs","a","compileTest","funcs","testElement","getElements","getElementById","getElementsByTagName","tagName","getElementsByTagType","removeSubsets","idx","ancestor","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","uniqueSort","arr","relative","getFeed","doc","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","entry","getMediaElements","addConditionally","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","parseDocument","handler","Parser","parseDOM","createDocumentStream","elementCallback","createDomStream","parseFeedDefaultOptions","parseFeed","NODE_END","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SHOW_ALL","SHOW_ELEMENT","SHOW_TEXT","SHOW_CDATA_SECTION","SHOW_COMMENT","DOCUMENT_POSITION_DISCONNECTED","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC","SVG_NAMESPACE","assign","create","defineProperties","entries","getOwnPropertyDescriptors","keys","setPrototypeOf","$String","getEnd","ignoreCase","ownerDocument","knownAdjacent","knownBoundaries","knownSegment","knownSiblings","localCase","localName","setAdjacent","shadowRoots","reactive","Classes","customElements","attributeChangedCallback","attributeName","oldValue","newValue","createTrigger","method","isConnected","info","triggerConnected","connectedCallback","triggerDisconnected","disconnectedCallback","CustomElementRegistry","Class","registry","waiting","extend","check","resolve","ce","HTMLParser2","self","active","attribute","parseFromString","document","isHTML","markupLanguage","ownerSVGElement","parsingCData","htmlClasses","registerHTMLClass","names","__viteBrowserExternal","performance","require$$0","performance_1","perf_hooks","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","nonElementAsJSON","publicId","systemId","createRecord","addedNodes","removedNodes","queueAttribute","observer","attributeFilter","attributeOldValue","records","scheduled","observers","childList","subtree","moCallback","parentNode","characterData","MutationObserverClass","emptyAttributes","setAttribute","moAttributes","ceAttributes","removeAttribute","booleanAttribute","numericAttribute","stringAttribute","wm","event","listener","invokeListeners","currentTarget","listeners","DOMEventTarget","NodeList","getParentNodeCount","EventTarget","nodeType","location","newNode","referenceNode","newChild","oldChild","other","childNodes","aNodes","bNodes","root","QUOTE","Attr","String","ownerElement","parentElement","nextSibling","previousElementSibling","asFragment","fragment","before","after","replaceWith","remove","CDATASection","CharacterData","boolbase","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","escapedWhitespace","high","unescapeCSS","isQuote","subselects","parseSelector","selectorIndex","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","namespace","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","sortByProcedure","procs","getProcedure","procNew","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","attributeRules","adapter","whitespace","ZERO","NINE","formula","sign","readSign","number","readNumber","skipWhitespace","compile","parsed","absA","bMod","nthCheck","getChildFunc","filters","itext","rule","equals","func","getNCheck","currentSibling","_rule","context","dynamicStatePseudo","pseudos","firstChild","elemName","verifyPseudoArgs","subselect","argIndex","aliases","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","is","compileToken","_context","s","compiled","hasElement","shouldTestNextSiblings","nextElements","compilePseudoSelector","userPseudo","stringPseudo","alias","pseudo","getElementParent","compileGeneralSelector","isFalseCache","previous","lastElement","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","sortRules","isArrayContext","finalContext","query","first","second","compileRules","reduceRules","defaultEquals","defaultOptions","DomUtils","convertOptionFormats","wrapCompile","compileRaw","isArray","elements","matches","prepareMatch","selectors","CSSselect.compile","CSSselect.is","replace","ca","esca","pe","m","es","isNode","insert","ParentNode","firstElementChild","lastChild","className","$next","$prev","replaced","NonElementParentNode","deep","constructor","nonEPN","DocumentType","hasPublic","getInnerHtml","setInnerHtml","setOwnerDocument","uhyphen","camel","refs","$1","dataset","DOMStringMap","ref","add","addTokens","DOMTokenList","force","newToken","getKeys","style","updateKeys","rest","prototype","done","cssText","push","CSSStyleDeclaration","BUBBLING_PHASE","AT_TARGET","CAPTURING_PHASE","NONE","GlobalEvent","eventInitDict","NamedNodeMap","host","attributesHandler","isVoid","classList","template","Event","previously","mode","shadowRoot","init","ShadowRoot","position","addNext","isOpened","classNames","illegalConstructor","_Attr","_CDATASection","_CharacterData","_Comment","DocumentFragment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","SVGElement","_SVGElement","Facades","Level0","level0","handlers","HTMLElement","ownerLess","accessKey","HTMLTemplateElement","HTMLHtmlElement","toString","TextElement","HTMLScriptElement","HTMLFrameElement","HTMLIFrameElement","HTMLObjectElement","HTMLHeadElement","HTMLBodyElement","CSSOM","StyleSheet","CSSRule","require$$1","ruleText","state","buffer","SIGNIFICANT_WHITESPACE","styleRule","priority","character","CSSStyleRule","cssRule","CSSStyleSheet","require$$2","medium","MediaList","mediaText","CSSImportRule","CSSGroupingRule","CSSConditionRule","require$$3","cssTexts","CSSMediaRule","CSSSupportsRule","CSSFontFaceRule","CSSHostRule","CSSKeyframeRule","CSSKeyframesRule","CSSValue","expression","paren","nextChar","endIdx","commentEndChar","sep","legalRegx","isLegal","reg","NOT_FOUND","matched","nextNewLineIdx","CSSValueExpression","matcher","MatcherList","CSSDocumentRule","valueParenthesisDepth","styleSheet","currentScope","parentRule","ancestorRules","hasAncestors","prevScope","mediaRule","supportsRule","importRule","fontFaceRule","keyframesRule","documentRule","hostRule","atKeyframesRegExp","parseError","message","lines","lineCount","charCount","matchKeyframes","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","prevValue","properties","dummyRule","require$$14","require$$19","HTMLStyleElement","sheet","HTMLTimeElement","HTMLFieldSetElement","HTMLEmbedElement","HTMLHRElement","HTMLProgressElement","HTMLParagraphElement","HTMLTableElement","HTMLFrameSetElement","HTMLLIElement","HTMLBaseElement","HTMLDataListElement","HTMLInputElement","HTMLParamElement","HTMLMediaElement","HTMLAudioElement","HTMLHeadingElement","HTMLDirectoryElement","HTMLQuoteElement","Canvas","width","height","canvasShim","canvasModule","createCanvas","HTMLCanvasElement","HTMLLegendElement","HTMLOptionElement","option","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","HTMLSlotElement","isNamedSlot","hostChildNodes","slottables","slottable","HTMLFormElement","HTMLImageElement","HTMLPreElement","HTMLUListElement","HTMLMetaElement","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","CustomEvent","InputEvent","inputEventInit","ImageClass","deleteContents","Range","isSVG","range","isOK","mask","TreeWalker","whatToShow","documentElement","$","globalExports","window","globalThis","et","docType","canBubble","cancelable","detail","doctype","externalNode","upgrade","nsp","_Document","parentsThrough","condition","breakOnCondition","parents","textToId","spaces","anythingButSpacesAndLetters","punctuationToStrip","hasData","onNode","copyElement","elementType","rootNode","newElement","clickOutside","callbackFunction","onClick","newCallbackFunction","elementIsFullyInViewport","elementRect","headerOffset","div","input","externalLinks","origin","linkToRender","externalId","htmlText","renderSanitizedHTML","onMount","ExternalLinkLabel","create_dynamic_element_1","img","img_loading_value","asset","alt","containerClass","containerElement","elementClass","caption","ariaId","childElement","resizeParams","dimensions","eagerload","responsive","widthsAt","ignoreContentfulImgResize","getContext","srcsetWidths","sizes","sizesForBreakpoints","buildSrc","srcset","srcSetFromWidths","image_changes","displayCaption","preload","containerized","lg","md","sm","widthClass","altText","altTextToDisplay","imageDimensions","_i","global","factory","module","this","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","apply","construct","x","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","thisArg","_len","_key","_len2","_key2","addToSet","set","transformCaseFunc","lcElement","object","newObject","property","lookupGetter","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","EXPRESSIONS","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","createDOMPurify","DOMPurify","originalDocument","currentScript","NodeFilter","DOMParser","ElementPrototype","getNextSibling","getChildNodes","getParentNode","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","importNode","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parentTagName","_forceRemove","_removeAttribute","_initDocument","leadingWhitespace","dirtyPayload","_createNodeIterator","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","_isBasicCustomElement","childCount","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","namespaceURI","attrValue","_sanitizeShadowDOM","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","hookFunction","purify","browser","rawHtml","CONTENTFUL_API_DEFAULTS","contentfulImageUrlFor","paramOverrides","fm","apiParams","params","widths","SCREENS","sizeForMinWidth","minWidth","breakpoints","sizeAttr","sizeForWidth","getImageOrientation","span_data","idOverride","classes","each_blocks","buttonClasses","button","is_function","icon_changes","iconSpacingClass","shareButtonsLabel","shareText","overrideURL","socials","currentURL","openNewWindow","social","w","h","left","handleClick","handleKeydown","IDX","HEX","BUFFER","v4","num","is_land","islandProps","uuid","importPath","renderIsland","dataProps","$$restProps","getPageHeadingClass","heading_changes","BIG_TITLE_LENGTH_LIMIT","BIG_TITLE_WORD_LENGTH_LIMIT","isCategoryPage","longTitle","containsLongWords","typeStackClass","p","t1_value","create_if_block_3","set_data","t1","t0","t0_value","t3","t3_value","SocialBar","create_if_block_4","backgroundColorClass","featuredImage","eyebrow","byline","parentInfo","showSocialBar","socialBarPaddingClass","pageTitlePaddingClass"],"mappings":"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aH,GAAW,eAAgB,IAAI,IAAI,CACzD,CAAC,GAAI,OAAO,EACZ,CAAC,GAAI,MAAM,EACX,CAAC,GAAI,MAAM,EACX,CAAC,IAAK,QAAQ,CAClB,CAAC,CAAC,EClHWI,GAAe,IAAI,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,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,gBACA,WACA,iBACA,iBACA,UACJ,EAAE,IAAKzY,GAAQ,CAACA,EAAI,cAAeA,CAAG,CAAC,CAAC,EAC3B0Y,GAAiB,IAAI,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,YACJ,EAAE,IAAK1Y,GAAQ,CAACA,EAAI,YAAa,EAAEA,CAAG,CAAC,CAAC,ECvFlC2Y,GAAoB,IAAI,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,UACJ,CAAC,EACD,SAASC,GAAcvG,EAAO,CAC1B,OAAOA,EAAM,QAAQ,KAAM,QAAQ,CACvC,CAIA,SAASwG,GAAiBC,EAAYnM,EAAM,CACxC,IAAIxO,EACJ,GAAI,CAAC2a,EACD,OACJ,MAAMxW,IAAWnE,EAAKwO,EAAK,kBAAoB,MAAQxO,IAAO,OAASA,EAAKwO,EAAK,kBAAoB,GAC/FiM,GACAjM,EAAK,SAAWA,EAAK,iBAAmB,OACpCwL,GACAI,GACV,OAAO,OAAO,KAAKO,CAAU,EACxB,IAAKtgB,GAAQ,CACd,IAAI2F,EAAIC,EACR,MAAM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","x_google_ignoreList":[0,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,224,225,230]}