@useinsider/ab-components 0.0.113 → 0.0.116-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_commonjsHelpers-BVfed4GL.js +29 -0
- package/dist/_commonjsHelpers-BVfed4GL.js.map +1 -0
- package/dist/ab-components.cjs.js +235 -3
- package/dist/ab-components.cjs.js.map +1 -1
- package/dist/ab-components.css +1 -1
- package/dist/ab-components.es.js +2914 -2495
- package/dist/ab-components.es.js.map +1 -1
- package/dist/ab-components.iife.js +235 -3
- package/dist/ab-components.iife.js.map +1 -1
- package/dist/ab-components.umd.js +235 -3
- package/dist/ab-components.umd.js.map +1 -1
- package/dist/css-BCREMVL9.js +14 -0
- package/dist/css-BCREMVL9.js.map +1 -0
- package/dist/html-DnkKyArO.js +22718 -0
- package/dist/html-DnkKyArO.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/js-DUq35cgT.js +11500 -0
- package/dist/js-DUq35cgT.js.map +1 -0
- package/dist/liquid-hNC9E8-o.js +3665 -0
- package/dist/liquid-hNC9E8-o.js.map +1 -0
- package/package.json +9 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-DnkKyArO.js","sources":["../node_modules/ajv/dist/compile/codegen/code.js","../node_modules/ajv/dist/compile/codegen/scope.js","../node_modules/ajv/dist/compile/codegen/index.js","../node_modules/ajv/dist/compile/util.js","../node_modules/ajv/dist/compile/names.js","../node_modules/ajv/dist/compile/errors.js","../node_modules/ajv/dist/compile/validate/boolSchema.js","../node_modules/ajv/dist/compile/rules.js","../node_modules/ajv/dist/compile/validate/applicability.js","../node_modules/ajv/dist/compile/validate/dataType.js","../node_modules/ajv/dist/compile/validate/defaults.js","../node_modules/ajv/dist/vocabularies/code.js","../node_modules/ajv/dist/compile/validate/keyword.js","../node_modules/ajv/dist/compile/validate/subschema.js","../node_modules/fast-deep-equal/index.js","../node_modules/json-schema-traverse/index.js","../node_modules/ajv/dist/compile/resolve.js","../node_modules/ajv/dist/compile/validate/index.js","../node_modules/ajv/dist/runtime/validation_error.js","../node_modules/ajv/dist/compile/ref_error.js","../node_modules/ajv/dist/compile/index.js","../node_modules/fast-uri/lib/utils.js","../node_modules/fast-uri/lib/schemes.js","../node_modules/fast-uri/index.js","../node_modules/ajv/dist/runtime/uri.js","../node_modules/ajv/dist/core.js","../node_modules/ajv/dist/vocabularies/core/id.js","../node_modules/ajv/dist/vocabularies/core/ref.js","../node_modules/ajv/dist/vocabularies/core/index.js","../node_modules/ajv/dist/vocabularies/validation/limitNumber.js","../node_modules/ajv/dist/vocabularies/validation/multipleOf.js","../node_modules/ajv/dist/runtime/ucs2length.js","../node_modules/ajv/dist/vocabularies/validation/limitLength.js","../node_modules/ajv/dist/vocabularies/validation/pattern.js","../node_modules/ajv/dist/vocabularies/validation/limitProperties.js","../node_modules/ajv/dist/vocabularies/validation/required.js","../node_modules/ajv/dist/vocabularies/validation/limitItems.js","../node_modules/ajv/dist/runtime/equal.js","../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js","../node_modules/ajv/dist/vocabularies/validation/const.js","../node_modules/ajv/dist/vocabularies/validation/enum.js","../node_modules/ajv/dist/vocabularies/validation/index.js","../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js","../node_modules/ajv/dist/vocabularies/applicator/items.js","../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js","../node_modules/ajv/dist/vocabularies/applicator/items2020.js","../node_modules/ajv/dist/vocabularies/applicator/contains.js","../node_modules/ajv/dist/vocabularies/applicator/dependencies.js","../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js","../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js","../node_modules/ajv/dist/vocabularies/applicator/properties.js","../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js","../node_modules/ajv/dist/vocabularies/applicator/not.js","../node_modules/ajv/dist/vocabularies/applicator/anyOf.js","../node_modules/ajv/dist/vocabularies/applicator/oneOf.js","../node_modules/ajv/dist/vocabularies/applicator/allOf.js","../node_modules/ajv/dist/vocabularies/applicator/if.js","../node_modules/ajv/dist/vocabularies/applicator/thenElse.js","../node_modules/ajv/dist/vocabularies/applicator/index.js","../node_modules/ajv/dist/vocabularies/format/format.js","../node_modules/ajv/dist/vocabularies/format/index.js","../node_modules/ajv/dist/vocabularies/metadata.js","../node_modules/ajv/dist/vocabularies/draft7.js","../node_modules/ajv/dist/vocabularies/discriminator/types.js","../node_modules/ajv/dist/vocabularies/discriminator/index.js","../node_modules/ajv/dist/ajv.js","../node_modules/html-validate/dist/es/utils/natural-join.js","../node_modules/html-validate/dist/es/meta-helper.js","../node_modules/html-validate/dist/es/elements.js","../node_modules/kleur/colors.mjs","../node_modules/@sidvind/better-ajv-errors/lib/esm/index.mjs","../node_modules/kleur/index.mjs","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/internal/lrucache.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/index.js","../node_modules/html-validate/dist/es/core.js","../node_modules/html-validate/dist/es/core-browser.js","../src/components/MonacoEditor/validators/html.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;\nconst util_1 = require(\"./util\");\nconst equal = require(\"fast-deep-equal\");\nconst traverse = require(\"json-schema-traverse\");\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n]);\nfunction inlineRef(schema, limit = true) {\n if (typeof schema == \"boolean\")\n return true;\n if (limit === true)\n return !hasRef(schema);\n if (!limit)\n return false;\n return countKeys(schema) <= limit;\n}\nexports.inlineRef = inlineRef;\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n]);\nfunction hasRef(schema) {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key))\n return true;\n const sch = schema[key];\n if (Array.isArray(sch) && sch.some(hasRef))\n return true;\n if (typeof sch == \"object\" && hasRef(sch))\n return true;\n }\n return false;\n}\nfunction countKeys(schema) {\n let count = 0;\n for (const key in schema) {\n if (key === \"$ref\")\n return Infinity;\n count++;\n if (SIMPLE_INLINED.has(key))\n continue;\n if (typeof schema[key] == \"object\") {\n (0, util_1.eachItem)(schema[key], (sch) => (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ValidationError extends Error {\n constructor(errors) {\n super(\"validation failed\");\n this.errors = errors;\n this.ajv = this.validation = true;\n }\n}\nexports.default = ValidationError;\n//# sourceMappingURL=validation_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst resolve_1 = require(\"./resolve\");\nclass MissingRefError extends Error {\n constructor(resolver, baseId, ref, msg) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`);\n this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);\n this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));\n }\n}\nexports.default = MissingRefError;\n//# sourceMappingURL=ref_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst validation_error_1 = require(\"../runtime/validation_error\");\nconst names_1 = require(\"./names\");\nconst resolve_1 = require(\"./resolve\");\nconst util_1 = require(\"./util\");\nconst validate_1 = require(\"./validate\");\nclass SchemaEnv {\n constructor(env) {\n var _a;\n this.refs = {};\n this.dynamicAnchors = {};\n let schema;\n if (typeof env.schema == \"object\")\n schema = env.schema;\n this.schema = env.schema;\n this.schemaId = env.schemaId;\n this.root = env.root || this;\n this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || \"$id\"]);\n this.schemaPath = env.schemaPath;\n this.localRefs = env.localRefs;\n this.meta = env.meta;\n this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;\n this.refs = {};\n }\n}\nexports.SchemaEnv = SchemaEnv;\n// let codeSize = 0\n// let nodeCount = 0\n// Compiles schema in SchemaEnv\nfunction compileSchema(sch) {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch);\n if (_sch)\n return _sch;\n const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); // TODO if getFullPath removed 1 tests fails\n const { es5, lines } = this.opts.code;\n const { ownProperties } = this.opts;\n const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });\n let _ValidationError;\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: validation_error_1.default,\n code: (0, codegen_1._) `require(\"ajv/dist/runtime/validation_error\").default`,\n });\n }\n const validateName = gen.scopeName(\"validate\");\n sch.validateName = validateName;\n const schemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: names_1.default.data,\n parentData: names_1.default.parentData,\n parentDataProperty: names_1.default.parentDataProperty,\n dataNames: [names_1.default.data],\n dataPathArr: [codegen_1.nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\"schema\", this.opts.code.source === true\n ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) }\n : { ref: sch.schema }),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: codegen_1.nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: (0, codegen_1._) `\"\"`,\n opts: this.opts,\n self: this,\n };\n let sourceCode;\n try {\n this._compilations.add(sch);\n (0, validate_1.validateFunctionCode)(schemaCxt);\n gen.optimize(this.opts.code.optimize);\n // gen.optimize(1)\n const validateCode = gen.toString();\n sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process)\n sourceCode = this.opts.code.process(sourceCode, sch);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);\n const validate = makeValidate(this, this.scope.get());\n this.scope.value(validateName, { ref: validate });\n validate.errors = null;\n validate.schema = sch.schema;\n validate.schemaEnv = sch;\n if (sch.$async)\n validate.$async = true;\n if (this.opts.code.source === true) {\n validate.source = { validateName, validateCode, scopeValues: gen._values };\n }\n if (this.opts.unevaluated) {\n const { props, items } = schemaCxt;\n validate.evaluated = {\n props: props instanceof codegen_1.Name ? undefined : props,\n items: items instanceof codegen_1.Name ? undefined : items,\n dynamicProps: props instanceof codegen_1.Name,\n dynamicItems: items instanceof codegen_1.Name,\n };\n if (validate.source)\n validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);\n }\n sch.validate = validate;\n return sch;\n }\n catch (e) {\n delete sch.validate;\n delete sch.validateName;\n if (sourceCode)\n this.logger.error(\"Error compiling schema, function code:\", sourceCode);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e;\n }\n finally {\n this._compilations.delete(sch);\n }\n}\nexports.compileSchema = compileSchema;\nfunction resolveRef(root, baseId, ref) {\n var _a;\n ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);\n const schOrFunc = root.refs[ref];\n if (schOrFunc)\n return schOrFunc;\n let _sch = resolve.call(this, root, ref);\n if (_sch === undefined) {\n const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; // TODO maybe localRefs should hold SchemaEnv\n const { schemaId } = this.opts;\n if (schema)\n _sch = new SchemaEnv({ schema, schemaId, root, baseId });\n }\n if (_sch === undefined)\n return;\n return (root.refs[ref] = inlineOrCompile.call(this, _sch));\n}\nexports.resolveRef = resolveRef;\nfunction inlineOrCompile(sch) {\n if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))\n return sch.schema;\n return sch.validate ? sch : compileSchema.call(this, sch);\n}\n// Index of schema compilation in the currently compiled list\nfunction getCompilingSchema(schEnv) {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv))\n return sch;\n }\n}\nexports.getCompilingSchema = getCompilingSchema;\nfunction sameSchemaEnv(s1, s2) {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;\n}\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(root, // information about the root schema for the current schema\nref // reference to resolve\n) {\n let sch;\n while (typeof (sch = this.refs[ref]) == \"string\")\n ref = sch;\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);\n}\n// Resolve schema, its root and baseId\nfunction resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\nref // reference to resolve\n) {\n const p = this.opts.uriResolver.parse(ref);\n const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);\n let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, undefined);\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root);\n }\n const id = (0, resolve_1.normalizeId)(refPath);\n const schOrRef = this.refs[id] || this.schemas[id];\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef);\n if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== \"object\")\n return;\n return getJsonPointer.call(this, p, sch);\n }\n if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== \"object\")\n return;\n if (!schOrRef.validate)\n compileSchema.call(this, schOrRef);\n if (id === (0, resolve_1.normalizeId)(ref)) {\n const { schema } = schOrRef;\n const { schemaId } = this.opts;\n const schId = schema[schemaId];\n if (schId)\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n return new SchemaEnv({ schema, schemaId, root, baseId });\n }\n return getJsonPointer.call(this, p, schOrRef);\n}\nexports.resolveSchema = resolveSchema;\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n]);\nfunction getJsonPointer(parsedRef, { baseId, schema, root }) {\n var _a;\n if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== \"/\")\n return;\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\")\n return;\n const partSchema = schema[(0, util_1.unescapeFragment)(part)];\n if (partSchema === undefined)\n return;\n schema = partSchema;\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId];\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n }\n }\n let env;\n if (typeof schema != \"boolean\" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {\n const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);\n env = resolveSchema.call(this, root, $ref);\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const { schemaId } = this.opts;\n env = env || new SchemaEnv({ schema, schemaId, root, baseId });\n if (env.schema !== env.root.schema)\n return env;\n return undefined;\n}\n//# sourceMappingURL=index.js.map","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst uri = require(\"fast-uri\");\nuri.code = 'require(\"ajv/dist/runtime/uri\").default';\nexports.default = uri;\n//# sourceMappingURL=uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nconst validation_error_1 = require(\"./runtime/validation_error\");\nconst ref_error_1 = require(\"./compile/ref_error\");\nconst rules_1 = require(\"./compile/rules\");\nconst compile_1 = require(\"./compile\");\nconst codegen_2 = require(\"./compile/codegen\");\nconst resolve_1 = require(\"./compile/resolve\");\nconst dataType_1 = require(\"./compile/validate/dataType\");\nconst util_1 = require(\"./compile/util\");\nconst $dataRefSchema = require(\"./refs/data.json\");\nconst uri_1 = require(\"./runtime/uri\");\nconst defaultRegExp = (str, flags) => new RegExp(str, flags);\ndefaultRegExp.code = \"new RegExp\";\nconst META_IGNORE_OPTIONS = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"];\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n]);\nconst removedOptions = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n};\nconst deprecatedOptions = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n};\nconst MAX_EXPRESSION = 200;\n// eslint-disable-next-line complexity\nfunction requiredOptions(o) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n const s = o.strict;\n const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;\n const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;\n const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;\n return {\n strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,\n strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,\n strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : \"log\",\n strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : \"log\",\n strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,\n code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },\n loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,\n loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,\n meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,\n messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,\n inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,\n schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : \"$id\",\n addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,\n validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,\n validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,\n unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,\n int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,\n uriResolver: uriResolver,\n };\n}\nclass Ajv {\n constructor(opts = {}) {\n this.schemas = {};\n this.refs = {};\n this.formats = {};\n this._compilations = new Set();\n this._loading = {};\n this._cache = new Map();\n opts = this.opts = { ...opts, ...requiredOptions(opts) };\n const { es5, lines } = this.opts.code;\n this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });\n this.logger = getLogger(opts.logger);\n const formatOpt = opts.validateFormats;\n opts.validateFormats = false;\n this.RULES = (0, rules_1.getRules)();\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\");\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\");\n this._metaOpts = getMetaSchemaOptions.call(this);\n if (opts.formats)\n addInitialFormats.call(this);\n this._addVocabularies();\n this._addDefaultMetaSchema();\n if (opts.keywords)\n addInitialKeywords.call(this, opts.keywords);\n if (typeof opts.meta == \"object\")\n this.addMetaSchema(opts.meta);\n addInitialSchemas.call(this);\n opts.validateFormats = formatOpt;\n }\n _addVocabularies() {\n this.addKeyword(\"$async\");\n }\n _addDefaultMetaSchema() {\n const { $data, meta, schemaId } = this.opts;\n let _dataRefSchema = $dataRefSchema;\n if (schemaId === \"id\") {\n _dataRefSchema = { ...$dataRefSchema };\n _dataRefSchema.id = _dataRefSchema.$id;\n delete _dataRefSchema.$id;\n }\n if (meta && $data)\n this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false);\n }\n defaultMeta() {\n const { meta, schemaId } = this.opts;\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined);\n }\n validate(schemaKeyRef, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data // to be validated\n ) {\n let v;\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef);\n if (!v)\n throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`);\n }\n else {\n v = this.compile(schemaKeyRef);\n }\n const valid = v(data);\n if (!(\"$async\" in v))\n this.errors = v.errors;\n return valid;\n }\n compile(schema, _meta) {\n const sch = this._addSchema(schema, _meta);\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n compileAsync(schema, meta) {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\");\n }\n const { loadSchema } = this.opts;\n return runCompileAsync.call(this, schema, meta);\n async function runCompileAsync(_schema, _meta) {\n await loadMetaSchema.call(this, _schema.$schema);\n const sch = this._addSchema(_schema, _meta);\n return sch.validate || _compileAsync.call(this, sch);\n }\n async function loadMetaSchema($ref) {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, { $ref }, true);\n }\n }\n async function _compileAsync(sch) {\n try {\n return this._compileSchemaEnv(sch);\n }\n catch (e) {\n if (!(e instanceof ref_error_1.default))\n throw e;\n checkLoaded.call(this, e);\n await loadMissingSchema.call(this, e.missingSchema);\n return _compileAsync.call(this, sch);\n }\n }\n function checkLoaded({ missingSchema: ref, missingRef }) {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`);\n }\n }\n async function loadMissingSchema(ref) {\n const _schema = await _loadSchema.call(this, ref);\n if (!this.refs[ref])\n await loadMetaSchema.call(this, _schema.$schema);\n if (!this.refs[ref])\n this.addSchema(_schema, ref, meta);\n }\n async function _loadSchema(ref) {\n const p = this._loading[ref];\n if (p)\n return p;\n try {\n return await (this._loading[ref] = loadSchema(ref));\n }\n finally {\n delete this._loading[ref];\n }\n }\n }\n // Adds schema to the instance\n addSchema(schema, // If array is passed, `key` will be ignored\n key, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ) {\n if (Array.isArray(schema)) {\n for (const sch of schema)\n this.addSchema(sch, undefined, _meta, _validateSchema);\n return this;\n }\n let id;\n if (typeof schema === \"object\") {\n const { schemaId } = this.opts;\n id = schema[schemaId];\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`);\n }\n }\n key = (0, resolve_1.normalizeId)(key || id);\n this._checkUnique(key);\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);\n return this;\n }\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(schema, key, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ) {\n this.addSchema(schema, key, true, _validateSchema);\n return this;\n }\n // Validate schema against its meta-schema\n validateSchema(schema, throwOrLogError) {\n if (typeof schema == \"boolean\")\n return true;\n let $schema;\n $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\");\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta();\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\");\n this.errors = null;\n return true;\n }\n const valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText();\n if (this.opts.validateSchema === \"log\")\n this.logger.error(message);\n else\n throw new Error(message);\n }\n return valid;\n }\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef) {\n let sch;\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\")\n keyRef = sch;\n if (sch === undefined) {\n const { schemaId } = this.opts;\n const root = new compile_1.SchemaEnv({ schema: {}, schemaId });\n sch = compile_1.resolveSchema.call(this, root, keyRef);\n if (!sch)\n return;\n this.refs[keyRef] = sch;\n }\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef);\n this._removeAllSchemas(this.refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas);\n this._removeAllSchemas(this.refs);\n this._cache.clear();\n return this;\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef);\n if (typeof sch == \"object\")\n this._cache.delete(sch.schema);\n delete this.schemas[schemaKeyRef];\n delete this.refs[schemaKeyRef];\n return this;\n }\n case \"object\": {\n const cacheKey = schemaKeyRef;\n this._cache.delete(cacheKey);\n let id = schemaKeyRef[this.opts.schemaId];\n if (id) {\n id = (0, resolve_1.normalizeId)(id);\n delete this.schemas[id];\n delete this.refs[id];\n }\n return this;\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\");\n }\n }\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions) {\n for (const def of definitions)\n this.addKeyword(def);\n return this;\n }\n addKeyword(kwdOrDef, def // deprecated\n ) {\n let keyword;\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef;\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\");\n def.keyword = keyword;\n }\n }\n else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef;\n keyword = def.keyword;\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\");\n }\n }\n else {\n throw new Error(\"invalid addKeywords parameters\");\n }\n checkKeyword.call(this, keyword, def);\n if (!def) {\n (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd));\n return this;\n }\n keywordMetaschema.call(this, def);\n const definition = {\n ...def,\n type: (0, dataType_1.getJSONTypes)(def.type),\n schemaType: (0, dataType_1.getJSONTypes)(def.schemaType),\n };\n (0, util_1.eachItem)(keyword, definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t)));\n return this;\n }\n getKeyword(keyword) {\n const rule = this.RULES.all[keyword];\n return typeof rule == \"object\" ? rule.definition : !!rule;\n }\n // Remove keyword\n removeKeyword(keyword) {\n // TODO return type should be Ajv\n const { RULES } = this;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword);\n if (i >= 0)\n group.rules.splice(i, 1);\n }\n return this;\n }\n // Add format\n addFormat(name, format) {\n if (typeof format == \"string\")\n format = new RegExp(format);\n this.formats[name] = format;\n return this;\n }\n errorsText(errors = this.errors, // optional array of validation errors\n { separator = \", \", dataVar = \"data\" } = {} // optional options with properties `separator` and `dataVar`\n ) {\n if (!errors || errors.length === 0)\n return \"No errors\";\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg);\n }\n $dataMetaSchema(metaSchema, keywordsJsonPointers) {\n const rules = this.RULES.all;\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1); // first segment is an empty string\n let keywords = metaSchema;\n for (const seg of segments)\n keywords = keywords[seg];\n for (const key in rules) {\n const rule = rules[key];\n if (typeof rule != \"object\")\n continue;\n const { $data } = rule.definition;\n const schema = keywords[key];\n if ($data && schema)\n keywords[key] = schemaOrData(schema);\n }\n }\n return metaSchema;\n }\n _removeAllSchemas(schemas, regex) {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef];\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef];\n }\n else if (sch && !sch.meta) {\n this._cache.delete(sch.schema);\n delete schemas[keyRef];\n }\n }\n }\n }\n _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {\n let id;\n const { schemaId } = this.opts;\n if (typeof schema == \"object\") {\n id = schema[schemaId];\n }\n else {\n if (this.opts.jtd)\n throw new Error(\"schema must be object\");\n else if (typeof schema != \"boolean\")\n throw new Error(\"schema must be object or boolean\");\n }\n let sch = this._cache.get(schema);\n if (sch !== undefined)\n return sch;\n baseId = (0, resolve_1.normalizeId)(id || baseId);\n const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId);\n sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs });\n this._cache.set(sch.schema, sch);\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId)\n this._checkUnique(baseId);\n this.refs[baseId] = sch;\n }\n if (validateSchema)\n this.validateSchema(schema, true);\n return sch;\n }\n _checkUnique(id) {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`);\n }\n }\n _compileSchemaEnv(sch) {\n if (sch.meta)\n this._compileMetaSchema(sch);\n else\n compile_1.compileSchema.call(this, sch);\n /* istanbul ignore if */\n if (!sch.validate)\n throw new Error(\"ajv implementation error\");\n return sch.validate;\n }\n _compileMetaSchema(sch) {\n const currentOpts = this.opts;\n this.opts = this._metaOpts;\n try {\n compile_1.compileSchema.call(this, sch);\n }\n finally {\n this.opts = currentOpts;\n }\n }\n}\nAjv.ValidationError = validation_error_1.default;\nAjv.MissingRefError = ref_error_1.default;\nexports.default = Ajv;\nfunction checkOptions(checkOpts, options, msg, log = \"error\") {\n for (const key in checkOpts) {\n const opt = key;\n if (opt in options)\n this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`);\n }\n}\nfunction getSchEnv(keyRef) {\n keyRef = (0, resolve_1.normalizeId)(keyRef); // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef];\n}\nfunction addInitialSchemas() {\n const optsSchemas = this.opts.schemas;\n if (!optsSchemas)\n return;\n if (Array.isArray(optsSchemas))\n this.addSchema(optsSchemas);\n else\n for (const key in optsSchemas)\n this.addSchema(optsSchemas[key], key);\n}\nfunction addInitialFormats() {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name];\n if (format)\n this.addFormat(name, format);\n }\n}\nfunction addInitialKeywords(defs) {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs);\n return;\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\");\n for (const keyword in defs) {\n const def = defs[keyword];\n if (!def.keyword)\n def.keyword = keyword;\n this.addKeyword(def);\n }\n}\nfunction getMetaSchemaOptions() {\n const metaOpts = { ...this.opts };\n for (const opt of META_IGNORE_OPTIONS)\n delete metaOpts[opt];\n return metaOpts;\n}\nconst noLogs = { log() { }, warn() { }, error() { } };\nfunction getLogger(logger) {\n if (logger === false)\n return noLogs;\n if (logger === undefined)\n return console;\n if (logger.log && logger.warn && logger.error)\n return logger;\n throw new Error(\"logger must implement log, warn and error methods\");\n}\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i;\nfunction checkKeyword(keyword, def) {\n const { RULES } = this;\n (0, util_1.eachItem)(keyword, (kwd) => {\n if (RULES.keywords[kwd])\n throw new Error(`Keyword ${kwd} is already defined`);\n if (!KEYWORD_NAME.test(kwd))\n throw new Error(`Keyword ${kwd} has invalid name`);\n });\n if (!def)\n return;\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function');\n }\n}\nfunction addRule(keyword, definition, dataType) {\n var _a;\n const post = definition === null || definition === void 0 ? void 0 : definition.post;\n if (dataType && post)\n throw new Error('keyword with \"post\" flag cannot have \"type\"');\n const { RULES } = this;\n let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType);\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.rules.push(ruleGroup);\n }\n RULES.keywords[keyword] = true;\n if (!definition)\n return;\n const rule = {\n keyword,\n definition: {\n ...definition,\n type: (0, dataType_1.getJSONTypes)(definition.type),\n schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType),\n },\n };\n if (definition.before)\n addBeforeRule.call(this, ruleGroup, rule, definition.before);\n else\n ruleGroup.rules.push(rule);\n RULES.all[keyword] = rule;\n (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd));\n}\nfunction addBeforeRule(ruleGroup, rule, before) {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before);\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule);\n }\n else {\n ruleGroup.rules.push(rule);\n this.logger.warn(`rule ${before} is not defined`);\n }\n}\nfunction keywordMetaschema(def) {\n let { metaSchema } = def;\n if (metaSchema === undefined)\n return;\n if (def.$data && this.opts.$data)\n metaSchema = schemaOrData(metaSchema);\n def.validateSchema = this.compile(metaSchema, true);\n}\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n};\nfunction schemaOrData(schema) {\n return { anyOf: [schema, $dataRef] };\n}\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst def = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID');\n },\n};\nexports.default = def;\n//# sourceMappingURL=id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callRef = exports.getValidate = void 0;\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst compile_1 = require(\"../../compile\");\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt) {\n const { gen, schema: $ref, it } = cxt;\n const { baseId, schemaEnv: env, validateName, opts, self } = it;\n const { root } = env;\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId)\n return callRootRef();\n const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);\n if (schOrEnv === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);\n if (schOrEnv instanceof compile_1.SchemaEnv)\n return callValidate(schOrEnv);\n return inlineRefSchema(schOrEnv);\n function callRootRef() {\n if (env === root)\n return callRef(cxt, validateName, env, env.$async);\n const rootName = gen.scopeValue(\"root\", { ref: root });\n return callRef(cxt, (0, codegen_1._) `${rootName}.validate`, root, root.$async);\n }\n function callValidate(sch) {\n const v = getValidate(cxt, sch);\n callRef(cxt, v, sch, sch.$async);\n }\n function inlineRefSchema(sch) {\n const schName = gen.scopeValue(\"schema\", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch });\n const valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({\n schema: sch,\n dataTypes: [],\n schemaPath: codegen_1.nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n }, valid);\n cxt.mergeEvaluated(schCxt);\n cxt.ok(valid);\n }\n },\n};\nfunction getValidate(cxt, sch) {\n const { gen } = cxt;\n return sch.validate\n ? gen.scopeValue(\"validate\", { ref: sch.validate })\n : (0, codegen_1._) `${gen.scopeValue(\"wrapper\", { ref: sch })}.validate`;\n}\nexports.getValidate = getValidate;\nfunction callRef(cxt, v, sch, $async) {\n const { gen, it } = cxt;\n const { allErrors, schemaEnv: env, opts } = it;\n const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil;\n if ($async)\n callAsyncRef();\n else\n callSyncRef();\n function callAsyncRef() {\n if (!env.$async)\n throw new Error(\"async schema referenced by sync schema\");\n const valid = gen.let(\"valid\");\n gen.try(() => {\n gen.code((0, codegen_1._) `await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`);\n addEvaluatedFrom(v); // TODO will not work with async, it has to be returned with the result\n if (!allErrors)\n gen.assign(valid, true);\n }, (e) => {\n gen.if((0, codegen_1._) `!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e));\n addErrorsFrom(e);\n if (!allErrors)\n gen.assign(valid, false);\n });\n cxt.ok(valid);\n }\n function callSyncRef() {\n cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v));\n }\n function addErrorsFrom(source) {\n const errs = (0, codegen_1._) `${source}.errors`;\n gen.assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); // TODO tagged\n gen.assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n }\n function addEvaluatedFrom(source) {\n var _a;\n if (!it.opts.unevaluated)\n return;\n const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated;\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props);\n }\n }\n else {\n const props = gen.var(\"props\", (0, codegen_1._) `${source}.evaluated.props`);\n it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name);\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items);\n }\n }\n else {\n const items = gen.var(\"items\", (0, codegen_1._) `${source}.evaluated.items`);\n it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name);\n }\n }\n }\n}\nexports.callRef = callRef;\nexports.default = def;\n//# sourceMappingURL=ref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst id_1 = require(\"./id\");\nconst ref_1 = require(\"./ref\");\nconst core = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n { keyword: \"$comment\" },\n \"definitions\",\n id_1.default,\n ref_1.default,\n];\nexports.default = core;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n maximum: { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n minimum: { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n exclusiveMaximum: { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n exclusiveMinimum: { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n};\nconst error = {\n message: ({ keyword, schemaCode }) => (0, codegen_1.str) `must be ${KWDs[keyword].okStr} ${schemaCode}`,\n params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n cxt.fail$data((0, codegen_1._) `${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitNumber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must be multiple of ${schemaCode}`,\n params: ({ schemaCode }) => (0, codegen_1._) `{multipleOf: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, schemaCode, it } = cxt;\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision;\n const res = gen.let(\"res\");\n const invalid = prec\n ? (0, codegen_1._) `Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : (0, codegen_1._) `${res} !== parseInt(${res})`;\n cxt.fail$data((0, codegen_1._) `(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=multipleOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nfunction ucs2length(str) {\n const len = str.length;\n let length = 0;\n let pos = 0;\n let value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xfc00) === 0xdc00)\n pos++; // low surrogate\n }\n }\n return length;\n}\nexports.default = ucs2length;\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default';\n//# sourceMappingURL=ucs2length.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst ucs2length_1 = require(\"../../runtime/ucs2length\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} characters`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode, it } = cxt;\n const op = keyword === \"maxLength\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n const len = it.opts.unicode === false ? (0, codegen_1._) `${data}.length` : (0, codegen_1._) `${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`;\n cxt.fail$data((0, codegen_1._) `${len} ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitLength.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n if ($data) {\n const { regExp } = it.opts.code;\n const regExpCode = regExp.code === \"new RegExp\" ? (0, codegen_1._) `new RegExp` : (0, util_1.useFunc)(gen, regExp);\n const valid = gen.let(\"valid\");\n gen.try(() => gen.assign(valid, (0, codegen_1._) `${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));\n cxt.fail$data((0, codegen_1._) `!${valid}`);\n }\n else {\n const regExp = (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} properties`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxProperties\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `Object.keys(${data}).length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { missingProperty } }) => (0, codegen_1.str) `must have required property '${missingProperty}'`,\n params: ({ params: { missingProperty } }) => (0, codegen_1._) `{missingProperty: ${missingProperty}}`,\n};\nconst def = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, schema, schemaCode, data, $data, it } = cxt;\n const { opts } = it;\n if (!$data && schema.length === 0)\n return;\n const useLoop = schema.length >= opts.loopRequired;\n if (it.allErrors)\n allErrorsMode();\n else\n exitOnErrorMode();\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties;\n const { definedProperties } = cxt.it;\n for (const requiredKey of schema) {\n if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired);\n }\n }\n }\n function allErrorsMode() {\n if (useLoop || $data) {\n cxt.block$data(codegen_1.nil, loopAllRequired);\n }\n else {\n for (const prop of schema) {\n (0, code_1.checkReportMissingProp)(cxt, prop);\n }\n }\n }\n function exitOnErrorMode() {\n const missing = gen.let(\"missing\");\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true);\n cxt.block$data(valid, () => loopUntilMissing(missing, valid));\n cxt.ok(valid);\n }\n else {\n gen.if((0, code_1.checkMissingProp)(cxt, schema, missing));\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n function loopAllRequired() {\n gen.forOf(\"prop\", schemaCode, (prop) => {\n cxt.setParams({ missingProperty: prop });\n gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error());\n });\n }\n function loopUntilMissing(missing, valid) {\n cxt.setParams({ missingProperty: missing });\n gen.forOf(missing, schemaCode, () => {\n gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties));\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error();\n gen.break();\n });\n }, codegen_1.nil);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=required.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxItems\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `${data}.length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dataType_1 = require(\"../../compile/validate/dataType\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: ({ params: { i, j } }) => (0, codegen_1.str) `must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({ params: { i, j } }) => (0, codegen_1._) `{i: ${i}, j: ${j}}`,\n};\nconst def = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt;\n if (!$data && !schema)\n return;\n const valid = gen.let(\"valid\");\n const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : [];\n cxt.block$data(valid, validateUniqueItems, (0, codegen_1._) `${schemaCode} === false`);\n cxt.ok(valid);\n function validateUniqueItems() {\n const i = gen.let(\"i\", (0, codegen_1._) `${data}.length`);\n const j = gen.let(\"j\");\n cxt.setParams({ i, j });\n gen.assign(valid, true);\n gen.if((0, codegen_1._) `${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j));\n }\n function canOptimize() {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\");\n }\n function loopN(i, j) {\n const item = gen.name(\"item\");\n const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);\n const indices = gen.const(\"indices\", (0, codegen_1._) `{}`);\n gen.for((0, codegen_1._) `;${i}--;`, () => {\n gen.let(item, (0, codegen_1._) `${data}[${i}]`);\n gen.if(wrongType, (0, codegen_1._) `continue`);\n if (itemTypes.length > 1)\n gen.if((0, codegen_1._) `typeof ${item} == \"string\"`, (0, codegen_1._) `${item} += \"_\"`);\n gen\n .if((0, codegen_1._) `typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, (0, codegen_1._) `${indices}[${item}]`);\n cxt.error();\n gen.assign(valid, false).break();\n })\n .code((0, codegen_1._) `${indices}[${item}] = ${i}`);\n });\n }\n function loopN2(i, j) {\n const eql = (0, util_1.useFunc)(gen, equal_1.default);\n const outer = gen.name(\"outer\");\n gen.label(outer).for((0, codegen_1._) `;${i}--;`, () => gen.for((0, codegen_1._) `${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._) `${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error();\n gen.assign(valid, false).break(outer);\n })));\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=uniqueItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to constant\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValue: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schemaCode, schema } = cxt;\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data((0, codegen_1._) `!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`);\n }\n else {\n cxt.fail((0, codegen_1._) `${schema} !== ${data}`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=const.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to one of the allowed values\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValues: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n if (!$data && schema.length === 0)\n throw new Error(\"enum must have non-empty array\");\n const useLoop = schema.length >= it.opts.loopEnum;\n let eql;\n const getEql = () => (eql !== null && eql !== void 0 ? eql : (eql = (0, util_1.useFunc)(gen, equal_1.default)));\n let valid;\n if (useLoop || $data) {\n valid = gen.let(\"valid\");\n cxt.block$data(valid, loopEnum);\n }\n else {\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const vSchema = gen.const(\"vSchema\", schemaCode);\n valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i)));\n }\n cxt.pass(valid);\n function loopEnum() {\n gen.assign(valid, false);\n gen.forOf(\"v\", schemaCode, (v) => gen.if((0, codegen_1._) `${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break()));\n }\n function equalCode(vSchema, i) {\n const sch = schema[i];\n return typeof sch === \"object\" && sch !== null\n ? (0, codegen_1._) `${getEql()}(${data}, ${vSchema}[${i}])`\n : (0, codegen_1._) `${data} === ${sch}`;\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=enum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst limitNumber_1 = require(\"./limitNumber\");\nconst multipleOf_1 = require(\"./multipleOf\");\nconst limitLength_1 = require(\"./limitLength\");\nconst pattern_1 = require(\"./pattern\");\nconst limitProperties_1 = require(\"./limitProperties\");\nconst required_1 = require(\"./required\");\nconst limitItems_1 = require(\"./limitItems\");\nconst uniqueItems_1 = require(\"./uniqueItems\");\nconst const_1 = require(\"./const\");\nconst enum_1 = require(\"./enum\");\nconst validation = [\n // number\n limitNumber_1.default,\n multipleOf_1.default,\n // string\n limitLength_1.default,\n pattern_1.default,\n // object\n limitProperties_1.default,\n required_1.default,\n // array\n limitItems_1.default,\n uniqueItems_1.default,\n // any\n { keyword: \"type\", schemaType: [\"string\", \"array\"] },\n { keyword: \"nullable\", schemaType: \"boolean\" },\n const_1.default,\n enum_1.default,\n];\nexports.default = validation;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateAdditionalItems = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"additionalItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { parentSchema, it } = cxt;\n const { items } = parentSchema;\n if (!Array.isArray(items)) {\n (0, util_1.checkStrictMode)(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas');\n return;\n }\n validateAdditionalItems(cxt, items);\n },\n};\nfunction validateAdditionalItems(cxt, items) {\n const { gen, schema, data, keyword, it } = cxt;\n it.items = true;\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n if (schema === false) {\n cxt.setParams({ len: items.length });\n cxt.pass((0, codegen_1._) `${len} <= ${items.length}`);\n }\n else if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.var(\"valid\", (0, codegen_1._) `${len} <= ${items.length}`); // TODO var\n gen.if((0, codegen_1.not)(valid), () => validateItems(valid));\n cxt.ok(valid);\n }\n function validateItems(valid) {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);\n if (!it.allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n });\n }\n}\nexports.validateAdditionalItems = validateAdditionalItems;\nexports.default = def;\n//# sourceMappingURL=additionalItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTuple = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt) {\n const { schema, it } = cxt;\n if (Array.isArray(schema))\n return validateTuple(cxt, \"additionalItems\", schema);\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nfunction validateTuple(cxt, extraItems, schArr = cxt.schema) {\n const { gen, parentSchema, data, keyword, it } = cxt;\n checkStrictTuple(parentSchema);\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);\n }\n const valid = gen.name(\"valid\");\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n schArr.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n gen.if((0, codegen_1._) `${len} > ${i}`, () => cxt.subschema({\n keyword,\n schemaProp: i,\n dataProp: i,\n }, valid));\n cxt.ok(valid);\n });\n function checkStrictTuple(sch) {\n const { opts, errSchemaPath } = it;\n const l = schArr.length;\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`;\n (0, util_1.checkStrictMode)(it, msg, opts.strictTuples);\n }\n }\n}\nexports.validateTuple = validateTuple;\nexports.default = def;\n//# sourceMappingURL=items.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst items_1 = require(\"./items\");\nconst def = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => (0, items_1.validateTuple)(cxt, \"items\"),\n};\nexports.default = def;\n//# sourceMappingURL=prefixItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst additionalItems_1 = require(\"./additionalItems\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { schema, parentSchema, it } = cxt;\n const { prefixItems } = parentSchema;\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n if (prefixItems)\n (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems);\n else\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nexports.default = def;\n//# sourceMappingURL=items2020.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { min, max } }) => max === undefined\n ? (0, codegen_1.str) `must contain at least ${min} valid item(s)`\n : (0, codegen_1.str) `must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({ params: { min, max } }) => max === undefined ? (0, codegen_1._) `{minContains: ${min}}` : (0, codegen_1._) `{minContains: ${min}, maxContains: ${max}}`,\n};\nconst def = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n let min;\n let max;\n const { minContains, maxContains } = parentSchema;\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains;\n max = maxContains;\n }\n else {\n min = 1;\n }\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n cxt.setParams({ min, max });\n if (max === undefined && min === 0) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`);\n return;\n }\n if (max !== undefined && min > max) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" > \"maxContains\" is always invalid`);\n cxt.fail();\n return;\n }\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n let cond = (0, codegen_1._) `${len} >= ${min}`;\n if (max !== undefined)\n cond = (0, codegen_1._) `${cond} && ${len} <= ${max}`;\n cxt.pass(cond);\n return;\n }\n it.items = true;\n const valid = gen.name(\"valid\");\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()));\n }\n else if (min === 0) {\n gen.let(valid, true);\n if (max !== undefined)\n gen.if((0, codegen_1._) `${data}.length > 0`, validateItemsWithCount);\n }\n else {\n gen.let(valid, false);\n validateItemsWithCount();\n }\n cxt.result(valid, () => cxt.reset());\n function validateItemsWithCount() {\n const schValid = gen.name(\"_valid\");\n const count = gen.let(\"count\", 0);\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)));\n }\n function validateItems(_valid, block) {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword: \"contains\",\n dataProp: i,\n dataPropType: util_1.Type.Num,\n compositeRule: true,\n }, _valid);\n block();\n });\n }\n function checkLimits(count) {\n gen.code((0, codegen_1._) `${count}++`);\n if (max === undefined) {\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true).break());\n }\n else {\n gen.if((0, codegen_1._) `${count} > ${max}`, () => gen.assign(valid, false).break());\n if (min === 1)\n gen.assign(valid, true);\n else\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true));\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=contains.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nexports.error = {\n message: ({ params: { property, depsCount, deps } }) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\";\n return (0, codegen_1.str) `must have ${property_ies} ${deps} when property ${property} is present`;\n },\n params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._) `{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n};\nconst def = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error: exports.error,\n code(cxt) {\n const [propDeps, schDeps] = splitDependencies(cxt);\n validatePropertyDeps(cxt, propDeps);\n validateSchemaDeps(cxt, schDeps);\n },\n};\nfunction splitDependencies({ schema }) {\n const propertyDeps = {};\n const schemaDeps = {};\n for (const key in schema) {\n if (key === \"__proto__\")\n continue;\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps;\n deps[key] = schema[key];\n }\n return [propertyDeps, schemaDeps];\n}\nfunction validatePropertyDeps(cxt, propertyDeps = cxt.schema) {\n const { gen, data, it } = cxt;\n if (Object.keys(propertyDeps).length === 0)\n return;\n const missing = gen.let(\"missing\");\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop];\n if (deps.length === 0)\n continue;\n const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties);\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n });\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n (0, code_1.checkReportMissingProp)(cxt, depProp);\n }\n });\n }\n else {\n gen.if((0, codegen_1._) `${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`);\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n}\nexports.validatePropertyDeps = validatePropertyDeps;\nfunction validateSchemaDeps(cxt, schemaDeps = cxt.schema) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n for (const prop in schemaDeps) {\n if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop]))\n continue;\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), () => {\n const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid);\n cxt.mergeValidEvaluated(schCxt, valid);\n }, () => gen.var(valid, true) // TODO var\n );\n cxt.ok(valid);\n }\n}\nexports.validateSchemaDeps = validateSchemaDeps;\nexports.default = def;\n//# sourceMappingURL=dependencies.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"property name must be valid\",\n params: ({ params }) => (0, codegen_1._) `{propertyName: ${params.propertyName}}`,\n};\nconst def = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt) {\n const { gen, schema, data, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n const valid = gen.name(\"valid\");\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({ propertyName: key });\n cxt.subschema({\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n }, valid);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error(true);\n if (!it.allErrors)\n gen.break();\n });\n });\n cxt.ok(valid);\n },\n};\nexports.default = def;\n//# sourceMappingURL=propertyNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must NOT have additional properties\",\n params: ({ params }) => (0, codegen_1._) `{additionalProperty: ${params.additionalProperty}}`,\n};\nconst def = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, errsCount, it } = cxt;\n /* istanbul ignore if */\n if (!errsCount)\n throw new Error(\"ajv implementation error\");\n const { allErrors, opts } = it;\n it.props = true;\n if (opts.removeAdditional !== \"all\" && (0, util_1.alwaysValidSchema)(it, schema))\n return;\n const props = (0, code_1.allSchemaProperties)(parentSchema.properties);\n const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties);\n checkAdditionalProperties();\n cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n function checkAdditionalProperties() {\n gen.forIn(\"key\", data, (key) => {\n if (!props.length && !patProps.length)\n additionalPropertyCode(key);\n else\n gen.if(isAdditional(key), () => additionalPropertyCode(key));\n });\n }\n function isAdditional(key) {\n let definedProp;\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, \"properties\");\n definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key);\n }\n else if (props.length) {\n definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._) `${key} === ${p}`));\n }\n else {\n definedProp = codegen_1.nil;\n }\n if (patProps.length) {\n definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._) `${(0, code_1.usePattern)(cxt, p)}.test(${key})`));\n }\n return (0, codegen_1.not)(definedProp);\n }\n function deleteAdditional(key) {\n gen.code((0, codegen_1._) `delete ${data}[${key}]`);\n }\n function additionalPropertyCode(key) {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key);\n return;\n }\n if (schema === false) {\n cxt.setParams({ additionalProperty: key });\n cxt.error();\n if (!allErrors)\n gen.break();\n return;\n }\n if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.name(\"valid\");\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.reset();\n deleteAdditional(key);\n });\n }\n else {\n applyAdditionalSchema(key, valid);\n if (!allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n }\n }\n function applyAdditionalSchema(key, valid, errors) {\n const subschema = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: util_1.Type.Str,\n };\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n });\n }\n cxt.subschema(subschema, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=additionalProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_1 = require(\"../../compile/validate\");\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst def = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, \"additionalProperties\"));\n }\n const allProps = (0, code_1.allSchemaProperties)(schema);\n for (const prop of allProps) {\n it.definedProperties.add(prop);\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props);\n }\n const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p]));\n if (properties.length === 0)\n return;\n const valid = gen.name(\"valid\");\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop);\n }\n else {\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties));\n applyPropertySchema(prop);\n if (!it.allErrors)\n gen.else().var(valid, true);\n gen.endIf();\n }\n cxt.it.definedProperties.add(prop);\n cxt.ok(valid);\n }\n function hasDefault(prop) {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined;\n }\n function applyPropertySchema(prop) {\n cxt.subschema({\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n }, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst util_2 = require(\"../../compile/util\");\nconst def = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, data, parentSchema, it } = cxt;\n const { opts } = it;\n const patterns = (0, code_1.allSchemaProperties)(schema);\n const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p]));\n if (patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))) {\n return;\n }\n const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;\n const valid = gen.name(\"valid\");\n if (it.props !== true && !(it.props instanceof codegen_1.Name)) {\n it.props = (0, util_2.evaluatedPropsToName)(gen, it.props);\n }\n const { props } = it;\n validatePatternProperties();\n function validatePatternProperties() {\n for (const pat of patterns) {\n if (checkProperties)\n checkMatchingProperties(pat);\n if (it.allErrors) {\n validateProperties(pat);\n }\n else {\n gen.var(valid, true); // TODO var\n validateProperties(pat);\n gen.if(valid);\n }\n }\n }\n function checkMatchingProperties(pat) {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);\n }\n }\n }\n function validateProperties(pat) {\n gen.forIn(\"key\", data, (key) => {\n gen.if((0, codegen_1._) `${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat);\n if (!alwaysValid) {\n cxt.subschema({\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: util_2.Type.Str,\n }, valid);\n }\n if (it.opts.unevaluated && props !== true) {\n gen.assign((0, codegen_1._) `${props}[${key}]`, true);\n }\n else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=patternProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt) {\n const { gen, schema, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n cxt.fail();\n return;\n }\n const valid = gen.name(\"valid\");\n cxt.subschema({\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, valid);\n cxt.failResult(valid, () => cxt.reset(), () => cxt.error());\n },\n error: { message: \"must NOT be valid\" },\n};\nexports.default = def;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: code_1.validateUnion,\n error: { message: \"must match a schema in anyOf\" },\n};\nexports.default = def;\n//# sourceMappingURL=anyOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must match exactly one schema in oneOf\",\n params: ({ params }) => (0, codegen_1._) `{passingSchemas: ${params.passing}}`,\n};\nconst def = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n if (it.opts.discriminator && parentSchema.discriminator)\n return;\n const schArr = schema;\n const valid = gen.let(\"valid\", false);\n const passing = gen.let(\"passing\", null);\n const schValid = gen.name(\"_valid\");\n cxt.setParams({ passing });\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n gen.block(validateOneOf);\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n function validateOneOf() {\n schArr.forEach((sch, i) => {\n let schCxt;\n if ((0, util_1.alwaysValidSchema)(it, sch)) {\n gen.var(schValid, true);\n }\n else {\n schCxt = cxt.subschema({\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n }\n if (i > 0) {\n gen\n .if((0, codegen_1._) `${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, (0, codegen_1._) `[${passing}, ${i}]`)\n .else();\n }\n gen.if(schValid, () => {\n gen.assign(valid, true);\n gen.assign(passing, i);\n if (schCxt)\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=oneOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt) {\n const { gen, schema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const valid = gen.name(\"valid\");\n schema.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n const schCxt = cxt.subschema({ keyword: \"allOf\", schemaProp: i }, valid);\n cxt.ok(valid);\n cxt.mergeEvaluated(schCxt);\n });\n },\n};\nexports.default = def;\n//# sourceMappingURL=allOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params }) => (0, codegen_1.str) `must match \"${params.ifClause}\" schema`,\n params: ({ params }) => (0, codegen_1._) `{failingKeyword: ${params.ifClause}}`,\n};\nconst def = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, parentSchema, it } = cxt;\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n (0, util_1.checkStrictMode)(it, '\"if\" without \"then\" and \"else\" is ignored');\n }\n const hasThen = hasSchema(it, \"then\");\n const hasElse = hasSchema(it, \"else\");\n if (!hasThen && !hasElse)\n return;\n const valid = gen.let(\"valid\", true);\n const schValid = gen.name(\"_valid\");\n validateIf();\n cxt.reset();\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\");\n cxt.setParams({ ifClause });\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause));\n }\n else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"));\n }\n else {\n gen.if((0, codegen_1.not)(schValid), validateClause(\"else\"));\n }\n cxt.pass(valid, () => cxt.error(true));\n function validateIf() {\n const schCxt = cxt.subschema({\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, schValid);\n cxt.mergeEvaluated(schCxt);\n }\n function validateClause(keyword, ifClause) {\n return () => {\n const schCxt = cxt.subschema({ keyword }, schValid);\n gen.assign(valid, schValid);\n cxt.mergeValidEvaluated(schCxt, valid);\n if (ifClause)\n gen.assign(ifClause, (0, codegen_1._) `${keyword}`);\n else\n cxt.setParams({ ifClause: keyword });\n };\n }\n },\n};\nfunction hasSchema(it, keyword) {\n const schema = it.schema[keyword];\n return schema !== undefined && !(0, util_1.alwaysValidSchema)(it, schema);\n}\nexports.default = def;\n//# sourceMappingURL=if.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({ keyword, parentSchema, it }) {\n if (parentSchema.if === undefined)\n (0, util_1.checkStrictMode)(it, `\"${keyword}\" without \"if\" is ignored`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=thenElse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst additionalItems_1 = require(\"./additionalItems\");\nconst prefixItems_1 = require(\"./prefixItems\");\nconst items_1 = require(\"./items\");\nconst items2020_1 = require(\"./items2020\");\nconst contains_1 = require(\"./contains\");\nconst dependencies_1 = require(\"./dependencies\");\nconst propertyNames_1 = require(\"./propertyNames\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst properties_1 = require(\"./properties\");\nconst patternProperties_1 = require(\"./patternProperties\");\nconst not_1 = require(\"./not\");\nconst anyOf_1 = require(\"./anyOf\");\nconst oneOf_1 = require(\"./oneOf\");\nconst allOf_1 = require(\"./allOf\");\nconst if_1 = require(\"./if\");\nconst thenElse_1 = require(\"./thenElse\");\nfunction getApplicator(draft2020 = false) {\n const applicator = [\n // any\n not_1.default,\n anyOf_1.default,\n oneOf_1.default,\n allOf_1.default,\n if_1.default,\n thenElse_1.default,\n // object\n propertyNames_1.default,\n additionalProperties_1.default,\n dependencies_1.default,\n properties_1.default,\n patternProperties_1.default,\n ];\n // array\n if (draft2020)\n applicator.push(prefixItems_1.default, items2020_1.default);\n else\n applicator.push(additionalItems_1.default, items_1.default);\n applicator.push(contains_1.default);\n return applicator;\n}\nexports.default = getApplicator;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match format \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{format: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt, ruleType) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const { opts, errSchemaPath, schemaEnv, self } = it;\n if (!opts.validateFormats)\n return;\n if ($data)\n validate$DataFormat();\n else\n validateFormat();\n function validate$DataFormat() {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n });\n const fDef = gen.const(\"fDef\", (0, codegen_1._) `${fmts}[${schemaCode}]`);\n const fType = gen.let(\"fType\");\n const format = gen.let(\"format\");\n // TODO simplify\n gen.if((0, codegen_1._) `typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._) `${fDef}.type || \"string\"`).assign(format, (0, codegen_1._) `${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._) `\"string\"`).assign(format, fDef));\n cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt()));\n function unknownFmt() {\n if (opts.strictSchema === false)\n return codegen_1.nil;\n return (0, codegen_1._) `${schemaCode} && !${format}`;\n }\n function invalidFmt() {\n const callFormat = schemaEnv.$async\n ? (0, codegen_1._) `(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : (0, codegen_1._) `${format}(${data})`;\n const validData = (0, codegen_1._) `(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`;\n return (0, codegen_1._) `${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`;\n }\n }\n function validateFormat() {\n const formatDef = self.formats[schema];\n if (!formatDef) {\n unknownFormat();\n return;\n }\n if (formatDef === true)\n return;\n const [fmtType, format, fmtRef] = getFormat(formatDef);\n if (fmtType === ruleType)\n cxt.pass(validCondition());\n function unknownFormat() {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg());\n return;\n }\n throw new Error(unknownMsg());\n function unknownMsg() {\n return `unknown format \"${schema}\" ignored in schema at path \"${errSchemaPath}\"`;\n }\n }\n function getFormat(fmtDef) {\n const code = fmtDef instanceof RegExp\n ? (0, codegen_1.regexpCode)(fmtDef)\n : opts.code.formats\n ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(schema)}`\n : undefined;\n const fmt = gen.scopeValue(\"formats\", { key: schema, ref: fmtDef, code });\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, (0, codegen_1._) `${fmt}.validate`];\n }\n return [\"string\", fmtDef, fmt];\n }\n function validCondition() {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async)\n throw new Error(\"async format in sync schema\");\n return (0, codegen_1._) `await ${fmtRef}(${data})`;\n }\n return typeof format == \"function\" ? (0, codegen_1._) `${fmtRef}(${data})` : (0, codegen_1._) `${fmtRef}.test(${data})`;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst format = [format_1.default];\nexports.default = format;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.contentVocabulary = exports.metadataVocabulary = void 0;\nexports.metadataVocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n];\nexports.contentVocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n];\n//# sourceMappingURL=metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"./core\");\nconst validation_1 = require(\"./validation\");\nconst applicator_1 = require(\"./applicator\");\nconst format_1 = require(\"./format\");\nconst metadata_1 = require(\"./metadata\");\nconst draft7Vocabularies = [\n core_1.default,\n validation_1.default,\n (0, applicator_1.default)(),\n format_1.default,\n metadata_1.metadataVocabulary,\n metadata_1.contentVocabulary,\n];\nexports.default = draft7Vocabularies;\n//# sourceMappingURL=draft7.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiscrError = void 0;\nvar DiscrError;\n(function (DiscrError) {\n DiscrError[\"Tag\"] = \"tag\";\n DiscrError[\"Mapping\"] = \"mapping\";\n})(DiscrError || (exports.DiscrError = DiscrError = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst types_1 = require(\"../discriminator/types\");\nconst compile_1 = require(\"../../compile\");\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n};\nconst def = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt) {\n const { gen, data, schema, parentSchema, it } = cxt;\n const { oneOf } = parentSchema;\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\");\n }\n const tagName = schema.propertyName;\n if (typeof tagName != \"string\")\n throw new Error(\"discriminator: requires propertyName\");\n if (schema.mapping)\n throw new Error(\"discriminator: mapping is not supported\");\n if (!oneOf)\n throw new Error(\"discriminator: requires oneOf keyword\");\n const valid = gen.let(\"valid\", false);\n const tag = gen.const(\"tag\", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`);\n gen.if((0, codegen_1._) `typeof ${tag} == \"string\"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));\n cxt.ok(valid);\n function validateMapping() {\n const mapping = getMapping();\n gen.if(false);\n for (const tagValue in mapping) {\n gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`);\n gen.assign(valid, applyTagSchema(mapping[tagValue]));\n }\n gen.else();\n cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });\n gen.endIf();\n }\n function applyTagSchema(schemaProp) {\n const _valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({ keyword: \"oneOf\", schemaProp }, _valid);\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n return _valid;\n }\n function getMapping() {\n var _a;\n const oneOfMapping = {};\n const topRequired = hasRequired(parentSchema);\n let tagRequired = true;\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i];\n if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {\n const ref = sch.$ref;\n sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);\n if (sch instanceof compile_1.SchemaEnv)\n sch = sch.schema;\n if (sch === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);\n }\n const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];\n if (typeof propSch != \"object\") {\n throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`);\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch));\n addMappings(propSch, i);\n }\n if (!tagRequired)\n throw new Error(`discriminator: \"${tagName}\" must be required`);\n return oneOfMapping;\n function hasRequired({ required }) {\n return Array.isArray(required) && required.includes(tagName);\n }\n function addMappings(sch, i) {\n if (sch.const) {\n addMapping(sch.const, i);\n }\n else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i);\n }\n }\n else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`);\n }\n }\n function addMapping(tagValue, i) {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`);\n }\n oneOfMapping[tagValue] = i;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0;\nconst core_1 = require(\"./core\");\nconst draft7_1 = require(\"./vocabularies/draft7\");\nconst discriminator_1 = require(\"./vocabularies/discriminator\");\nconst draft7MetaSchema = require(\"./refs/json-schema-draft-07.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\";\nclass Ajv extends core_1.default {\n _addVocabularies() {\n super._addVocabularies();\n draft7_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n if (!this.opts.meta)\n return;\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema;\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nexports.Ajv = Ajv;\nmodule.exports = exports = Ajv;\nmodule.exports.Ajv = Ajv;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nvar validation_error_1 = require(\"./runtime/validation_error\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return validation_error_1.default; } });\nvar ref_error_1 = require(\"./compile/ref_error\");\nObject.defineProperty(exports, \"MissingRefError\", { enumerable: true, get: function () { return ref_error_1.default; } });\n//# sourceMappingURL=ajv.js.map","function naturalJoin(values, conjunction = \"or\") {\n switch (values.length) {\n case 0:\n return \"\";\n case 1:\n return values[0];\n case 2:\n return `${values[0]} ${conjunction} ${values[1]}`;\n default:\n return `${values.slice(0, -1).join(\", \")} ${conjunction} ${values.slice(-1)[0]}`;\n }\n}\n\nexport { naturalJoin as n };\n//# sourceMappingURL=natural-join.js.map\n","import { n as naturalJoin } from './utils/natural-join.js';\n\nfunction defineMetadata(metatable) {\n return metatable;\n}\n\nfunction allowedIfAttributeIsPresent(...attr) {\n return (node) => {\n if (attr.some((it) => node.hasAttribute(it))) {\n return null;\n }\n const expected = naturalJoin(attr.map((it) => `\"${it}\"`));\n return `requires ${expected} attribute to be present`;\n };\n}\nfunction allowedIfAttributeIsAbsent(...attr) {\n return (node) => {\n const present = attr.filter((it) => node.hasAttribute(it));\n if (present.length === 0) {\n return null;\n }\n const expected = naturalJoin(present.map((it) => `\"${it}\"`));\n return `cannot be used at the same time as ${expected}`;\n };\n}\nfunction allowedIfAttributeHasValue(key, expectedValue, { defaultValue } = {}) {\n return (node) => {\n const attr = node.getAttribute(key);\n if (attr && typeof attr !== \"string\") {\n return null;\n }\n const actualValue = attr ?? defaultValue;\n if (actualValue && expectedValue.includes(actualValue.toLocaleLowerCase())) {\n return null;\n }\n const expected = naturalJoin(expectedValue.map((it) => `\"${it}\"`));\n return `\"${key}\" attribute must be ${expected}`;\n };\n}\nfunction allowedIfParentIsPresent(...tags) {\n return (node) => {\n const match = tags.some((it) => node.closest(it));\n if (match) {\n return null;\n }\n const expected = naturalJoin(tags.map((it) => `<${it}>`));\n return `requires ${expected} as parent`;\n };\n}\nconst metadataHelper = {\n allowedIfAttributeIsPresent,\n allowedIfAttributeIsAbsent,\n allowedIfAttributeHasValue,\n allowedIfParentIsPresent\n};\n\nexport { defineMetadata as d, metadataHelper as m };\n//# sourceMappingURL=meta-helper.js.map\n","import { d as defineMetadata, m as metadataHelper } from './meta-helper.js';\n\nconst {\n allowedIfAttributeIsPresent,\n allowedIfAttributeIsAbsent,\n allowedIfAttributeHasValue,\n allowedIfParentIsPresent\n} = metadataHelper;\nconst validId = \"/\\\\S+/\";\nconst ReferrerPolicy = [\n \"\",\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"same-origin\",\n \"origin\",\n \"strict-origin\",\n \"origin-when-cross-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\"\n];\nfunction isInsideLandmark(node) {\n const selectors = [\n \"article\",\n \"aside\",\n \"main\",\n \"nav\",\n \"section\",\n '[role=\"article\"]',\n '[role=\"complementary\"]',\n '[role=\"main\"]',\n '[role=\"navigation\"]',\n '[role=\"region\"]'\n ];\n return Boolean(node.closest(selectors.join(\",\")));\n}\nfunction linkBodyOk(node) {\n if (node.hasAttribute(\"itemprop\")) {\n return true;\n }\n const rel = node.getAttribute(\"rel\");\n if (!rel) {\n return false;\n }\n if (typeof rel !== \"string\") {\n return false;\n }\n const bodyOk = [\n \"dns-prefetch\",\n \"modulepreload\",\n \"pingback\",\n \"preconnect\",\n \"prefetch\",\n \"preload\",\n \"stylesheet\"\n ];\n const tokens = rel.toLowerCase().split(/\\s+/);\n return tokens.some((keyword) => bodyOk.includes(keyword));\n}\nvar html5 = defineMetadata({\n \"*\": {\n attributes: {\n contenteditable: {\n omit: true,\n enum: [\"true\", \"false\"]\n },\n contextmenu: {\n deprecated: true\n },\n dir: {\n enum: [\"ltr\", \"rtl\", \"auto\"]\n },\n draggable: {\n enum: [\"true\", \"false\"]\n },\n hidden: {\n boolean: true\n },\n id: {\n enum: [validId]\n },\n inert: {\n boolean: true\n },\n spellcheck: {\n omit: true,\n enum: [\"true\", \"false\"]\n },\n tabindex: {\n enum: [\"/-?\\\\d+/\"]\n }\n }\n },\n a: {\n flow: true,\n focusable(node) {\n return node.hasAttribute(\"href\");\n },\n phrasing: true,\n interactive: true,\n transparent: true,\n attributes: {\n charset: {\n deprecated: true\n },\n coords: {\n deprecated: true\n },\n datafld: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n download: {\n allowed: allowedIfAttributeIsPresent(\"href\"),\n omit: true,\n enum: [\"/.+/\"]\n },\n href: {\n enum: [\"/.*/\"]\n },\n hreflang: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n itemprop: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n methods: {\n deprecated: true\n },\n name: {\n deprecated: true\n },\n ping: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n referrerpolicy: {\n allowed: allowedIfAttributeIsPresent(\"href\"),\n enum: ReferrerPolicy\n },\n rel: {\n allowed(node, attr) {\n if (!node.hasAttribute(\"href\")) {\n return `requires \"href\" attribute to be present`;\n }\n if (!attr || attr === \"\" || typeof attr !== \"string\") {\n return null;\n }\n const disallowed = [\n /* whatwg */\n \"canonical\",\n \"dns-prefetch\",\n \"expect\",\n \"icon\",\n \"manifest\",\n \"modulepreload\",\n \"pingback\",\n \"preconnect\",\n \"prefetch\",\n \"preload\",\n \"stylesheet\",\n /* microformats.org */\n \"apple-touch-icon\",\n \"apple-touch-icon-precomposed\",\n \"apple-touch-startup-image\",\n \"authorization_endpoint\",\n \"component\",\n \"chrome-webstore-item\",\n \"dns-prefetch\",\n \"edit\",\n \"gbfs\",\n \"gtfs-static\",\n \"gtfs-realtime\",\n \"import\",\n \"mask-icon\",\n \"meta\",\n \"micropub\",\n \"openid.delegate\",\n \"openid.server\",\n \"openid2.local_id\",\n \"openid2.provider\",\n \"p3pv1\",\n \"pgpkey\",\n \"schema.dcterms\",\n \"service\",\n \"shortlink\",\n \"sitemap\",\n \"subresource\",\n \"sword\",\n \"timesheet\",\n \"token_endpoint\",\n \"wlwmanifest\",\n \"stylesheet/less\",\n \"token_endpoint\",\n \"yandex-tableau-widget\"\n ];\n const tokens = attr.toLowerCase().split(/\\s+/);\n for (const keyword of tokens) {\n if (disallowed.includes(keyword)) {\n return `<a> does not allow rel=\"${keyword}\"`;\n }\n if (keyword.startsWith(\"dcterms.\")) {\n return `<a> does not allow rel=\"${keyword}\"`;\n }\n }\n return null;\n },\n list: true,\n enum: [\"/.+/\"]\n },\n shape: {\n deprecated: true\n },\n target: {\n allowed: allowedIfAttributeIsPresent(\"href\"),\n enum: [\"/[^_].*/\", \"_blank\", \"_self\", \"_parent\", \"_top\"]\n },\n type: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n urn: {\n deprecated: true\n }\n },\n permittedDescendants: [{ exclude: \"@interactive\" }],\n aria: {\n implicitRole(node) {\n return node.hasAttribute(\"href\") ? \"link\" : \"generic\";\n },\n naming(node) {\n return node.hasAttribute(\"href\") ? \"allowed\" : \"prohibited\";\n }\n }\n },\n abbr: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n acronym: {\n deprecated: {\n message: \"use <abbr> instead\",\n documentation: \"`<abbr>` can be used as a replacement.\",\n source: \"html5\"\n }\n },\n address: {\n flow: true,\n aria: {\n implicitRole: \"group\"\n },\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"address\", \"header\", \"footer\", \"@heading\", \"@sectioning\"] }]\n },\n applet: {\n deprecated: {\n source: \"html5\"\n },\n attributes: {\n datafld: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n }\n }\n },\n area: {\n flow(node) {\n return Boolean(node.closest(\"map\"));\n },\n focusable(node) {\n return node.hasAttribute(\"href\");\n },\n phrasing(node) {\n return Boolean(node.closest(\"map\"));\n },\n void: true,\n attributes: {\n alt: {},\n coords: {\n allowed(node) {\n const attr = node.getAttribute(\"shape\");\n if (attr === \"default\") {\n return `cannot be used when \"shape\" attribute is \"default\"`;\n } else {\n return null;\n }\n }\n },\n download: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n nohref: {\n deprecated: true\n },\n itemprop: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n ping: {\n allowed: allowedIfAttributeIsPresent(\"href\")\n },\n referrerpolicy: {\n allowed: allowedIfAttributeIsPresent(\"href\"),\n enum: ReferrerPolicy\n },\n rel: {\n allowed(node, attr) {\n if (!node.hasAttribute(\"href\")) {\n return `requires \"href\" attribute to be present`;\n }\n if (!attr || attr === \"\" || typeof attr !== \"string\") {\n return null;\n }\n const disallowed = [\n /* whatwg */\n \"canonical\",\n \"dns-prefetch\",\n \"expect\",\n \"icon\",\n \"manifest\",\n \"modulepreload\",\n \"pingback\",\n \"preconnect\",\n \"prefetch\",\n \"preload\",\n \"stylesheet\",\n /* microformats.org */\n \"apple-touch-icon\",\n \"apple-touch-icon-precomposed\",\n \"apple-touch-startup-image\",\n \"authorization_endpoint\",\n \"component\",\n \"chrome-webstore-item\",\n \"dns-prefetch\",\n \"edit\",\n \"gbfs\",\n \"gtfs-static\",\n \"gtfs-realtime\",\n \"import\",\n \"mask-icon\",\n \"meta\",\n \"micropub\",\n \"openid.delegate\",\n \"openid.server\",\n \"openid2.local_id\",\n \"openid2.provider\",\n \"p3pv1\",\n \"pgpkey\",\n \"schema.dcterms\",\n \"service\",\n \"shortlink\",\n \"sitemap\",\n \"subresource\",\n \"sword\",\n \"timesheet\",\n \"token_endpoint\",\n \"wlwmanifest\",\n \"stylesheet/less\",\n \"token_endpoint\",\n \"yandex-tableau-widget\"\n ];\n const tokens = attr.toLowerCase().split(/\\s+/);\n for (const keyword of tokens) {\n if (disallowed.includes(keyword)) {\n return `<area> does not allow rel=\"${keyword}\"`;\n }\n if (keyword.startsWith(\"dcterms.\")) {\n return `<area> does not allow rel=\"${keyword}\"`;\n }\n }\n return null;\n }\n },\n shape: {\n allowed(node, attr) {\n const shape = attr ?? \"rect\";\n switch (shape) {\n case \"circ\":\n case \"circle\":\n case \"poly\":\n case \"polygon\":\n case \"rect\":\n case \"rectangle\":\n return allowedIfAttributeIsPresent(\"coords\")(node, attr);\n default:\n return null;\n }\n },\n enum: [\"rect\", \"circle\", \"poly\", \"default\"]\n },\n target: {\n allowed: allowedIfAttributeIsPresent(\"href\"),\n enum: [\"/[^_].*/\", \"_blank\", \"_self\", \"_parent\", \"_top\"]\n }\n },\n aria: {\n implicitRole(node) {\n return node.hasAttribute(\"href\") ? \"link\" : \"generic\";\n },\n naming(node) {\n return node.hasAttribute(\"href\") ? \"allowed\" : \"prohibited\";\n }\n },\n requiredAncestors: [\"map\", \"template\"]\n },\n article: {\n flow: true,\n sectioning: true,\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"main\"] }],\n aria: {\n implicitRole: \"article\"\n }\n },\n aside: {\n flow: true,\n sectioning: true,\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"main\"] }],\n aria: {\n implicitRole: \"complementary\"\n }\n },\n audio: {\n flow: true,\n focusable(node) {\n return node.hasAttribute(\"controls\");\n },\n phrasing: true,\n embedded: true,\n interactive(node) {\n return node.hasAttribute(\"controls\");\n },\n transparent: [\"@flow\"],\n attributes: {\n crossorigin: {\n omit: true,\n enum: [\"anonymous\", \"use-credentials\"]\n },\n itemprop: {\n allowed: allowedIfAttributeIsPresent(\"src\")\n },\n preload: {\n omit: true,\n enum: [\"none\", \"metadata\", \"auto\"]\n }\n },\n permittedContent: [\"@flow\", \"track\", \"source\"],\n permittedDescendants: [{ exclude: [\"audio\", \"video\"] }],\n permittedOrder: [\"source\", \"track\", \"@flow\"]\n },\n b: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n base: {\n metadata: true,\n void: true,\n permittedParent: [\"head\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n basefont: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use CSS `font-size` property instead.\",\n source: \"html4\"\n }\n },\n bdi: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n bdo: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n bgsound: {\n deprecated: {\n message: \"use <audio> instead\",\n documentation: \"Use the `<audio>` element instead but consider accessibility concerns with autoplaying sounds.\",\n source: \"non-standard\"\n }\n },\n big: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use CSS `font-size` property instead.\",\n source: \"html5\"\n }\n },\n blink: {\n deprecated: {\n documentation: \"`<blink>` has no direct replacement and blinking text is frowned upon by accessibility standards.\",\n source: \"non-standard\"\n }\n },\n blockquote: {\n flow: true,\n sectioning: true,\n aria: {\n implicitRole: \"blockquote\"\n },\n permittedContent: [\"@flow\"]\n },\n body: {\n permittedContent: [\"@flow\"],\n permittedParent: [\"html\"],\n attributes: {\n alink: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n bgcolor: {\n deprecated: true\n },\n link: {\n deprecated: true\n },\n marginbottom: {\n deprecated: true\n },\n marginheight: {\n deprecated: true\n },\n marginleft: {\n deprecated: true\n },\n marginright: {\n deprecated: true\n },\n margintop: {\n deprecated: true\n },\n marginwidth: {\n deprecated: true\n },\n text: {\n deprecated: true\n },\n vlink: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n br: {\n flow: true,\n phrasing: true,\n void: true,\n attributes: {\n clear: {\n deprecated: true\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n button: {\n flow: true,\n focusable: true,\n phrasing: true,\n interactive: true,\n formAssociated: {\n disablable: true,\n listed: true\n },\n labelable: true,\n attributes: {\n autofocus: {\n boolean: true\n },\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n disabled: {\n boolean: true\n },\n formaction: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\"], { defaultValue: \"submit\" })\n },\n formenctype: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\"], { defaultValue: \"submit\" })\n },\n formmethod: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\"], { defaultValue: \"submit\" }),\n enum: [\"get\", \"post\", \"dialog\"]\n },\n formnovalidate: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\"], { defaultValue: \"submit\" }),\n boolean: true\n },\n formtarget: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\"], { defaultValue: \"submit\" }),\n enum: [\"/[^_].*/\", \"_blank\", \"_self\", \"_parent\", \"_top\"]\n },\n type: {\n enum: [\"submit\", \"reset\", \"button\"]\n }\n },\n aria: {\n implicitRole: \"button\"\n },\n permittedContent: [\"@phrasing\"],\n permittedDescendants: [{ exclude: [\"@interactive\"] }],\n textContent: \"accessible\"\n },\n canvas: {\n flow: true,\n phrasing: true,\n embedded: true,\n transparent: true\n },\n caption: {\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"table\"] }],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"caption\",\n naming: \"prohibited\"\n }\n },\n center: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use the CSS `text-align` or `margin: auto` properties instead.\",\n source: \"html4\"\n }\n },\n cite: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n code: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"code\",\n naming: \"prohibited\"\n }\n },\n col: {\n attributes: {\n align: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n span: {\n enum: [\"/\\\\d+/\"]\n },\n valign: {\n deprecated: true\n },\n width: {\n deprecated: true\n }\n },\n void: true,\n aria: {\n naming: \"prohibited\"\n }\n },\n colgroup: {\n implicitClosed: [\"colgroup\"],\n attributes: {\n span: {\n enum: [\"/\\\\d+/\"]\n }\n },\n permittedContent: [\"col\", \"template\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n data: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n datalist: {\n flow: true,\n phrasing: true,\n aria: {\n implicitRole: \"listbox\",\n naming: \"prohibited\"\n },\n permittedContent: [\"@phrasing\", \"option\"]\n },\n dd: {\n implicitClosed: [\"dd\", \"dt\"],\n permittedContent: [\"@flow\"],\n requiredAncestors: [\"dl > dd\", \"dl > div > dd\", \"template > dd\", \"template > div > dd\"]\n },\n del: {\n flow: true,\n phrasing: true,\n transparent: true,\n aria: {\n implicitRole: \"deletion\",\n naming: \"prohibited\"\n }\n },\n details: {\n flow: true,\n sectioning: true,\n interactive: true,\n attributes: {\n open: {\n boolean: true\n }\n },\n aria: {\n implicitRole: \"group\"\n },\n permittedContent: [\"summary\", \"@flow\"],\n permittedOrder: [\"summary\", \"@flow\"],\n requiredContent: [\"summary\"]\n },\n dfn: {\n flow: true,\n phrasing: true,\n aria: {\n implicitRole: \"term\"\n },\n permittedContent: [\"@phrasing\"],\n permittedDescendants: [{ exclude: [\"dfn\"] }]\n },\n dialog: {\n flow: true,\n permittedContent: [\"@flow\"],\n attributes: {\n open: {\n boolean: true\n }\n },\n aria: {\n implicitRole: \"dialog\"\n }\n },\n dir: {\n deprecated: {\n documentation: \"The non-standard `<dir>` element has no direct replacement but MDN recommends replacing with `<ul>` and CSS.\",\n source: \"html4\"\n }\n },\n div: {\n flow: true,\n permittedContent: [\"@flow\", \"dt\", \"dd\"],\n attributes: {\n align: {\n deprecated: true\n },\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n dl: {\n flow: true,\n permittedContent: [\"@script\", \"dt\", \"dd\", \"div\"],\n attributes: {\n compact: {\n deprecated: true\n }\n }\n },\n dt: {\n implicitClosed: [\"dd\", \"dt\"],\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"header\", \"footer\", \"@sectioning\", \"@heading\"] }],\n requiredAncestors: [\"dl > dt\", \"dl > div > dt\", \"template > dt\", \"template > div > dt\"]\n },\n em: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"emphasis\",\n naming: \"prohibited\"\n }\n },\n embed: {\n flow: true,\n phrasing: true,\n embedded: true,\n interactive: true,\n void: true,\n attributes: {\n height: {\n enum: [\"/\\\\d+/\"]\n },\n src: {\n required: true,\n enum: [\"/.+/\"]\n },\n title: {\n required: true\n },\n width: {\n enum: [\"/\\\\d+/\"]\n }\n }\n },\n fieldset: {\n flow: true,\n formAssociated: {\n disablable: true,\n listed: true\n },\n attributes: {\n datafld: {\n deprecated: true\n },\n disabled: {\n boolean: true\n }\n },\n aria: {\n implicitRole: \"group\"\n },\n permittedContent: [\"@flow\", \"legend?\"],\n permittedOrder: [\"legend\", \"@flow\"]\n },\n figcaption: {\n permittedContent: [\"@flow\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n figure: {\n flow: true,\n aria: {\n implicitRole: \"figure\"\n },\n permittedContent: [\"@flow\", \"figcaption?\"],\n permittedOrder: [\"figcaption\", \"@flow\", \"figcaption\"]\n },\n font: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use CSS font properties instead.\",\n source: \"html4\"\n }\n },\n footer: {\n flow: true,\n aria: {\n implicitRole(node) {\n if (isInsideLandmark(node)) {\n return \"generic\";\n } else {\n return \"contentinfo\";\n }\n },\n naming(node) {\n if (isInsideLandmark(node)) {\n return \"prohibited\";\n } else {\n return \"allowed\";\n }\n }\n },\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"header\", \"footer\", \"main\"] }]\n },\n form: {\n flow: true,\n form: true,\n attributes: {\n action: {\n enum: [/^\\s*\\S+\\s*$/]\n },\n accept: {\n deprecated: true\n },\n autocomplete: {\n enum: [\"on\", \"off\"]\n },\n method: {\n enum: [\"get\", \"post\", \"dialog\"]\n },\n novalidate: {\n boolean: true\n },\n rel: {\n allowed(_, attr) {\n if (!attr || attr === \"\" || typeof attr !== \"string\") {\n return null;\n }\n const disallowed = [\n /* whatwg */\n \"alternate\",\n \"canonical\",\n \"author\",\n \"bookmark\",\n \"dns-prefetch\",\n \"expect\",\n \"icon\",\n \"manifest\",\n \"modulepreload\",\n \"pingback\",\n \"preconnect\",\n \"prefetch\",\n \"preload\",\n \"privacy-policy\",\n \"stylesheet\",\n \"tag\",\n \"terms-of-service\"\n ];\n const tokens = attr.toLowerCase().split(/\\s+/);\n for (const keyword of tokens) {\n if (disallowed.includes(keyword)) {\n return `<form> does not allow rel=\"${keyword}\"`;\n }\n }\n return null;\n },\n list: true,\n enum: [\"/.+/\"]\n },\n target: {\n enum: [\"/[^_].*/\", \"_blank\", \"_self\", \"_parent\", \"_top\"]\n }\n },\n aria: {\n implicitRole: \"form\"\n },\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"@form\"] }]\n },\n frame: {\n deprecated: {\n documentation: \"The `<frame>` element can be replaced with the `<iframe>` element but a better solution is to remove usage of frames entirely.\",\n source: \"html5\"\n },\n attributes: {\n datafld: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n title: {\n required: true\n }\n }\n },\n frameset: {\n deprecated: {\n documentation: \"The `<frameset>` element can be replaced with the `<iframe>` element but a better solution is to remove usage of frames entirely.\",\n source: \"html5\"\n }\n },\n h1: {\n flow: true,\n heading: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"heading\"\n }\n },\n h2: {\n flow: true,\n heading: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"heading\"\n }\n },\n h3: {\n flow: true,\n heading: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"heading\"\n }\n },\n h4: {\n flow: true,\n heading: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"heading\"\n }\n },\n h5: {\n flow: true,\n heading: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"heading\"\n }\n },\n h6: {\n flow: true,\n heading: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"heading\"\n }\n },\n head: {\n permittedContent: [\"base?\", \"title?\", \"@meta\"],\n permittedParent: [\"html\"],\n requiredContent: [\"title\"],\n attributes: {\n profile: {\n deprecated: true\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n header: {\n flow: true,\n aria: {\n implicitRole(node) {\n if (isInsideLandmark(node)) {\n return \"generic\";\n } else {\n return \"banner\";\n }\n },\n naming(node) {\n if (isInsideLandmark(node)) {\n return \"prohibited\";\n } else {\n return \"allowed\";\n }\n }\n },\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"header\", \"footer\", \"main\"] }]\n },\n hgroup: {\n flow: true,\n heading: true,\n permittedContent: [\"p\", \"@heading?\"],\n permittedDescendants: [{ exclude: [\"hgroup\"] }],\n requiredContent: [\"@heading\"],\n aria: {\n implicitRole: \"group\"\n }\n },\n hr: {\n flow: true,\n void: true,\n attributes: {\n align: {\n deprecated: true\n },\n color: {\n deprecated: true\n },\n noshade: {\n deprecated: true\n },\n size: {\n deprecated: true\n },\n width: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"separator\"\n }\n },\n html: {\n permittedContent: [\"head?\", \"body?\"],\n permittedOrder: [\"head\", \"body\"],\n requiredContent: [\"head\", \"body\"],\n attributes: {\n lang: {\n required: true\n },\n version: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"document\",\n naming: \"prohibited\"\n }\n },\n i: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n iframe: {\n flow: true,\n phrasing: true,\n embedded: true,\n interactive: true,\n attributes: {\n align: {\n deprecated: true\n },\n allowtransparency: {\n deprecated: true\n },\n datafld: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n frameborder: {\n deprecated: true\n },\n height: {\n enum: [\"/\\\\d+/\"]\n },\n hspace: {\n deprecated: true\n },\n marginheight: {\n deprecated: true\n },\n marginwidth: {\n deprecated: true\n },\n referrerpolicy: {\n enum: ReferrerPolicy\n },\n scrolling: {\n deprecated: true\n },\n src: {\n enum: [\"/.+/\"]\n },\n title: {\n required: true\n },\n vspace: {\n deprecated: true\n },\n width: {\n enum: [\"/\\\\d+/\"]\n }\n },\n permittedContent: []\n },\n img: {\n flow: true,\n phrasing: true,\n embedded: true,\n interactive(node) {\n return node.hasAttribute(\"usemap\");\n },\n void: true,\n attributes: {\n align: {\n deprecated: true\n },\n border: {\n deprecated: true\n },\n crossorigin: {\n omit: true,\n enum: [\"anonymous\", \"use-credentials\"]\n },\n datafld: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n decoding: {\n enum: [\"sync\", \"async\", \"auto\"]\n },\n height: {\n enum: [\"/\\\\d+/\"]\n },\n hspace: {\n deprecated: true\n },\n ismap: {\n boolean: true\n },\n lowsrc: {\n deprecated: true\n },\n name: {\n deprecated: true\n },\n referrerpolicy: {\n enum: ReferrerPolicy\n },\n src: {\n required: true,\n enum: [\"/.+/\"]\n },\n srcset: {\n enum: [\"/[^]+/\"]\n },\n vspace: {\n deprecated: true\n },\n width: {\n enum: [\"/\\\\d+/\"]\n }\n },\n aria: {\n implicitRole(node) {\n const alt = node.getAttribute(\"alt\");\n const ariaLabel = node.getAttribute(\"aria-label\");\n const ariaLabelledBy = node.getAttribute(\"aria-labelledby\");\n const title = node.getAttribute(\"title\");\n if (alt === \"\" && !ariaLabel && !ariaLabelledBy && !title) {\n return \"none\";\n } else {\n return \"img\";\n }\n },\n naming(node) {\n const alt = node.getAttribute(\"alt\");\n const ariaLabel = node.getAttribute(\"aria-label\");\n const ariaLabelledBy = node.getAttribute(\"aria-labelledby\");\n const title = node.getAttribute(\"title\");\n if (!alt && !ariaLabel && !ariaLabelledBy && !title) {\n return \"prohibited\";\n } else {\n return \"allowed\";\n }\n }\n }\n },\n input: {\n flow: true,\n focusable(node) {\n return node.getAttribute(\"type\") !== \"hidden\";\n },\n phrasing: true,\n interactive(node) {\n return node.getAttribute(\"type\") !== \"hidden\";\n },\n void: true,\n formAssociated: {\n disablable: true,\n listed: true\n },\n labelable(node) {\n return node.getAttribute(\"type\") !== \"hidden\";\n },\n attributes: {\n align: {\n deprecated: true\n },\n autofocus: {\n boolean: true\n },\n capture: {\n omit: true,\n enum: [\"environment\", \"user\"]\n },\n checked: {\n boolean: true\n },\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n disabled: {\n boolean: true\n },\n formaction: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\", \"image\"], {\n defaultValue: \"submit\"\n })\n },\n formenctype: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\", \"image\"], {\n defaultValue: \"submit\"\n })\n },\n formmethod: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\", \"image\"], {\n defaultValue: \"submit\"\n }),\n enum: [\"get\", \"post\", \"dialog\"]\n },\n formnovalidate: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\", \"image\"], {\n defaultValue: \"submit\"\n }),\n boolean: true\n },\n formtarget: {\n allowed: allowedIfAttributeHasValue(\"type\", [\"submit\", \"image\"], {\n defaultValue: \"submit\"\n }),\n enum: [\"/[^_].*/\", \"_blank\", \"_self\", \"_parent\", \"_top\"]\n },\n hspace: {\n deprecated: true\n },\n inputmode: {\n enum: [\"none\", \"text\", \"decimal\", \"numeric\", \"tel\", \"search\", \"email\", \"url\"]\n },\n ismap: {\n deprecated: true\n },\n multiple: {\n boolean: true\n },\n readonly: {\n boolean: true\n },\n required: {\n boolean: true\n },\n type: {\n enum: [\n \"button\",\n \"checkbox\",\n \"color\",\n \"date\",\n \"datetime-local\",\n \"email\",\n \"file\",\n \"hidden\",\n \"image\",\n \"month\",\n \"number\",\n \"password\",\n \"radio\",\n \"range\",\n \"reset\",\n \"search\",\n \"submit\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\"\n ]\n },\n usemap: {\n deprecated: true\n },\n vspace: {\n deprecated: true\n }\n },\n aria: {\n /* eslint-disable-next-line complexity -- the standard is complicated */\n implicitRole(node) {\n const list = node.hasAttribute(\"list\");\n if (list) {\n return \"combobox\";\n }\n const type = node.getAttribute(\"type\");\n switch (type) {\n case \"button\":\n return \"button\";\n case \"checkbox\":\n return \"checkbox\";\n case \"color\":\n return null;\n case \"date\":\n return null;\n case \"datetime-local\":\n return null;\n case \"email\":\n return \"textbox\";\n case \"file\":\n return null;\n case \"hidden\":\n return null;\n case \"image\":\n return \"button\";\n case \"month\":\n return null;\n case \"number\":\n return \"spinbutton\";\n case \"password\":\n return null;\n case \"radio\":\n return \"radio\";\n case \"range\":\n return \"slider\";\n case \"reset\":\n return \"button\";\n case \"search\":\n return \"searchbox\";\n case \"submit\":\n return \"button\";\n case \"tel\":\n return \"textbox\";\n case \"text\":\n return \"textbox\";\n case \"time\":\n return null;\n case \"url\":\n return \"textbox\";\n case \"week\":\n return null;\n default:\n return \"textbox\";\n }\n },\n naming(node) {\n return node.getAttribute(\"type\") !== \"hidden\" ? \"allowed\" : \"prohibited\";\n }\n }\n },\n ins: {\n flow: true,\n phrasing: true,\n transparent: true,\n aria: {\n implicitRole: \"insertion\",\n naming: \"prohibited\"\n }\n },\n isindex: {\n deprecated: {\n source: \"html4\"\n }\n },\n kbd: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n keygen: {\n flow: true,\n phrasing: true,\n interactive: true,\n void: true,\n labelable: true,\n deprecated: true\n },\n label: {\n flow: true,\n phrasing: true,\n interactive: true,\n permittedContent: [\"@phrasing\"],\n permittedDescendants: [{ exclude: [\"label\"] }],\n attributes: {\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n for: {\n enum: [validId]\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n legend: {\n permittedContent: [\"@phrasing\", \"@heading\"],\n attributes: {\n align: {\n deprecated: true\n },\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n li: {\n implicitClosed: [\"li\"],\n permittedContent: [\"@flow\"],\n permittedParent: [\"ul\", \"ol\", \"menu\", \"template\"],\n attributes: {\n type: {\n deprecated: true\n }\n },\n aria: {\n implicitRole(node) {\n return node.closest(\"ul, ol, menu\") ? \"listitem\" : \"generic\";\n }\n }\n },\n link: {\n metadata: true,\n flow(node) {\n return linkBodyOk(node);\n },\n phrasing(node) {\n return linkBodyOk(node);\n },\n void: true,\n attributes: {\n as: {\n allowed: allowedIfAttributeHasValue(\"rel\", [\"prefetch\", \"preload\", \"modulepreload\"]),\n enum: [\n \"audio\",\n \"audioworklet\",\n \"document\",\n \"embed\",\n \"fetch\",\n \"font\",\n \"frame\",\n \"iframe\",\n \"image\",\n \"manifest\",\n \"object\",\n \"paintworklet\",\n \"report\",\n \"script\",\n \"serviceworker\",\n \"sharedworker\",\n \"style\",\n \"track\",\n \"video\",\n \"webidentity\",\n \"worker\",\n \"xslt\"\n ]\n },\n blocking: {\n allowed: allowedIfAttributeHasValue(\"rel\", [\"stylesheet\", \"preload\", \"modulepreload\"]),\n list: true,\n enum: [\"render\"]\n },\n charset: {\n deprecated: true\n },\n crossorigin: {\n omit: true,\n enum: [\"anonymous\", \"use-credentials\"]\n },\n disabled: {\n allowed: allowedIfAttributeHasValue(\"rel\", [\"stylesheet\"]),\n boolean: true\n },\n href: {\n required: true,\n enum: [\"/.+/\"]\n },\n integrity: {\n allowed: allowedIfAttributeHasValue(\"rel\", [\"stylesheet\", \"preload\", \"modulepreload\"]),\n enum: [\"/.+/\"]\n },\n methods: {\n deprecated: true\n },\n referrerpolicy: {\n enum: ReferrerPolicy\n },\n rel: {\n allowed(_, attr) {\n if (!attr || attr === \"\" || typeof attr !== \"string\") {\n return null;\n }\n const disallowed = [\n /* whatwg */\n \"bookmark\",\n \"external\",\n \"nofollow\",\n \"noopener\",\n \"noreferrer\",\n \"opener\",\n \"tag\",\n /* microformats.org */\n \"disclosure\",\n \"entry-content\",\n \"lightbox\",\n \"lightvideo\"\n ];\n const tokens = attr.toLowerCase().split(/\\s+/);\n for (const keyword of tokens) {\n if (disallowed.includes(keyword)) {\n return `<link> does not allow rel=\"${keyword}\"`;\n }\n }\n return null;\n },\n list: true,\n enum: [\"/.+/\"]\n },\n target: {\n deprecated: true\n },\n urn: {\n deprecated: true\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n listing: {\n deprecated: {\n source: \"html32\"\n }\n },\n main: {\n flow: true,\n aria: {\n implicitRole: \"main\"\n }\n },\n map: {\n flow: true,\n phrasing: true,\n transparent: true,\n attributes: {\n name: {\n required: true,\n enum: [\"/\\\\S+/\"]\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n mark: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n marquee: {\n deprecated: {\n documentation: \"Marked as obsolete by both W3C and WHATWG standards but still implemented in most browsers. Animated text should be avoided for accessibility reasons as well.\",\n source: \"html5\"\n },\n attributes: {\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n }\n }\n },\n math: {\n flow: true,\n foreign: true,\n phrasing: true,\n embedded: true,\n attributes: {\n align: {\n deprecated: true\n },\n dir: {\n enum: [\"ltr\", \"rtl\"]\n },\n display: {\n enum: [\"block\", \"inline\"]\n },\n hspace: {\n deprecated: true\n },\n name: {\n deprecated: true\n },\n overflow: {\n enum: [\"linebreak\", \"scroll\", \"elide\", \"truncate\", \"scale\"]\n },\n vspace: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"math\"\n }\n },\n menu: {\n flow: true,\n aria: {\n implicitRole: \"list\"\n },\n permittedContent: [\"@script\", \"li\"]\n },\n meta: {\n flow(node) {\n return node.hasAttribute(\"itemprop\");\n },\n phrasing(node) {\n return node.hasAttribute(\"itemprop\");\n },\n metadata: true,\n void: true,\n attributes: {\n charset: {\n enum: [\"utf-8\"]\n },\n content: {\n allowed: allowedIfAttributeIsPresent(\"name\", \"http-equiv\", \"itemprop\", \"property\")\n },\n itemprop: {\n allowed: allowedIfAttributeIsAbsent(\"http-equiv\", \"name\")\n },\n name: {\n allowed: allowedIfAttributeIsAbsent(\"http-equiv\", \"itemprop\")\n },\n \"http-equiv\": {\n allowed: allowedIfAttributeIsAbsent(\"name\", \"itemprop\")\n },\n scheme: {\n deprecated: true\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n meter: {\n flow: true,\n phrasing: true,\n labelable: true,\n aria: {\n implicitRole: \"meter\"\n },\n permittedContent: [\"@phrasing\"],\n permittedDescendants: [{ exclude: \"meter\" }]\n },\n multicol: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use CSS columns instead.\",\n source: \"html5\"\n }\n },\n nav: {\n flow: true,\n sectioning: true,\n aria: {\n implicitRole: \"navigation\"\n },\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: \"main\" }]\n },\n nextid: {\n deprecated: {\n source: \"html32\"\n }\n },\n nobr: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use CSS `white-space` property instead.\",\n source: \"non-standard\"\n }\n },\n noembed: {\n deprecated: {\n source: \"non-standard\"\n }\n },\n noframes: {\n deprecated: {\n source: \"html5\"\n }\n },\n noscript: {\n metadata: true,\n flow: true,\n phrasing: true,\n transparent: true,\n permittedDescendants: [{ exclude: \"noscript\" }],\n aria: {\n naming: \"prohibited\"\n }\n },\n object: {\n flow: true,\n phrasing: true,\n embedded: true,\n interactive(node) {\n return node.hasAttribute(\"usemap\");\n },\n transparent: true,\n formAssociated: {\n disablable: false,\n listed: true\n },\n attributes: {\n align: {\n deprecated: true\n },\n archive: {\n deprecated: true\n },\n blocking: {\n list: true,\n enum: [\"render\"]\n },\n border: {\n deprecated: true\n },\n classid: {\n deprecated: true\n },\n code: {\n deprecated: true\n },\n codebase: {\n deprecated: true\n },\n codetype: {\n deprecated: true\n },\n data: {\n enum: [\"/.+/\"],\n required: true\n },\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n declare: {\n deprecated: true\n },\n height: {\n enum: [\"/\\\\d+/\"]\n },\n hspace: {\n deprecated: true\n },\n name: {\n enum: [\"/[^_].*/\"]\n },\n standby: {\n deprecated: true\n },\n vspace: {\n deprecated: true\n },\n width: {\n enum: [\"/\\\\d+/\"]\n }\n },\n permittedContent: [\"param\", \"@flow\"],\n permittedOrder: [\"param\", \"@flow\"]\n },\n ol: {\n flow: true,\n attributes: {\n compact: {\n deprecated: true\n },\n reversed: {\n boolean: true\n },\n type: {\n enum: [\"a\", \"A\", \"i\", \"I\", \"1\"]\n }\n },\n aria: {\n implicitRole: \"list\"\n },\n permittedContent: [\"@script\", \"li\"]\n },\n optgroup: {\n implicitClosed: [\"optgroup\"],\n attributes: {\n disabled: {\n boolean: true\n }\n },\n aria: {\n implicitRole: \"group\"\n },\n permittedContent: [\"@script\", \"option\"]\n },\n option: {\n implicitClosed: [\"option\"],\n attributes: {\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n disabled: {\n boolean: true\n },\n name: {\n deprecated: true\n },\n selected: {\n boolean: true\n }\n },\n aria: {\n implicitRole: \"option\"\n },\n permittedContent: []\n },\n output: {\n flow: true,\n phrasing: true,\n formAssociated: {\n disablable: false,\n listed: true\n },\n labelable: true,\n aria: {\n implicitRole: \"status\"\n },\n permittedContent: [\"@phrasing\"]\n },\n p: {\n flow: true,\n implicitClosed: [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"div\",\n \"dl\",\n \"fieldset\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"main\",\n \"nav\",\n \"ol\",\n \"p\",\n \"pre\",\n \"section\",\n \"table\",\n \"ul\"\n ],\n permittedContent: [\"@phrasing\"],\n attributes: {\n align: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"paragraph\",\n naming: \"prohibited\"\n }\n },\n param: {\n void: true,\n attributes: {\n datafld: {\n deprecated: true\n },\n type: {\n deprecated: true\n },\n valuetype: {\n deprecated: true\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n picture: {\n flow: true,\n phrasing: true,\n embedded: true,\n permittedContent: [\"@script\", \"source\", \"img\"],\n permittedOrder: [\"source\", \"img\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n plaintext: {\n deprecated: {\n message: \"use <pre> or CSS instead\",\n documentation: \"Use the `<pre>` element or use CSS to set a monospace font.\",\n source: \"html2\"\n }\n },\n pre: {\n flow: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n width: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n progress: {\n flow: true,\n phrasing: true,\n labelable: true,\n aria: {\n implicitRole: \"progressbar\"\n },\n permittedContent: [\"@phrasing\"],\n permittedDescendants: [{ exclude: \"progress\" }]\n },\n q: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n rb: {\n implicitClosed: [\"rb\", \"rt\", \"rtc\", \"rp\"],\n permittedContent: [\"@phrasing\"]\n },\n rp: {\n implicitClosed: [\"rb\", \"rt\", \"rtc\", \"rp\"],\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n rt: {\n implicitClosed: [\"rb\", \"rt\", \"rtc\", \"rp\"],\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n rtc: {\n implicitClosed: [\"rb\", \"rtc\", \"rp\"],\n permittedContent: [\"@phrasing\", \"rt\"]\n },\n ruby: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\", \"rb\", \"rp\", \"rt\", \"rtc\"]\n },\n s: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"deletion\",\n naming: \"prohibited\"\n }\n },\n samp: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n script: {\n metadata: true,\n flow: true,\n phrasing: true,\n scriptSupporting: true,\n attributes: {\n async: {\n boolean: true\n },\n crossorigin: {\n omit: true,\n enum: [\"anonymous\", \"use-credentials\"]\n },\n defer: {\n boolean: true\n },\n event: {\n deprecated: true\n },\n for: {\n deprecated: true\n },\n integrity: {\n allowed: allowedIfAttributeIsPresent(\"src\"),\n enum: [\"/.+/\"]\n },\n language: {\n deprecated: true\n },\n nomodule: {\n boolean: true\n },\n referrerpolicy: {\n enum: ReferrerPolicy\n },\n src: {\n enum: [\"/.+/\"]\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n search: {\n flow: true,\n aria: {\n implicitRole: \"search\"\n }\n },\n section: {\n flow: true,\n sectioning: true,\n aria: {\n implicitRole(node) {\n const name = node.hasAttribute(\"aria-label\") || node.hasAttribute(\"aria-labelledby\");\n return name ? \"region\" : \"generic\";\n }\n },\n permittedContent: [\"@flow\"]\n },\n select: {\n flow: true,\n focusable: true,\n phrasing: true,\n interactive: true,\n formAssociated: {\n disablable: true,\n listed: true\n },\n labelable: true,\n attributes: {\n autofocus: {\n boolean: true\n },\n disabled: {\n boolean: true\n },\n multiple: {\n boolean: true\n },\n required: {\n boolean: true\n },\n size: {\n enum: [\"/\\\\d+/\"]\n }\n },\n aria: {\n implicitRole(node) {\n const multiple = node.hasAttribute(\"multiple\");\n if (multiple) {\n return \"listbox\";\n }\n const size = node.getAttribute(\"size\");\n if (typeof size === \"string\") {\n const parsed = parseInt(size, 10);\n if (parsed > 1) {\n return \"listbox\";\n }\n }\n return \"combobox\";\n }\n },\n permittedContent: [\"@script\", \"datasrc\", \"datafld\", \"dataformatas\", \"option\", \"optgroup\"]\n },\n slot: {\n flow: true,\n phrasing: true,\n transparent: true,\n aria: {\n naming: \"prohibited\"\n }\n },\n small: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n source: {\n void: true,\n attributes: {\n type: {},\n media: {},\n src: {\n allowed: allowedIfParentIsPresent(\"audio\", \"video\")\n },\n srcset: {\n allowed: allowedIfParentIsPresent(\"picture\")\n },\n sizes: {\n allowed: allowedIfParentIsPresent(\"picture\")\n },\n width: {\n allowed: allowedIfParentIsPresent(\"picture\"),\n enum: [\"/\\\\d+/\"]\n },\n height: {\n allowed: allowedIfParentIsPresent(\"picture\"),\n enum: [\"/\\\\d+/\"]\n }\n },\n aria: {\n naming: \"prohibited\"\n }\n },\n spacer: {\n deprecated: {\n message: \"use CSS instead\",\n documentation: \"Use CSS margin or padding instead.\",\n source: \"non-standard\"\n }\n },\n span: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n attributes: {\n datafld: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n strike: {\n deprecated: {\n message: \"use <del> or <s> instead\",\n documentation: \"Use the `<del>` or `<s>` element instead.\",\n source: \"html5\"\n }\n },\n strong: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"strong\",\n naming: \"prohibited\"\n }\n },\n style: {\n metadata: true,\n aria: {\n naming: \"prohibited\"\n }\n },\n sub: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"subscript\",\n naming: \"prohibited\"\n }\n },\n summary: {\n permittedContent: [\"@phrasing\", \"@heading\"],\n focusable(node) {\n return Boolean(node.closest(\"details\"));\n },\n aria: {\n implicitRole: \"button\"\n }\n },\n sup: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"superscript\",\n naming: \"prohibited\"\n }\n },\n svg: {\n flow: true,\n foreign: true,\n phrasing: true,\n embedded: true,\n aria: {\n implicitRole: \"graphics-document\"\n }\n },\n /* while not part of HTML 5 specification these two elements are handled as\n * special cases to allow them as accessible text and to avoid issues with\n * \"no-unknown-elements\" they are added here */\n \"svg:desc\": {},\n \"svg:title\": {},\n table: {\n flow: true,\n permittedContent: [\"@script\", \"caption?\", \"colgroup\", \"tbody\", \"tfoot?\", \"thead?\", \"tr\"],\n permittedOrder: [\"caption\", \"colgroup\", \"thead\", \"tbody\", \"tr\", \"tfoot\"],\n attributes: {\n align: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n bgcolor: {\n deprecated: true\n },\n bordercolor: {\n deprecated: true\n },\n cellpadding: {\n deprecated: true\n },\n cellspacing: {\n deprecated: true\n },\n dataformatas: {\n deprecated: true\n },\n datapagesize: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n frame: {\n deprecated: true\n },\n rules: {\n deprecated: true\n },\n summary: {\n deprecated: true\n },\n width: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"table\"\n }\n },\n tbody: {\n implicitClosed: [\"tbody\", \"tfoot\"],\n permittedContent: [\"@script\", \"tr\"],\n attributes: {\n align: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n valign: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"rowgroup\"\n }\n },\n td: {\n flow: true,\n implicitClosed: [\"td\", \"th\"],\n attributes: {\n align: {\n deprecated: true\n },\n axis: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n bgcolor: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n colspan: {\n enum: [\"/\\\\d+/\"]\n },\n height: {\n deprecated: true\n },\n nowrap: {\n deprecated: true\n },\n rowspan: {\n enum: [\"/\\\\d+/\"]\n },\n scope: {\n deprecated: true\n },\n valign: {\n deprecated: true\n },\n width: {\n deprecated: true\n }\n },\n aria: {\n implicitRole(node) {\n const table = node.closest(\"table\");\n const tableRole = table?.getAttribute(\"role\") ?? \"table\";\n switch (tableRole) {\n case \"table\":\n return \"cell\";\n case \"grid\":\n case \"treegrid\":\n return \"gridcell\";\n default:\n return null;\n }\n }\n },\n permittedContent: [\"@flow\"]\n },\n template: {\n metadata: true,\n flow: true,\n phrasing: true,\n scriptSupporting: true,\n templateRoot: true,\n aria: {\n naming: \"prohibited\"\n }\n },\n textarea: {\n flow: true,\n focusable: true,\n phrasing: true,\n interactive: true,\n formAssociated: {\n disablable: true,\n listed: true\n },\n labelable: true,\n attributes: {\n autocomplete: {},\n autofocus: {\n boolean: true\n },\n cols: {\n enum: [\"/\\\\d+/\"]\n },\n datafld: {\n deprecated: true\n },\n datasrc: {\n deprecated: true\n },\n disabled: {\n boolean: true\n },\n maxlength: {\n enum: [\"/\\\\d+/\"]\n },\n minlength: {\n enum: [\"/\\\\d+/\"]\n },\n readonly: {\n boolean: true\n },\n required: {\n boolean: true\n },\n rows: {\n enum: [\"/\\\\d+/\"]\n },\n wrap: {\n enum: [\"hard\", \"soft\"]\n }\n },\n aria: {\n implicitRole: \"textbox\"\n },\n permittedContent: []\n },\n tfoot: {\n implicitClosed: [\"tbody\"],\n permittedContent: [\"@script\", \"tr\"],\n attributes: {\n align: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n valign: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"rowgroup\"\n }\n },\n th: {\n flow: true,\n implicitClosed: [\"td\", \"th\"],\n attributes: {\n align: {\n deprecated: true\n },\n axis: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n bgcolor: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n colspan: {\n enum: [\"/\\\\d+/\"]\n },\n height: {\n deprecated: true\n },\n nowrap: {\n deprecated: true\n },\n rowspan: {\n enum: [\"/\\\\d+/\"]\n },\n scope: {\n enum: [\"row\", \"col\", \"rowgroup\", \"colgroup\"]\n },\n valign: {\n deprecated: true\n },\n width: {\n deprecated: true\n }\n },\n aria: {\n implicitRole(node) {\n const table = node.closest(\"table\");\n const tableRole = table?.getAttribute(\"role\") ?? \"table\";\n if (typeof tableRole !== \"string\" || ![\"table\", \"grid\", \"treegrid\"].includes(tableRole)) {\n return null;\n }\n const scope = node.getAttribute(\"scope\");\n switch (scope) {\n case \"col\":\n return \"columnheader\";\n case \"row\":\n return \"rowheader\";\n default:\n return tableRole === \"table\" ? \"cell\" : \"gridcell\";\n }\n }\n },\n permittedContent: [\"@flow\"],\n permittedDescendants: [{ exclude: [\"header\", \"footer\", \"@sectioning\", \"@heading\"] }]\n },\n thead: {\n implicitClosed: [\"tbody\", \"tfoot\"],\n permittedContent: [\"@script\", \"tr\"],\n attributes: {\n align: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n valign: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"rowgroup\"\n }\n },\n time: {\n flow: true,\n phrasing: true,\n aria: {\n implicitRole: \"time\",\n naming: \"prohibited\"\n },\n permittedContent: [\"@phrasing\"]\n },\n title: {\n metadata: true,\n permittedContent: [],\n permittedParent: [\"head\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n tr: {\n implicitClosed: [\"tr\"],\n permittedContent: [\"@script\", \"td\", \"th\"],\n attributes: {\n align: {\n deprecated: true\n },\n background: {\n deprecated: true\n },\n bgcolor: {\n deprecated: true\n },\n char: {\n deprecated: true\n },\n charoff: {\n deprecated: true\n },\n valign: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"row\"\n }\n },\n track: {\n void: true,\n aria: {\n naming: \"prohibited\"\n }\n },\n tt: {\n deprecated: {\n documentation: \"Use a more semantically correct element such as `<code>`, `<var>` or `<pre>`.\",\n source: \"html4\"\n }\n },\n u: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n implicitRole: \"generic\",\n naming: \"prohibited\"\n }\n },\n ul: {\n flow: true,\n permittedContent: [\"@script\", \"li\"],\n attributes: {\n compact: {\n deprecated: true\n },\n type: {\n deprecated: true\n }\n },\n aria: {\n implicitRole: \"list\"\n }\n },\n var: {\n flow: true,\n phrasing: true,\n permittedContent: [\"@phrasing\"],\n aria: {\n naming: \"prohibited\"\n }\n },\n video: {\n flow: true,\n focusable(node) {\n return node.hasAttribute(\"controls\");\n },\n phrasing: true,\n embedded: true,\n interactive(node) {\n return node.hasAttribute(\"controls\");\n },\n transparent: [\"@flow\"],\n attributes: {\n crossorigin: {\n omit: true,\n enum: [\"anonymous\", \"use-credentials\"]\n },\n height: {\n enum: [\"/\\\\d+/\"]\n },\n itemprop: {\n allowed: allowedIfAttributeIsPresent(\"src\")\n },\n preload: {\n omit: true,\n enum: [\"none\", \"metadata\", \"auto\"]\n },\n width: {\n enum: [\"/\\\\d+/\"]\n }\n },\n permittedContent: [\"@flow\", \"track\", \"source\"],\n permittedDescendants: [{ exclude: [\"audio\", \"video\"] }],\n permittedOrder: [\"source\", \"track\", \"@flow\"]\n },\n wbr: {\n flow: true,\n phrasing: true,\n void: true,\n aria: {\n naming: \"prohibited\"\n }\n },\n xmp: {\n deprecated: {\n documentation: \"Use `<pre>` or `<code>` and escape content using HTML entities instead.\",\n source: \"html32\"\n }\n }\n});\n\nconst bundledElements = {\n html5\n};\n\nvar entities = [\n\t\"Á\",\n\t\"á\",\n\t\"Á\",\n\t\"á\",\n\t\"Ă\",\n\t\"ă\",\n\t\"∾\",\n\t\"∿\",\n\t\"∾̳\",\n\t\"Â\",\n\t\"â\",\n\t\"Â\",\n\t\"â\",\n\t\"´\",\n\t\"´\",\n\t\"А\",\n\t\"а\",\n\t\"Æ\",\n\t\"æ\",\n\t\"Æ\",\n\t\"æ\",\n\t\"⁡\",\n\t\"𝔄\",\n\t\"𝔞\",\n\t\"À\",\n\t\"à\",\n\t\"À\",\n\t\"à\",\n\t\"ℵ\",\n\t\"ℵ\",\n\t\"Α\",\n\t\"α\",\n\t\"Ā\",\n\t\"ā\",\n\t\"⨿\",\n\t\"&\",\n\t\"&\",\n\t\"&\",\n\t\"&\",\n\t\"⩓\",\n\t\"∧\",\n\t\"⩕\",\n\t\"⩜\",\n\t\"⩘\",\n\t\"⩚\",\n\t\"∠\",\n\t\"⦤\",\n\t\"∠\",\n\t\"∡\",\n\t\"⦨\",\n\t\"⦩\",\n\t\"⦪\",\n\t\"⦫\",\n\t\"⦬\",\n\t\"⦭\",\n\t\"⦮\",\n\t\"⦯\",\n\t\"∟\",\n\t\"⊾\",\n\t\"⦝\",\n\t\"∢\",\n\t\"Å\",\n\t\"⍼\",\n\t\"Ą\",\n\t\"ą\",\n\t\"𝔸\",\n\t\"𝕒\",\n\t\"≈\",\n\t\"⩯\",\n\t\"⩰\",\n\t\"≊\",\n\t\"≋\",\n\t\"'\",\n\t\"⁡\",\n\t\"≈\",\n\t\"≊\",\n\t\"Å\",\n\t\"å\",\n\t\"Å\",\n\t\"å\",\n\t\"𝒜\",\n\t\"𝒶\",\n\t\"≔\",\n\t\"*\",\n\t\"≈\",\n\t\"≍\",\n\t\"Ã\",\n\t\"ã\",\n\t\"Ã\",\n\t\"ã\",\n\t\"Ä\",\n\t\"ä\",\n\t\"Ä\",\n\t\"ä\",\n\t\"∳\",\n\t\"⨑\",\n\t\"≌\",\n\t\"϶\",\n\t\"‵\",\n\t\"∽\",\n\t\"⋍\",\n\t\"∖\",\n\t\"⫧\",\n\t\"⊽\",\n\t\"⌆\",\n\t\"⌅\",\n\t\"⌅\",\n\t\"⎵\",\n\t\"⎶\",\n\t\"≌\",\n\t\"Б\",\n\t\"б\",\n\t\"„\",\n\t\"∵\",\n\t\"∵\",\n\t\"∵\",\n\t\"⦰\",\n\t\"϶\",\n\t\"ℬ\",\n\t\"ℬ\",\n\t\"Β\",\n\t\"β\",\n\t\"ℶ\",\n\t\"≬\",\n\t\"𝔅\",\n\t\"𝔟\",\n\t\"⋂\",\n\t\"◯\",\n\t\"⋃\",\n\t\"⨀\",\n\t\"⨁\",\n\t\"⨂\",\n\t\"⨆\",\n\t\"★\",\n\t\"▽\",\n\t\"△\",\n\t\"⨄\",\n\t\"⋁\",\n\t\"⋀\",\n\t\"⤍\",\n\t\"⧫\",\n\t\"▪\",\n\t\"▴\",\n\t\"▾\",\n\t\"◂\",\n\t\"▸\",\n\t\"␣\",\n\t\"▒\",\n\t\"░\",\n\t\"▓\",\n\t\"█\",\n\t\"=⃥\",\n\t\"≡⃥\",\n\t\"⫭\",\n\t\"⌐\",\n\t\"𝔹\",\n\t\"𝕓\",\n\t\"⊥\",\n\t\"⊥\",\n\t\"⋈\",\n\t\"⧉\",\n\t\"╗\",\n\t\"╖\",\n\t\"╕\",\n\t\"┐\",\n\t\"╔\",\n\t\"╓\",\n\t\"╒\",\n\t\"┌\",\n\t\"═\",\n\t\"─\",\n\t\"╦\",\n\t\"╤\",\n\t\"╥\",\n\t\"┬\",\n\t\"╩\",\n\t\"╧\",\n\t\"╨\",\n\t\"┴\",\n\t\"⊟\",\n\t\"⊞\",\n\t\"⊠\",\n\t\"╝\",\n\t\"╜\",\n\t\"╛\",\n\t\"┘\",\n\t\"╚\",\n\t\"╙\",\n\t\"╘\",\n\t\"└\",\n\t\"║\",\n\t\"│\",\n\t\"╬\",\n\t\"╫\",\n\t\"╪\",\n\t\"┼\",\n\t\"╣\",\n\t\"╢\",\n\t\"╡\",\n\t\"┤\",\n\t\"╠\",\n\t\"╟\",\n\t\"╞\",\n\t\"├\",\n\t\"‵\",\n\t\"˘\",\n\t\"˘\",\n\t\"¦\",\n\t\"¦\",\n\t\"ℬ\",\n\t\"𝒷\",\n\t\"⁏\",\n\t\"∽\",\n\t\"⋍\",\n\t\"\\",\n\t\"⧅\",\n\t\"⟈\",\n\t\"•\",\n\t\"•\",\n\t\"≎\",\n\t\"⪮\",\n\t\"≏\",\n\t\"≎\",\n\t\"≏\",\n\t\"Ć\",\n\t\"ć\",\n\t\"⋒\",\n\t\"∩\",\n\t\"⩄\",\n\t\"⩉\",\n\t\"⩋\",\n\t\"⩇\",\n\t\"⩀\",\n\t\"ⅅ\",\n\t\"∩︀\",\n\t\"⁁\",\n\t\"ˇ\",\n\t\"ℭ\",\n\t\"⩍\",\n\t\"Č\",\n\t\"č\",\n\t\"Ç\",\n\t\"ç\",\n\t\"Ç\",\n\t\"ç\",\n\t\"Ĉ\",\n\t\"ĉ\",\n\t\"∰\",\n\t\"⩌\",\n\t\"⩐\",\n\t\"Ċ\",\n\t\"ċ\",\n\t\"¸\",\n\t\"¸\",\n\t\"¸\",\n\t\"⦲\",\n\t\"¢\",\n\t\"¢\",\n\t\"·\",\n\t\"·\",\n\t\"ℭ\",\n\t\"𝔠\",\n\t\"Ч\",\n\t\"ч\",\n\t\"✓\",\n\t\"✓\",\n\t\"Χ\",\n\t\"χ\",\n\t\"○\",\n\t\"ˆ\",\n\t\"≗\",\n\t\"↺\",\n\t\"↻\",\n\t\"⊛\",\n\t\"⊚\",\n\t\"⊝\",\n\t\"⊙\",\n\t\"®\",\n\t\"Ⓢ\",\n\t\"⊖\",\n\t\"⊕\",\n\t\"⊗\",\n\t\"⧃\",\n\t\"≗\",\n\t\"⨐\",\n\t\"⫯\",\n\t\"⧂\",\n\t\"∲\",\n\t\"”\",\n\t\"’\",\n\t\"♣\",\n\t\"♣\",\n\t\"∷\",\n\t\":\",\n\t\"⩴\",\n\t\"≔\",\n\t\"≔\",\n\t\",\",\n\t\"@\",\n\t\"∁\",\n\t\"∘\",\n\t\"∁\",\n\t\"ℂ\",\n\t\"≅\",\n\t\"⩭\",\n\t\"≡\",\n\t\"∯\",\n\t\"∮\",\n\t\"∮\",\n\t\"ℂ\",\n\t\"𝕔\",\n\t\"∐\",\n\t\"∐\",\n\t\"©\",\n\t\"©\",\n\t\"©\",\n\t\"©\",\n\t\"℗\",\n\t\"∳\",\n\t\"↵\",\n\t\"⨯\",\n\t\"✗\",\n\t\"𝒞\",\n\t\"𝒸\",\n\t\"⫏\",\n\t\"⫑\",\n\t\"⫐\",\n\t\"⫒\",\n\t\"⋯\",\n\t\"⤸\",\n\t\"⤵\",\n\t\"⋞\",\n\t\"⋟\",\n\t\"↶\",\n\t\"⤽\",\n\t\"⋓\",\n\t\"∪\",\n\t\"⩈\",\n\t\"≍\",\n\t\"⩆\",\n\t\"⩊\",\n\t\"⊍\",\n\t\"⩅\",\n\t\"∪︀\",\n\t\"↷\",\n\t\"⤼\",\n\t\"⋞\",\n\t\"⋟\",\n\t\"⋎\",\n\t\"⋏\",\n\t\"¤\",\n\t\"¤\",\n\t\"↶\",\n\t\"↷\",\n\t\"⋎\",\n\t\"⋏\",\n\t\"∲\",\n\t\"∱\",\n\t\"⌭\",\n\t\"‡\",\n\t\"†\",\n\t\"ℸ\",\n\t\"↡\",\n\t\"⇓\",\n\t\"↓\",\n\t\"‐\",\n\t\"⫤\",\n\t\"⊣\",\n\t\"⤏\",\n\t\"˝\",\n\t\"Ď\",\n\t\"ď\",\n\t\"Д\",\n\t\"д\",\n\t\"ⅅ\",\n\t\"ⅆ\",\n\t\"‡\",\n\t\"⇊\",\n\t\"⤑\",\n\t\"⩷\",\n\t\"°\",\n\t\"°\",\n\t\"∇\",\n\t\"Δ\",\n\t\"δ\",\n\t\"⦱\",\n\t\"⥿\",\n\t\"𝔇\",\n\t\"𝔡\",\n\t\"⥥\",\n\t\"⇃\",\n\t\"⇂\",\n\t\"´\",\n\t\"˙\",\n\t\"˝\",\n\t\"`\",\n\t\"˜\",\n\t\"⋄\",\n\t\"⋄\",\n\t\"⋄\",\n\t\"♦\",\n\t\"♦\",\n\t\"¨\",\n\t\"ⅆ\",\n\t\"ϝ\",\n\t\"⋲\",\n\t\"÷\",\n\t\"÷\",\n\t\"÷\",\n\t\"⋇\",\n\t\"⋇\",\n\t\"Ђ\",\n\t\"ђ\",\n\t\"⌞\",\n\t\"⌍\",\n\t\"$\",\n\t\"𝔻\",\n\t\"𝕕\",\n\t\"¨\",\n\t\"˙\",\n\t\"⃜\",\n\t\"≐\",\n\t\"≑\",\n\t\"≐\",\n\t\"∸\",\n\t\"∔\",\n\t\"⊡\",\n\t\"⌆\",\n\t\"∯\",\n\t\"¨\",\n\t\"⇓\",\n\t\"⇐\",\n\t\"⇔\",\n\t\"⫤\",\n\t\"⟸\",\n\t\"⟺\",\n\t\"⟹\",\n\t\"⇒\",\n\t\"⊨\",\n\t\"⇑\",\n\t\"⇕\",\n\t\"∥\",\n\t\"↓\",\n\t\"⇓\",\n\t\"↓\",\n\t\"⤓\",\n\t\"⇵\",\n\t\"̑\",\n\t\"⇊\",\n\t\"⇃\",\n\t\"⇂\",\n\t\"⥐\",\n\t\"⥞\",\n\t\"↽\",\n\t\"⥖\",\n\t\"⥟\",\n\t\"⇁\",\n\t\"⥗\",\n\t\"⊤\",\n\t\"↧\",\n\t\"⤐\",\n\t\"⌟\",\n\t\"⌌\",\n\t\"𝒟\",\n\t\"𝒹\",\n\t\"Ѕ\",\n\t\"ѕ\",\n\t\"⧶\",\n\t\"Đ\",\n\t\"đ\",\n\t\"⋱\",\n\t\"▿\",\n\t\"▾\",\n\t\"⇵\",\n\t\"⥯\",\n\t\"⦦\",\n\t\"Џ\",\n\t\"џ\",\n\t\"⟿\",\n\t\"É\",\n\t\"é\",\n\t\"É\",\n\t\"é\",\n\t\"⩮\",\n\t\"Ě\",\n\t\"ě\",\n\t\"≖\",\n\t\"Ê\",\n\t\"ê\",\n\t\"Ê\",\n\t\"ê\",\n\t\"≕\",\n\t\"Э\",\n\t\"э\",\n\t\"⩷\",\n\t\"Ė\",\n\t\"≑\",\n\t\"ė\",\n\t\"ⅇ\",\n\t\"≒\",\n\t\"𝔈\",\n\t\"𝔢\",\n\t\"⪚\",\n\t\"È\",\n\t\"è\",\n\t\"È\",\n\t\"è\",\n\t\"⪖\",\n\t\"⪘\",\n\t\"⪙\",\n\t\"∈\",\n\t\"⏧\",\n\t\"ℓ\",\n\t\"⪕\",\n\t\"⪗\",\n\t\"Ē\",\n\t\"ē\",\n\t\"∅\",\n\t\"∅\",\n\t\"◻\",\n\t\"∅\",\n\t\"▫\",\n\t\" \",\n\t\" \",\n\t\" \",\n\t\"Ŋ\",\n\t\"ŋ\",\n\t\" \",\n\t\"Ę\",\n\t\"ę\",\n\t\"𝔼\",\n\t\"𝕖\",\n\t\"⋕\",\n\t\"⧣\",\n\t\"⩱\",\n\t\"ε\",\n\t\"Ε\",\n\t\"ε\",\n\t\"ϵ\",\n\t\"≖\",\n\t\"≕\",\n\t\"≂\",\n\t\"⪖\",\n\t\"⪕\",\n\t\"⩵\",\n\t\"=\",\n\t\"≂\",\n\t\"≟\",\n\t\"⇌\",\n\t\"≡\",\n\t\"⩸\",\n\t\"⧥\",\n\t\"⥱\",\n\t\"≓\",\n\t\"ℰ\",\n\t\"ℯ\",\n\t\"≐\",\n\t\"⩳\",\n\t\"≂\",\n\t\"Η\",\n\t\"η\",\n\t\"Ð\",\n\t\"ð\",\n\t\"Ð\",\n\t\"ð\",\n\t\"Ë\",\n\t\"ë\",\n\t\"Ë\",\n\t\"ë\",\n\t\"€\",\n\t\"!\",\n\t\"∃\",\n\t\"∃\",\n\t\"ℰ\",\n\t\"ⅇ\",\n\t\"ⅇ\",\n\t\"≒\",\n\t\"Ф\",\n\t\"ф\",\n\t\"♀\",\n\t\"ffi\",\n\t\"ff\",\n\t\"ffl\",\n\t\"𝔉\",\n\t\"𝔣\",\n\t\"fi\",\n\t\"◼\",\n\t\"▪\",\n\t\"fj\",\n\t\"♭\",\n\t\"fl\",\n\t\"▱\",\n\t\"ƒ\",\n\t\"𝔽\",\n\t\"𝕗\",\n\t\"∀\",\n\t\"∀\",\n\t\"⋔\",\n\t\"⫙\",\n\t\"ℱ\",\n\t\"⨍\",\n\t\"½\",\n\t\"½\",\n\t\"⅓\",\n\t\"¼\",\n\t\"¼\",\n\t\"⅕\",\n\t\"⅙\",\n\t\"⅛\",\n\t\"⅔\",\n\t\"⅖\",\n\t\"¾\",\n\t\"¾\",\n\t\"⅗\",\n\t\"⅜\",\n\t\"⅘\",\n\t\"⅚\",\n\t\"⅝\",\n\t\"⅞\",\n\t\"⁄\",\n\t\"⌢\",\n\t\"ℱ\",\n\t\"𝒻\",\n\t\"ǵ\",\n\t\"Γ\",\n\t\"γ\",\n\t\"Ϝ\",\n\t\"ϝ\",\n\t\"⪆\",\n\t\"Ğ\",\n\t\"ğ\",\n\t\"Ģ\",\n\t\"Ĝ\",\n\t\"ĝ\",\n\t\"Г\",\n\t\"г\",\n\t\"Ġ\",\n\t\"ġ\",\n\t\"≧\",\n\t\"≥\",\n\t\"⪌\",\n\t\"⋛\",\n\t\"≥\",\n\t\"≧\",\n\t\"⩾\",\n\t\"⩾\",\n\t\"⪩\",\n\t\"⪀\",\n\t\"⪂\",\n\t\"⪄\",\n\t\"⋛︀\",\n\t\"⪔\",\n\t\"𝔊\",\n\t\"𝔤\",\n\t\"⋙\",\n\t\"≫\",\n\t\"⋙\",\n\t\"ℷ\",\n\t\"Ѓ\",\n\t\"ѓ\",\n\t\"≷\",\n\t\"⪥\",\n\t\"⪒\",\n\t\"⪤\",\n\t\"⪊\",\n\t\"⪊\",\n\t\"≩\",\n\t\"⪈\",\n\t\"⪈\",\n\t\"≩\",\n\t\"⋧\",\n\t\"𝔾\",\n\t\"𝕘\",\n\t\"`\",\n\t\"≥\",\n\t\"⋛\",\n\t\"≧\",\n\t\"⪢\",\n\t\"≷\",\n\t\"⩾\",\n\t\"≳\",\n\t\"𝒢\",\n\t\"ℊ\",\n\t\"≳\",\n\t\"⪎\",\n\t\"⪐\",\n\t\">\",\n\t\">\",\n\t\">\",\n\t\"≫\",\n\t\">\",\n\t\"⪧\",\n\t\"⩺\",\n\t\"⋗\",\n\t\"⦕\",\n\t\"⩼\",\n\t\"⪆\",\n\t\"⥸\",\n\t\"⋗\",\n\t\"⋛\",\n\t\"⪌\",\n\t\"≷\",\n\t\"≳\",\n\t\"≩︀\",\n\t\"≩︀\",\n\t\"ˇ\",\n\t\" \",\n\t\"½\",\n\t\"ℋ\",\n\t\"Ъ\",\n\t\"ъ\",\n\t\"⇔\",\n\t\"↔\",\n\t\"⥈\",\n\t\"↭\",\n\t\"^\",\n\t\"ℏ\",\n\t\"Ĥ\",\n\t\"ĥ\",\n\t\"♥\",\n\t\"♥\",\n\t\"…\",\n\t\"⊹\",\n\t\"ℌ\",\n\t\"𝔥\",\n\t\"ℋ\",\n\t\"⤥\",\n\t\"⤦\",\n\t\"⇿\",\n\t\"∻\",\n\t\"↩\",\n\t\"↪\",\n\t\"ℍ\",\n\t\"𝕙\",\n\t\"―\",\n\t\"─\",\n\t\"ℋ\",\n\t\"𝒽\",\n\t\"ℏ\",\n\t\"Ħ\",\n\t\"ħ\",\n\t\"≎\",\n\t\"≏\",\n\t\"⁃\",\n\t\"‐\",\n\t\"Í\",\n\t\"í\",\n\t\"Í\",\n\t\"í\",\n\t\"⁣\",\n\t\"Î\",\n\t\"î\",\n\t\"Î\",\n\t\"î\",\n\t\"И\",\n\t\"и\",\n\t\"İ\",\n\t\"Е\",\n\t\"е\",\n\t\"¡\",\n\t\"¡\",\n\t\"⇔\",\n\t\"ℑ\",\n\t\"𝔦\",\n\t\"Ì\",\n\t\"ì\",\n\t\"Ì\",\n\t\"ì\",\n\t\"ⅈ\",\n\t\"⨌\",\n\t\"∭\",\n\t\"⧜\",\n\t\"℩\",\n\t\"IJ\",\n\t\"ij\",\n\t\"ℑ\",\n\t\"Ī\",\n\t\"ī\",\n\t\"ℑ\",\n\t\"ⅈ\",\n\t\"ℐ\",\n\t\"ℑ\",\n\t\"ı\",\n\t\"⊷\",\n\t\"Ƶ\",\n\t\"⇒\",\n\t\"∈\",\n\t\"℅\",\n\t\"∞\",\n\t\"⧝\",\n\t\"ı\",\n\t\"∬\",\n\t\"∫\",\n\t\"⊺\",\n\t\"ℤ\",\n\t\"∫\",\n\t\"⊺\",\n\t\"⋂\",\n\t\"⨗\",\n\t\"⨼\",\n\t\"⁣\",\n\t\"⁢\",\n\t\"Ё\",\n\t\"ё\",\n\t\"Į\",\n\t\"į\",\n\t\"𝕀\",\n\t\"𝕚\",\n\t\"Ι\",\n\t\"ι\",\n\t\"⨼\",\n\t\"¿\",\n\t\"¿\",\n\t\"ℐ\",\n\t\"𝒾\",\n\t\"∈\",\n\t\"⋵\",\n\t\"⋹\",\n\t\"⋴\",\n\t\"⋳\",\n\t\"∈\",\n\t\"⁢\",\n\t\"Ĩ\",\n\t\"ĩ\",\n\t\"І\",\n\t\"і\",\n\t\"Ï\",\n\t\"ï\",\n\t\"Ï\",\n\t\"ï\",\n\t\"Ĵ\",\n\t\"ĵ\",\n\t\"Й\",\n\t\"й\",\n\t\"𝔍\",\n\t\"𝔧\",\n\t\"ȷ\",\n\t\"𝕁\",\n\t\"𝕛\",\n\t\"𝒥\",\n\t\"𝒿\",\n\t\"Ј\",\n\t\"ј\",\n\t\"Є\",\n\t\"є\",\n\t\"Κ\",\n\t\"κ\",\n\t\"ϰ\",\n\t\"Ķ\",\n\t\"ķ\",\n\t\"К\",\n\t\"к\",\n\t\"𝔎\",\n\t\"𝔨\",\n\t\"ĸ\",\n\t\"Х\",\n\t\"х\",\n\t\"Ќ\",\n\t\"ќ\",\n\t\"𝕂\",\n\t\"𝕜\",\n\t\"𝒦\",\n\t\"𝓀\",\n\t\"⇚\",\n\t\"Ĺ\",\n\t\"ĺ\",\n\t\"⦴\",\n\t\"ℒ\",\n\t\"Λ\",\n\t\"λ\",\n\t\"⟪\",\n\t\"⟨\",\n\t\"⦑\",\n\t\"⟨\",\n\t\"⪅\",\n\t\"ℒ\",\n\t\"«\",\n\t\"«\",\n\t\"↞\",\n\t\"⇐\",\n\t\"←\",\n\t\"⇤\",\n\t\"⤟\",\n\t\"⤝\",\n\t\"↩\",\n\t\"↫\",\n\t\"⤹\",\n\t\"⥳\",\n\t\"↢\",\n\t\"⪫\",\n\t\"⤛\",\n\t\"⤙\",\n\t\"⪭\",\n\t\"⪭︀\",\n\t\"⤎\",\n\t\"⤌\",\n\t\"❲\",\n\t\"{\",\n\t\"[\",\n\t\"⦋\",\n\t\"⦏\",\n\t\"⦍\",\n\t\"Ľ\",\n\t\"ľ\",\n\t\"Ļ\",\n\t\"ļ\",\n\t\"⌈\",\n\t\"{\",\n\t\"Л\",\n\t\"л\",\n\t\"⤶\",\n\t\"“\",\n\t\"„\",\n\t\"⥧\",\n\t\"⥋\",\n\t\"↲\",\n\t\"≦\",\n\t\"≤\",\n\t\"⟨\",\n\t\"←\",\n\t\"⇐\",\n\t\"←\",\n\t\"⇤\",\n\t\"⇆\",\n\t\"↢\",\n\t\"⌈\",\n\t\"⟦\",\n\t\"⥡\",\n\t\"⇃\",\n\t\"⥙\",\n\t\"⌊\",\n\t\"↽\",\n\t\"↼\",\n\t\"⇇\",\n\t\"↔\",\n\t\"⇔\",\n\t\"↔\",\n\t\"⇆\",\n\t\"⇋\",\n\t\"↭\",\n\t\"⥎\",\n\t\"⊣\",\n\t\"↤\",\n\t\"⥚\",\n\t\"⋋\",\n\t\"⊲\",\n\t\"⧏\",\n\t\"⊴\",\n\t\"⥑\",\n\t\"⥠\",\n\t\"↿\",\n\t\"⥘\",\n\t\"↼\",\n\t\"⥒\",\n\t\"⪋\",\n\t\"⋚\",\n\t\"≤\",\n\t\"≦\",\n\t\"⩽\",\n\t\"⩽\",\n\t\"⪨\",\n\t\"⩿\",\n\t\"⪁\",\n\t\"⪃\",\n\t\"⋚︀\",\n\t\"⪓\",\n\t\"⪅\",\n\t\"⋖\",\n\t\"⋚\",\n\t\"⪋\",\n\t\"⋚\",\n\t\"≦\",\n\t\"≶\",\n\t\"≶\",\n\t\"⪡\",\n\t\"≲\",\n\t\"⩽\",\n\t\"≲\",\n\t\"⥼\",\n\t\"⌊\",\n\t\"𝔏\",\n\t\"𝔩\",\n\t\"≶\",\n\t\"⪑\",\n\t\"⥢\",\n\t\"↽\",\n\t\"↼\",\n\t\"⥪\",\n\t\"▄\",\n\t\"Љ\",\n\t\"љ\",\n\t\"⋘\",\n\t\"≪\",\n\t\"⇇\",\n\t\"⌞\",\n\t\"⇚\",\n\t\"⥫\",\n\t\"◺\",\n\t\"Ŀ\",\n\t\"ŀ\",\n\t\"⎰\",\n\t\"⎰\",\n\t\"⪉\",\n\t\"⪉\",\n\t\"≨\",\n\t\"⪇\",\n\t\"⪇\",\n\t\"≨\",\n\t\"⋦\",\n\t\"⟬\",\n\t\"⇽\",\n\t\"⟦\",\n\t\"⟵\",\n\t\"⟸\",\n\t\"⟵\",\n\t\"⟷\",\n\t\"⟺\",\n\t\"⟷\",\n\t\"⟼\",\n\t\"⟶\",\n\t\"⟹\",\n\t\"⟶\",\n\t\"↫\",\n\t\"↬\",\n\t\"⦅\",\n\t\"𝕃\",\n\t\"𝕝\",\n\t\"⨭\",\n\t\"⨴\",\n\t\"∗\",\n\t\"_\",\n\t\"↙\",\n\t\"↘\",\n\t\"◊\",\n\t\"◊\",\n\t\"⧫\",\n\t\"(\",\n\t\"⦓\",\n\t\"⇆\",\n\t\"⌟\",\n\t\"⇋\",\n\t\"⥭\",\n\t\"‎\",\n\t\"⊿\",\n\t\"‹\",\n\t\"ℒ\",\n\t\"𝓁\",\n\t\"↰\",\n\t\"↰\",\n\t\"≲\",\n\t\"⪍\",\n\t\"⪏\",\n\t\"[\",\n\t\"‘\",\n\t\"‚\",\n\t\"Ł\",\n\t\"ł\",\n\t\"<\",\n\t\"<\",\n\t\"<\",\n\t\"≪\",\n\t\"<\",\n\t\"⪦\",\n\t\"⩹\",\n\t\"⋖\",\n\t\"⋋\",\n\t\"⋉\",\n\t\"⥶\",\n\t\"⩻\",\n\t\"◃\",\n\t\"⊴\",\n\t\"◂\",\n\t\"⦖\",\n\t\"⥊\",\n\t\"⥦\",\n\t\"≨︀\",\n\t\"≨︀\",\n\t\"¯\",\n\t\"¯\",\n\t\"♂\",\n\t\"✠\",\n\t\"✠\",\n\t\"⤅\",\n\t\"↦\",\n\t\"↦\",\n\t\"↧\",\n\t\"↤\",\n\t\"↥\",\n\t\"▮\",\n\t\"⨩\",\n\t\"М\",\n\t\"м\",\n\t\"—\",\n\t\"∺\",\n\t\"∡\",\n\t\" \",\n\t\"ℳ\",\n\t\"𝔐\",\n\t\"𝔪\",\n\t\"℧\",\n\t\"µ\",\n\t\"µ\",\n\t\"∣\",\n\t\"*\",\n\t\"⫰\",\n\t\"·\",\n\t\"·\",\n\t\"−\",\n\t\"⊟\",\n\t\"∸\",\n\t\"⨪\",\n\t\"∓\",\n\t\"⫛\",\n\t\"…\",\n\t\"∓\",\n\t\"⊧\",\n\t\"𝕄\",\n\t\"𝕞\",\n\t\"∓\",\n\t\"ℳ\",\n\t\"𝓂\",\n\t\"∾\",\n\t\"Μ\",\n\t\"μ\",\n\t\"⊸\",\n\t\"⊸\",\n\t\"∇\",\n\t\"Ń\",\n\t\"ń\",\n\t\"∠⃒\",\n\t\"≉\",\n\t\"⩰̸\",\n\t\"≋̸\",\n\t\"ʼn\",\n\t\"≉\",\n\t\"♮\",\n\t\"♮\",\n\t\"ℕ\",\n\t\" \",\n\t\" \",\n\t\"≎̸\",\n\t\"≏̸\",\n\t\"⩃\",\n\t\"Ň\",\n\t\"ň\",\n\t\"Ņ\",\n\t\"ņ\",\n\t\"≇\",\n\t\"⩭̸\",\n\t\"⩂\",\n\t\"Н\",\n\t\"н\",\n\t\"–\",\n\t\"≠\",\n\t\"⤤\",\n\t\"⇗\",\n\t\"↗\",\n\t\"↗\",\n\t\"≐̸\",\n\t\"​\",\n\t\"​\",\n\t\"​\",\n\t\"​\",\n\t\"≢\",\n\t\"⤨\",\n\t\"≂̸\",\n\t\"≫\",\n\t\"≪\",\n\t\"
\",\n\t\"∄\",\n\t\"∄\",\n\t\"𝔑\",\n\t\"𝔫\",\n\t\"≧̸\",\n\t\"≱\",\n\t\"≱\",\n\t\"≧̸\",\n\t\"⩾̸\",\n\t\"⩾̸\",\n\t\"⋙̸\",\n\t\"≵\",\n\t\"≫⃒\",\n\t\"≯\",\n\t\"≯\",\n\t\"≫̸\",\n\t\"⇎\",\n\t\"↮\",\n\t\"⫲\",\n\t\"∋\",\n\t\"⋼\",\n\t\"⋺\",\n\t\"∋\",\n\t\"Њ\",\n\t\"њ\",\n\t\"⇍\",\n\t\"↚\",\n\t\"‥\",\n\t\"≦̸\",\n\t\"≰\",\n\t\"⇍\",\n\t\"↚\",\n\t\"⇎\",\n\t\"↮\",\n\t\"≰\",\n\t\"≦̸\",\n\t\"⩽̸\",\n\t\"⩽̸\",\n\t\"≮\",\n\t\"⋘̸\",\n\t\"≴\",\n\t\"≪⃒\",\n\t\"≮\",\n\t\"⋪\",\n\t\"⋬\",\n\t\"≪̸\",\n\t\"∤\",\n\t\"⁠\",\n\t\" \",\n\t\"ℕ\",\n\t\"𝕟\",\n\t\"¬\",\n\t\"⫬\",\n\t\"¬\",\n\t\"≢\",\n\t\"≭\",\n\t\"∦\",\n\t\"∉\",\n\t\"≠\",\n\t\"≂̸\",\n\t\"∄\",\n\t\"≯\",\n\t\"≱\",\n\t\"≧̸\",\n\t\"≫̸\",\n\t\"≹\",\n\t\"⩾̸\",\n\t\"≵\",\n\t\"≎̸\",\n\t\"≏̸\",\n\t\"∉\",\n\t\"⋵̸\",\n\t\"⋹̸\",\n\t\"∉\",\n\t\"⋷\",\n\t\"⋶\",\n\t\"⋪\",\n\t\"⧏̸\",\n\t\"⋬\",\n\t\"≮\",\n\t\"≰\",\n\t\"≸\",\n\t\"≪̸\",\n\t\"⩽̸\",\n\t\"≴\",\n\t\"⪢̸\",\n\t\"⪡̸\",\n\t\"∌\",\n\t\"∌\",\n\t\"⋾\",\n\t\"⋽\",\n\t\"⊀\",\n\t\"⪯̸\",\n\t\"⋠\",\n\t\"∌\",\n\t\"⋫\",\n\t\"⧐̸\",\n\t\"⋭\",\n\t\"⊏̸\",\n\t\"⋢\",\n\t\"⊐̸\",\n\t\"⋣\",\n\t\"⊂⃒\",\n\t\"⊈\",\n\t\"⊁\",\n\t\"⪰̸\",\n\t\"⋡\",\n\t\"≿̸\",\n\t\"⊃⃒\",\n\t\"⊉\",\n\t\"≁\",\n\t\"≄\",\n\t\"≇\",\n\t\"≉\",\n\t\"∤\",\n\t\"∦\",\n\t\"∦\",\n\t\"⫽⃥\",\n\t\"∂̸\",\n\t\"⨔\",\n\t\"⊀\",\n\t\"⋠\",\n\t\"⪯̸\",\n\t\"⊀\",\n\t\"⪯̸\",\n\t\"⇏\",\n\t\"↛\",\n\t\"⤳̸\",\n\t\"↝̸\",\n\t\"⇏\",\n\t\"↛\",\n\t\"⋫\",\n\t\"⋭\",\n\t\"⊁\",\n\t\"⋡\",\n\t\"⪰̸\",\n\t\"𝒩\",\n\t\"𝓃\",\n\t\"∤\",\n\t\"∦\",\n\t\"≁\",\n\t\"≄\",\n\t\"≄\",\n\t\"∤\",\n\t\"∦\",\n\t\"⋢\",\n\t\"⋣\",\n\t\"⊄\",\n\t\"⫅̸\",\n\t\"⊈\",\n\t\"⊂⃒\",\n\t\"⊈\",\n\t\"⫅̸\",\n\t\"⊁\",\n\t\"⪰̸\",\n\t\"⊅\",\n\t\"⫆̸\",\n\t\"⊉\",\n\t\"⊃⃒\",\n\t\"⊉\",\n\t\"⫆̸\",\n\t\"≹\",\n\t\"Ñ\",\n\t\"ñ\",\n\t\"Ñ\",\n\t\"ñ\",\n\t\"≸\",\n\t\"⋪\",\n\t\"⋬\",\n\t\"⋫\",\n\t\"⋭\",\n\t\"Ν\",\n\t\"ν\",\n\t\"#\",\n\t\"№\",\n\t\" \",\n\t\"≍⃒\",\n\t\"⊯\",\n\t\"⊮\",\n\t\"⊭\",\n\t\"⊬\",\n\t\"≥⃒\",\n\t\">⃒\",\n\t\"⤄\",\n\t\"⧞\",\n\t\"⤂\",\n\t\"≤⃒\",\n\t\"<⃒\",\n\t\"⊴⃒\",\n\t\"⤃\",\n\t\"⊵⃒\",\n\t\"∼⃒\",\n\t\"⤣\",\n\t\"⇖\",\n\t\"↖\",\n\t\"↖\",\n\t\"⤧\",\n\t\"Ó\",\n\t\"ó\",\n\t\"Ó\",\n\t\"ó\",\n\t\"⊛\",\n\t\"⊚\",\n\t\"Ô\",\n\t\"ô\",\n\t\"Ô\",\n\t\"ô\",\n\t\"О\",\n\t\"о\",\n\t\"⊝\",\n\t\"Ő\",\n\t\"ő\",\n\t\"⨸\",\n\t\"⊙\",\n\t\"⦼\",\n\t\"Œ\",\n\t\"œ\",\n\t\"⦿\",\n\t\"𝔒\",\n\t\"𝔬\",\n\t\"˛\",\n\t\"Ò\",\n\t\"ò\",\n\t\"Ò\",\n\t\"ò\",\n\t\"⧁\",\n\t\"⦵\",\n\t\"Ω\",\n\t\"∮\",\n\t\"↺\",\n\t\"⦾\",\n\t\"⦻\",\n\t\"‾\",\n\t\"⧀\",\n\t\"Ō\",\n\t\"ō\",\n\t\"Ω\",\n\t\"ω\",\n\t\"Ο\",\n\t\"ο\",\n\t\"⦶\",\n\t\"⊖\",\n\t\"𝕆\",\n\t\"𝕠\",\n\t\"⦷\",\n\t\"“\",\n\t\"‘\",\n\t\"⦹\",\n\t\"⊕\",\n\t\"⩔\",\n\t\"∨\",\n\t\"↻\",\n\t\"⩝\",\n\t\"ℴ\",\n\t\"ℴ\",\n\t\"ª\",\n\t\"ª\",\n\t\"º\",\n\t\"º\",\n\t\"⊶\",\n\t\"⩖\",\n\t\"⩗\",\n\t\"⩛\",\n\t\"Ⓢ\",\n\t\"𝒪\",\n\t\"ℴ\",\n\t\"Ø\",\n\t\"ø\",\n\t\"Ø\",\n\t\"ø\",\n\t\"⊘\",\n\t\"Õ\",\n\t\"õ\",\n\t\"Õ\",\n\t\"õ\",\n\t\"⨷\",\n\t\"⊗\",\n\t\"⨶\",\n\t\"Ö\",\n\t\"ö\",\n\t\"Ö\",\n\t\"ö\",\n\t\"⌽\",\n\t\"‾\",\n\t\"⏞\",\n\t\"⎴\",\n\t\"⏜\",\n\t\"∥\",\n\t\"¶\",\n\t\"¶\",\n\t\"∥\",\n\t\"⫳\",\n\t\"⫽\",\n\t\"∂\",\n\t\"∂\",\n\t\"П\",\n\t\"п\",\n\t\"%\",\n\t\".\",\n\t\"‰\",\n\t\"⊥\",\n\t\"‱\",\n\t\"𝔓\",\n\t\"𝔭\",\n\t\"Φ\",\n\t\"φ\",\n\t\"ϕ\",\n\t\"ℳ\",\n\t\"☎\",\n\t\"Π\",\n\t\"π\",\n\t\"⋔\",\n\t\"ϖ\",\n\t\"ℏ\",\n\t\"ℎ\",\n\t\"ℏ\",\n\t\"+\",\n\t\"⨣\",\n\t\"⊞\",\n\t\"⨢\",\n\t\"∔\",\n\t\"⨥\",\n\t\"⩲\",\n\t\"±\",\n\t\"±\",\n\t\"±\",\n\t\"⨦\",\n\t\"⨧\",\n\t\"±\",\n\t\"ℌ\",\n\t\"⨕\",\n\t\"ℙ\",\n\t\"𝕡\",\n\t\"£\",\n\t\"£\",\n\t\"⪻\",\n\t\"≺\",\n\t\"⪷\",\n\t\"≼\",\n\t\"⪳\",\n\t\"⪯\",\n\t\"≺\",\n\t\"⪷\",\n\t\"≼\",\n\t\"≺\",\n\t\"⪯\",\n\t\"≼\",\n\t\"≾\",\n\t\"⪯\",\n\t\"⪹\",\n\t\"⪵\",\n\t\"⋨\",\n\t\"≾\",\n\t\"″\",\n\t\"′\",\n\t\"ℙ\",\n\t\"⪹\",\n\t\"⪵\",\n\t\"⋨\",\n\t\"∏\",\n\t\"∏\",\n\t\"⌮\",\n\t\"⌒\",\n\t\"⌓\",\n\t\"∝\",\n\t\"∷\",\n\t\"∝\",\n\t\"∝\",\n\t\"≾\",\n\t\"⊰\",\n\t\"𝒫\",\n\t\"𝓅\",\n\t\"Ψ\",\n\t\"ψ\",\n\t\" \",\n\t\"𝔔\",\n\t\"𝔮\",\n\t\"⨌\",\n\t\"ℚ\",\n\t\"𝕢\",\n\t\"⁗\",\n\t\"𝒬\",\n\t\"𝓆\",\n\t\"ℍ\",\n\t\"⨖\",\n\t\"?\",\n\t\"≟\",\n\t\""\",\n\t\""\",\n\t\""\",\n\t\""\",\n\t\"⇛\",\n\t\"∽̱\",\n\t\"Ŕ\",\n\t\"ŕ\",\n\t\"√\",\n\t\"⦳\",\n\t\"⟫\",\n\t\"⟩\",\n\t\"⦒\",\n\t\"⦥\",\n\t\"⟩\",\n\t\"»\",\n\t\"»\",\n\t\"↠\",\n\t\"⇒\",\n\t\"→\",\n\t\"⥵\",\n\t\"⇥\",\n\t\"⤠\",\n\t\"⤳\",\n\t\"⤞\",\n\t\"↪\",\n\t\"↬\",\n\t\"⥅\",\n\t\"⥴\",\n\t\"⤖\",\n\t\"↣\",\n\t\"↝\",\n\t\"⤜\",\n\t\"⤚\",\n\t\"∶\",\n\t\"ℚ\",\n\t\"⤐\",\n\t\"⤏\",\n\t\"⤍\",\n\t\"❳\",\n\t\"}\",\n\t\"]\",\n\t\"⦌\",\n\t\"⦎\",\n\t\"⦐\",\n\t\"Ř\",\n\t\"ř\",\n\t\"Ŗ\",\n\t\"ŗ\",\n\t\"⌉\",\n\t\"}\",\n\t\"Р\",\n\t\"р\",\n\t\"⤷\",\n\t\"⥩\",\n\t\"”\",\n\t\"”\",\n\t\"↳\",\n\t\"ℜ\",\n\t\"ℜ\",\n\t\"ℛ\",\n\t\"ℜ\",\n\t\"ℝ\",\n\t\"▭\",\n\t\"®\",\n\t\"®\",\n\t\"®\",\n\t\"®\",\n\t\"∋\",\n\t\"⇋\",\n\t\"⥯\",\n\t\"⥽\",\n\t\"⌋\",\n\t\"ℜ\",\n\t\"𝔯\",\n\t\"⥤\",\n\t\"⇁\",\n\t\"⇀\",\n\t\"⥬\",\n\t\"Ρ\",\n\t\"ρ\",\n\t\"ϱ\",\n\t\"⟩\",\n\t\"→\",\n\t\"⇒\",\n\t\"→\",\n\t\"⇥\",\n\t\"⇄\",\n\t\"↣\",\n\t\"⌉\",\n\t\"⟧\",\n\t\"⥝\",\n\t\"⇂\",\n\t\"⥕\",\n\t\"⌋\",\n\t\"⇁\",\n\t\"⇀\",\n\t\"⇄\",\n\t\"⇌\",\n\t\"⇉\",\n\t\"↝\",\n\t\"⊢\",\n\t\"↦\",\n\t\"⥛\",\n\t\"⋌\",\n\t\"⊳\",\n\t\"⧐\",\n\t\"⊵\",\n\t\"⥏\",\n\t\"⥜\",\n\t\"↾\",\n\t\"⥔\",\n\t\"⇀\",\n\t\"⥓\",\n\t\"˚\",\n\t\"≓\",\n\t\"⇄\",\n\t\"⇌\",\n\t\"‏\",\n\t\"⎱\",\n\t\"⎱\",\n\t\"⫮\",\n\t\"⟭\",\n\t\"⇾\",\n\t\"⟧\",\n\t\"⦆\",\n\t\"ℝ\",\n\t\"𝕣\",\n\t\"⨮\",\n\t\"⨵\",\n\t\"⥰\",\n\t\")\",\n\t\"⦔\",\n\t\"⨒\",\n\t\"⇉\",\n\t\"⇛\",\n\t\"›\",\n\t\"ℛ\",\n\t\"𝓇\",\n\t\"↱\",\n\t\"↱\",\n\t\"]\",\n\t\"’\",\n\t\"’\",\n\t\"⋌\",\n\t\"⋊\",\n\t\"▹\",\n\t\"⊵\",\n\t\"▸\",\n\t\"⧎\",\n\t\"⧴\",\n\t\"⥨\",\n\t\"℞\",\n\t\"Ś\",\n\t\"ś\",\n\t\"‚\",\n\t\"⪼\",\n\t\"≻\",\n\t\"⪸\",\n\t\"Š\",\n\t\"š\",\n\t\"≽\",\n\t\"⪴\",\n\t\"⪰\",\n\t\"Ş\",\n\t\"ş\",\n\t\"Ŝ\",\n\t\"ŝ\",\n\t\"⪺\",\n\t\"⪶\",\n\t\"⋩\",\n\t\"⨓\",\n\t\"≿\",\n\t\"С\",\n\t\"с\",\n\t\"⋅\",\n\t\"⊡\",\n\t\"⩦\",\n\t\"⤥\",\n\t\"⇘\",\n\t\"↘\",\n\t\"↘\",\n\t\"§\",\n\t\"§\",\n\t\";\",\n\t\"⤩\",\n\t\"∖\",\n\t\"∖\",\n\t\"✶\",\n\t\"𝔖\",\n\t\"𝔰\",\n\t\"⌢\",\n\t\"♯\",\n\t\"Щ\",\n\t\"щ\",\n\t\"Ш\",\n\t\"ш\",\n\t\"↓\",\n\t\"←\",\n\t\"∣\",\n\t\"∥\",\n\t\"→\",\n\t\"↑\",\n\t\"­\",\n\t\"­\",\n\t\"Σ\",\n\t\"σ\",\n\t\"ς\",\n\t\"ς\",\n\t\"∼\",\n\t\"⩪\",\n\t\"≃\",\n\t\"≃\",\n\t\"⪞\",\n\t\"⪠\",\n\t\"⪝\",\n\t\"⪟\",\n\t\"≆\",\n\t\"⨤\",\n\t\"⥲\",\n\t\"←\",\n\t\"∘\",\n\t\"∖\",\n\t\"⨳\",\n\t\"⧤\",\n\t\"∣\",\n\t\"⌣\",\n\t\"⪪\",\n\t\"⪬\",\n\t\"⪬︀\",\n\t\"Ь\",\n\t\"ь\",\n\t\"/\",\n\t\"⧄\",\n\t\"⌿\",\n\t\"𝕊\",\n\t\"𝕤\",\n\t\"♠\",\n\t\"♠\",\n\t\"∥\",\n\t\"⊓\",\n\t\"⊓︀\",\n\t\"⊔\",\n\t\"⊔︀\",\n\t\"√\",\n\t\"⊏\",\n\t\"⊑\",\n\t\"⊏\",\n\t\"⊑\",\n\t\"⊐\",\n\t\"⊒\",\n\t\"⊐\",\n\t\"⊒\",\n\t\"□\",\n\t\"□\",\n\t\"□\",\n\t\"⊓\",\n\t\"⊏\",\n\t\"⊑\",\n\t\"⊐\",\n\t\"⊒\",\n\t\"⊔\",\n\t\"▪\",\n\t\"▪\",\n\t\"→\",\n\t\"𝒮\",\n\t\"𝓈\",\n\t\"∖\",\n\t\"⌣\",\n\t\"⋆\",\n\t\"⋆\",\n\t\"☆\",\n\t\"★\",\n\t\"ϵ\",\n\t\"ϕ\",\n\t\"¯\",\n\t\"⋐\",\n\t\"⊂\",\n\t\"⪽\",\n\t\"⫅\",\n\t\"⊆\",\n\t\"⫃\",\n\t\"⫁\",\n\t\"⫋\",\n\t\"⊊\",\n\t\"⪿\",\n\t\"⥹\",\n\t\"⋐\",\n\t\"⊂\",\n\t\"⊆\",\n\t\"⫅\",\n\t\"⊆\",\n\t\"⊊\",\n\t\"⫋\",\n\t\"⫇\",\n\t\"⫕\",\n\t\"⫓\",\n\t\"≻\",\n\t\"⪸\",\n\t\"≽\",\n\t\"≻\",\n\t\"⪰\",\n\t\"≽\",\n\t\"≿\",\n\t\"⪰\",\n\t\"⪺\",\n\t\"⪶\",\n\t\"⋩\",\n\t\"≿\",\n\t\"∋\",\n\t\"∑\",\n\t\"∑\",\n\t\"♪\",\n\t\"¹\",\n\t\"¹\",\n\t\"²\",\n\t\"²\",\n\t\"³\",\n\t\"³\",\n\t\"⋑\",\n\t\"⊃\",\n\t\"⪾\",\n\t\"⫘\",\n\t\"⫆\",\n\t\"⊇\",\n\t\"⫄\",\n\t\"⊃\",\n\t\"⊇\",\n\t\"⟉\",\n\t\"⫗\",\n\t\"⥻\",\n\t\"⫂\",\n\t\"⫌\",\n\t\"⊋\",\n\t\"⫀\",\n\t\"⋑\",\n\t\"⊃\",\n\t\"⊇\",\n\t\"⫆\",\n\t\"⊋\",\n\t\"⫌\",\n\t\"⫈\",\n\t\"⫔\",\n\t\"⫖\",\n\t\"⤦\",\n\t\"⇙\",\n\t\"↙\",\n\t\"↙\",\n\t\"⤪\",\n\t\"ß\",\n\t\"ß\",\n\t\"	\",\n\t\"⌖\",\n\t\"Τ\",\n\t\"τ\",\n\t\"⎴\",\n\t\"Ť\",\n\t\"ť\",\n\t\"Ţ\",\n\t\"ţ\",\n\t\"Т\",\n\t\"т\",\n\t\"⃛\",\n\t\"⌕\",\n\t\"𝔗\",\n\t\"𝔱\",\n\t\"∴\",\n\t\"∴\",\n\t\"∴\",\n\t\"Θ\",\n\t\"θ\",\n\t\"ϑ\",\n\t\"ϑ\",\n\t\"≈\",\n\t\"∼\",\n\t\"  \",\n\t\" \",\n\t\" \",\n\t\"≈\",\n\t\"∼\",\n\t\"Þ\",\n\t\"þ\",\n\t\"Þ\",\n\t\"þ\",\n\t\"∼\",\n\t\"˜\",\n\t\"≃\",\n\t\"≅\",\n\t\"≈\",\n\t\"×\",\n\t\"×\",\n\t\"⊠\",\n\t\"⨱\",\n\t\"⨰\",\n\t\"∭\",\n\t\"⤨\",\n\t\"⊤\",\n\t\"⌶\",\n\t\"⫱\",\n\t\"𝕋\",\n\t\"𝕥\",\n\t\"⫚\",\n\t\"⤩\",\n\t\"‴\",\n\t\"™\",\n\t\"™\",\n\t\"▵\",\n\t\"▿\",\n\t\"◃\",\n\t\"⊴\",\n\t\"≜\",\n\t\"▹\",\n\t\"⊵\",\n\t\"◬\",\n\t\"≜\",\n\t\"⨺\",\n\t\"⃛\",\n\t\"⨹\",\n\t\"⧍\",\n\t\"⨻\",\n\t\"⏢\",\n\t\"𝒯\",\n\t\"𝓉\",\n\t\"Ц\",\n\t\"ц\",\n\t\"Ћ\",\n\t\"ћ\",\n\t\"Ŧ\",\n\t\"ŧ\",\n\t\"≬\",\n\t\"↞\",\n\t\"↠\",\n\t\"Ú\",\n\t\"ú\",\n\t\"Ú\",\n\t\"ú\",\n\t\"↟\",\n\t\"⇑\",\n\t\"↑\",\n\t\"⥉\",\n\t\"Ў\",\n\t\"ў\",\n\t\"Ŭ\",\n\t\"ŭ\",\n\t\"Û\",\n\t\"û\",\n\t\"Û\",\n\t\"û\",\n\t\"У\",\n\t\"у\",\n\t\"⇅\",\n\t\"Ű\",\n\t\"ű\",\n\t\"⥮\",\n\t\"⥾\",\n\t\"𝔘\",\n\t\"𝔲\",\n\t\"Ù\",\n\t\"ù\",\n\t\"Ù\",\n\t\"ù\",\n\t\"⥣\",\n\t\"↿\",\n\t\"↾\",\n\t\"▀\",\n\t\"⌜\",\n\t\"⌜\",\n\t\"⌏\",\n\t\"◸\",\n\t\"Ū\",\n\t\"ū\",\n\t\"¨\",\n\t\"¨\",\n\t\"_\",\n\t\"⏟\",\n\t\"⎵\",\n\t\"⏝\",\n\t\"⋃\",\n\t\"⊎\",\n\t\"Ų\",\n\t\"ų\",\n\t\"𝕌\",\n\t\"𝕦\",\n\t\"↑\",\n\t\"⇑\",\n\t\"↑\",\n\t\"⤒\",\n\t\"⇅\",\n\t\"↕\",\n\t\"⇕\",\n\t\"↕\",\n\t\"⥮\",\n\t\"↿\",\n\t\"↾\",\n\t\"⊎\",\n\t\"↖\",\n\t\"↗\",\n\t\"ϒ\",\n\t\"υ\",\n\t\"ϒ\",\n\t\"Υ\",\n\t\"υ\",\n\t\"⊥\",\n\t\"↥\",\n\t\"⇈\",\n\t\"⌝\",\n\t\"⌝\",\n\t\"⌎\",\n\t\"Ů\",\n\t\"ů\",\n\t\"◹\",\n\t\"𝒰\",\n\t\"𝓊\",\n\t\"⋰\",\n\t\"Ũ\",\n\t\"ũ\",\n\t\"▵\",\n\t\"▴\",\n\t\"⇈\",\n\t\"Ü\",\n\t\"ü\",\n\t\"Ü\",\n\t\"ü\",\n\t\"⦧\",\n\t\"⦜\",\n\t\"ϵ\",\n\t\"ϰ\",\n\t\"∅\",\n\t\"ϕ\",\n\t\"ϖ\",\n\t\"∝\",\n\t\"⇕\",\n\t\"↕\",\n\t\"ϱ\",\n\t\"ς\",\n\t\"⊊︀\",\n\t\"⫋︀\",\n\t\"⊋︀\",\n\t\"⫌︀\",\n\t\"ϑ\",\n\t\"⊲\",\n\t\"⊳\",\n\t\"⫫\",\n\t\"⫨\",\n\t\"⫩\",\n\t\"В\",\n\t\"в\",\n\t\"⊫\",\n\t\"⊩\",\n\t\"⊨\",\n\t\"⊢\",\n\t\"⫦\",\n\t\"⋁\",\n\t\"∨\",\n\t\"⊻\",\n\t\"≚\",\n\t\"⋮\",\n\t\"‖\",\n\t\"|\",\n\t\"‖\",\n\t\"|\",\n\t\"∣\",\n\t\"|\",\n\t\"❘\",\n\t\"≀\",\n\t\" \",\n\t\"𝔙\",\n\t\"𝔳\",\n\t\"⊲\",\n\t\"⊂⃒\",\n\t\"⊃⃒\",\n\t\"𝕍\",\n\t\"𝕧\",\n\t\"∝\",\n\t\"⊳\",\n\t\"𝒱\",\n\t\"𝓋\",\n\t\"⫋︀\",\n\t\"⊊︀\",\n\t\"⫌︀\",\n\t\"⊋︀\",\n\t\"⊪\",\n\t\"⦚\",\n\t\"Ŵ\",\n\t\"ŵ\",\n\t\"⩟\",\n\t\"⋀\",\n\t\"∧\",\n\t\"≙\",\n\t\"℘\",\n\t\"𝔚\",\n\t\"𝔴\",\n\t\"𝕎\",\n\t\"𝕨\",\n\t\"℘\",\n\t\"≀\",\n\t\"≀\",\n\t\"𝒲\",\n\t\"𝓌\",\n\t\"⋂\",\n\t\"◯\",\n\t\"⋃\",\n\t\"▽\",\n\t\"𝔛\",\n\t\"𝔵\",\n\t\"⟺\",\n\t\"⟷\",\n\t\"Ξ\",\n\t\"ξ\",\n\t\"⟸\",\n\t\"⟵\",\n\t\"⟼\",\n\t\"⋻\",\n\t\"⨀\",\n\t\"𝕏\",\n\t\"𝕩\",\n\t\"⨁\",\n\t\"⨂\",\n\t\"⟹\",\n\t\"⟶\",\n\t\"𝒳\",\n\t\"𝓍\",\n\t\"⨆\",\n\t\"⨄\",\n\t\"△\",\n\t\"⋁\",\n\t\"⋀\",\n\t\"Ý\",\n\t\"ý\",\n\t\"Ý\",\n\t\"ý\",\n\t\"Я\",\n\t\"я\",\n\t\"Ŷ\",\n\t\"ŷ\",\n\t\"Ы\",\n\t\"ы\",\n\t\"¥\",\n\t\"¥\",\n\t\"𝔜\",\n\t\"𝔶\",\n\t\"Ї\",\n\t\"ї\",\n\t\"𝕐\",\n\t\"𝕪\",\n\t\"𝒴\",\n\t\"𝓎\",\n\t\"Ю\",\n\t\"ю\",\n\t\"ÿ\",\n\t\"Ÿ\",\n\t\"ÿ\",\n\t\"Ź\",\n\t\"ź\",\n\t\"Ž\",\n\t\"ž\",\n\t\"З\",\n\t\"з\",\n\t\"Ż\",\n\t\"ż\",\n\t\"ℨ\",\n\t\"​\",\n\t\"Ζ\",\n\t\"ζ\",\n\t\"ℨ\",\n\t\"𝔷\",\n\t\"Ж\",\n\t\"ж\",\n\t\"⇝\",\n\t\"ℤ\",\n\t\"𝕫\",\n\t\"𝒵\",\n\t\"𝓏\",\n\t\"‍\",\n\t\"‌\"\n];\n\nexport { bundledElements as b, entities as e, html5 as h };\n//# sourceMappingURL=elements.js.map\n","let FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nexport const $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t)\n}\n\nfunction init(x, y) {\n\tlet rgx = new RegExp(`\\\\x1b\\\\[${y}m`, 'g');\n\tlet open = `\\x1b[${x}m`, close = `\\x1b[${y}m`;\n\n\treturn function (txt) {\n\t\tif (!$.enabled || txt == null) return txt;\n\t\treturn open + (!!~(''+txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;\n\t};\n}\n\n// modifiers\nexport const reset = init(0, 0);\nexport const bold = init(1, 22);\nexport const dim = init(2, 22);\nexport const italic = init(3, 23);\nexport const underline = init(4, 24);\nexport const inverse = init(7, 27);\nexport const hidden = init(8, 28);\nexport const strikethrough = init(9, 29);\n\n// colors\nexport const black = init(30, 39);\nexport const red = init(31, 39);\nexport const green = init(32, 39);\nexport const yellow = init(33, 39);\nexport const blue = init(34, 39);\nexport const magenta = init(35, 39);\nexport const cyan = init(36, 39);\nexport const white = init(37, 39);\nexport const gray = init(90, 39);\nexport const grey = init(90, 39);\n\n// background colors\nexport const bgBlack = init(40, 49);\nexport const bgRed = init(41, 49);\nexport const bgGreen = init(42, 49);\nexport const bgYellow = init(43, 49);\nexport const bgBlue = init(44, 49);\nexport const bgMagenta = init(45, 49);\nexport const bgCyan = init(46, 49);\nexport const bgWhite = init(47, 49);\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// node_modules/leven/index.js\nvar require_leven = __commonJS({\n \"node_modules/leven/index.js\"(exports, module) {\n \"use strict\";\n var array = [];\n var charCodeCache = [];\n var leven2 = (left, right) => {\n if (left === right) {\n return 0;\n }\n const swap = left;\n if (left.length > right.length) {\n left = right;\n right = swap;\n }\n let leftLength = left.length;\n let rightLength = right.length;\n while (leftLength > 0 && left.charCodeAt(~-leftLength) === right.charCodeAt(~-rightLength)) {\n leftLength--;\n rightLength--;\n }\n let start = 0;\n while (start < leftLength && left.charCodeAt(start) === right.charCodeAt(start)) {\n start++;\n }\n leftLength -= start;\n rightLength -= start;\n if (leftLength === 0) {\n return rightLength;\n }\n let bCharCode;\n let result;\n let temp;\n let temp2;\n let i = 0;\n let j = 0;\n while (i < leftLength) {\n charCodeCache[i] = left.charCodeAt(start + i);\n array[i] = ++i;\n }\n while (j < rightLength) {\n bCharCode = right.charCodeAt(start + j);\n temp = j++;\n result = j;\n for (i = 0; i < leftLength; i++) {\n temp2 = bCharCode === charCodeCache[i] ? temp : temp + 1;\n temp = array[i];\n result = array[i] = temp > result ? temp2 > result ? result + 1 : temp2 : temp2 > temp ? temp + 1 : temp2;\n }\n }\n return result;\n };\n module.exports = leven2;\n module.exports.default = leven2;\n }\n});\n\n// node_modules/jsonpointer/jsonpointer.js\nvar require_jsonpointer = __commonJS({\n \"node_modules/jsonpointer/jsonpointer.js\"(exports) {\n var hasExcape = /~/;\n var escapeMatcher = /~[01]/g;\n function escapeReplacer(m) {\n switch (m) {\n case \"~1\":\n return \"/\";\n case \"~0\":\n return \"~\";\n }\n throw new Error(\"Invalid tilde escape: \" + m);\n }\n function untilde(str) {\n if (!hasExcape.test(str)) return str;\n return str.replace(escapeMatcher, escapeReplacer);\n }\n function setter(obj, pointer2, value) {\n var part;\n var hasNextPart;\n for (var p = 1, len = pointer2.length; p < len; ) {\n if (pointer2[p] === \"constructor\" || pointer2[p] === \"prototype\" || pointer2[p] === \"__proto__\") return obj;\n part = untilde(pointer2[p++]);\n hasNextPart = len > p;\n if (typeof obj[part] === \"undefined\") {\n if (Array.isArray(obj) && part === \"-\") {\n part = obj.length;\n }\n if (hasNextPart) {\n if (pointer2[p] !== \"\" && pointer2[p] < Infinity || pointer2[p] === \"-\") obj[part] = [];\n else obj[part] = {};\n }\n }\n if (!hasNextPart) break;\n obj = obj[part];\n }\n var oldValue = obj[part];\n if (value === void 0) delete obj[part];\n else obj[part] = value;\n return oldValue;\n }\n function compilePointer(pointer2) {\n if (typeof pointer2 === \"string\") {\n pointer2 = pointer2.split(\"/\");\n if (pointer2[0] === \"\") return pointer2;\n throw new Error(\"Invalid JSON pointer.\");\n } else if (Array.isArray(pointer2)) {\n for (const part of pointer2) {\n if (typeof part !== \"string\" && typeof part !== \"number\") {\n throw new Error(\"Invalid JSON pointer. Must be of type string or number.\");\n }\n }\n return pointer2;\n }\n throw new Error(\"Invalid JSON pointer.\");\n }\n function get(obj, pointer2) {\n if (typeof obj !== \"object\") throw new Error(\"Invalid input object.\");\n pointer2 = compilePointer(pointer2);\n var len = pointer2.length;\n if (len === 1) return obj;\n for (var p = 1; p < len; ) {\n obj = obj[untilde(pointer2[p++])];\n if (len === p) return obj;\n if (typeof obj !== \"object\" || obj === null) return void 0;\n }\n }\n function set(obj, pointer2, value) {\n if (typeof obj !== \"object\") throw new Error(\"Invalid input object.\");\n pointer2 = compilePointer(pointer2);\n if (pointer2.length === 0) throw new Error(\"Invalid JSON pointer for set.\");\n return setter(obj, pointer2, value);\n }\n function compile(pointer2) {\n var compiled = compilePointer(pointer2);\n return {\n get: function(object) {\n return get(object, compiled);\n },\n set: function(object, value) {\n return set(object, compiled, value);\n }\n };\n }\n exports.get = get;\n exports.set = set;\n exports.compile = compile;\n }\n});\n\n// node_modules/@humanwhocodes/momoa/dist/momoa.js\nvar CHAR_0 = 48;\nvar CHAR_1 = 49;\nvar CHAR_9 = 57;\nvar CHAR_BACKSLASH = 92;\nvar CHAR_DOLLAR = 36;\nvar CHAR_DOT = 46;\nvar CHAR_DOUBLE_QUOTE = 34;\nvar CHAR_LOWER_A = 97;\nvar CHAR_LOWER_E = 101;\nvar CHAR_LOWER_F = 102;\nvar CHAR_LOWER_N = 110;\nvar CHAR_LOWER_T = 116;\nvar CHAR_LOWER_U = 117;\nvar CHAR_LOWER_X = 120;\nvar CHAR_LOWER_Z = 122;\nvar CHAR_MINUS = 45;\nvar CHAR_NEWLINE = 10;\nvar CHAR_PLUS = 43;\nvar CHAR_RETURN = 13;\nvar CHAR_SINGLE_QUOTE = 39;\nvar CHAR_SLASH = 47;\nvar CHAR_SPACE = 32;\nvar CHAR_TAB = 9;\nvar CHAR_UNDERSCORE = 95;\nvar CHAR_UPPER_A = 65;\nvar CHAR_UPPER_E = 69;\nvar CHAR_UPPER_F = 70;\nvar CHAR_UPPER_N = 78;\nvar CHAR_UPPER_X = 88;\nvar CHAR_UPPER_Z = 90;\nvar CHAR_LOWER_B = 98;\nvar CHAR_LOWER_R = 114;\nvar CHAR_LOWER_V = 118;\nvar CHAR_LINE_SEPARATOR = 8232;\nvar CHAR_PARAGRAPH_SEPARATOR = 8233;\nvar CHAR_UPPER_I = 73;\nvar CHAR_STAR = 42;\nvar CHAR_VTAB = 11;\nvar CHAR_FORM_FEED = 12;\nvar CHAR_NBSP = 160;\nvar CHAR_BOM = 65279;\nvar CHAR_NON_BREAKING_SPACE = 160;\nvar CHAR_EN_QUAD = 8192;\nvar CHAR_EM_QUAD = 8193;\nvar CHAR_EN_SPACE = 8194;\nvar CHAR_EM_SPACE = 8195;\nvar CHAR_THREE_PER_EM_SPACE = 8196;\nvar CHAR_FOUR_PER_EM_SPACE = 8197;\nvar CHAR_SIX_PER_EM_SPACE = 8198;\nvar CHAR_FIGURE_SPACE = 8199;\nvar CHAR_PUNCTUATION_SPACE = 8200;\nvar CHAR_THIN_SPACE = 8201;\nvar CHAR_HAIR_SPACE = 8202;\nvar CHAR_NARROW_NO_BREAK_SPACE = 8239;\nvar CHAR_MEDIUM_MATHEMATICAL_SPACE = 8287;\nvar CHAR_IDEOGRAPHIC_SPACE = 12288;\nvar LBRACKET = \"[\";\nvar RBRACKET = \"]\";\nvar LBRACE = \"{\";\nvar RBRACE = \"}\";\nvar COLON = \":\";\nvar COMMA = \",\";\nvar TRUE = \"true\";\nvar FALSE = \"false\";\nvar NULL = \"null\";\nvar NAN$1 = \"NaN\";\nvar INFINITY$1 = \"Infinity\";\nvar QUOTE = '\"';\nvar escapeToChar = /* @__PURE__ */ new Map([\n [CHAR_DOUBLE_QUOTE, QUOTE],\n [CHAR_BACKSLASH, \"\\\\\"],\n [CHAR_SLASH, \"/\"],\n [CHAR_LOWER_B, \"\\b\"],\n [CHAR_LOWER_N, \"\\n\"],\n [CHAR_LOWER_F, \"\\f\"],\n [CHAR_LOWER_R, \"\\r\"],\n [CHAR_LOWER_T, \"\t\"]\n]);\nvar json5EscapeToChar = new Map([\n ...escapeToChar,\n [CHAR_LOWER_V, \"\\v\"],\n [CHAR_0, \"\\0\"]\n]);\nvar charToEscape = /* @__PURE__ */ new Map([\n [QUOTE, QUOTE],\n [\"\\\\\", \"\\\\\"],\n [\"/\", \"/\"],\n [\"\\b\", \"b\"],\n [\"\\n\", \"n\"],\n [\"\\f\", \"f\"],\n [\"\\r\", \"r\"],\n [\"\t\", \"t\"]\n]);\nvar json5CharToEscape = new Map([\n ...charToEscape,\n [\"\\v\", \"v\"],\n [\"\\0\", \"0\"],\n [\"\\u2028\", \"u2028\"],\n [\"\\u2029\", \"u2029\"]\n]);\nvar knownTokenTypes = /* @__PURE__ */ new Map([\n [LBRACKET, \"LBracket\"],\n [RBRACKET, \"RBracket\"],\n [LBRACE, \"LBrace\"],\n [RBRACE, \"RBrace\"],\n [COLON, \"Colon\"],\n [COMMA, \"Comma\"],\n [TRUE, \"Boolean\"],\n [FALSE, \"Boolean\"],\n [NULL, \"Null\"]\n]);\nvar knownJSON5TokenTypes = new Map([\n ...knownTokenTypes,\n [NAN$1, \"Number\"],\n [INFINITY$1, \"Number\"]\n]);\nvar json5LineTerminators = /* @__PURE__ */ new Set([\n CHAR_NEWLINE,\n CHAR_RETURN,\n CHAR_LINE_SEPARATOR,\n CHAR_PARAGRAPH_SEPARATOR\n]);\nvar ErrorWithLocation = class extends Error {\n /**\n * Creates a new instance.\n * @param {string} message The error message to report. \n * @param {Location} loc The location information for the error.\n */\n constructor(message, { line, column, offset }) {\n super(`${message} (${line}:${column})`);\n this.line = line;\n this.column = column;\n this.offset = offset;\n }\n};\nvar UnexpectedChar = class extends ErrorWithLocation {\n /**\n * Creates a new instance.\n * @param {number} unexpected The character that was found.\n * @param {Location} loc The location information for the found character.\n */\n constructor(unexpected, loc) {\n super(`Unexpected character '${String.fromCharCode(unexpected)}' found.`, loc);\n }\n};\nvar UnexpectedIdentifier = class extends ErrorWithLocation {\n /**\n * Creates a new instance.\n * @param {string} unexpected The character that was found.\n * @param {Location} loc The location information for the found character.\n */\n constructor(unexpected, loc) {\n super(`Unexpected identifier '${unexpected}' found.`, loc);\n }\n};\nvar UnexpectedToken = class extends ErrorWithLocation {\n /**\n * Creates a new instance.\n * @param {Token} token The token that was found. \n */\n constructor(token) {\n super(`Unexpected token ${token.type} found.`, token.loc.start);\n }\n};\nvar UnexpectedEOF = class extends ErrorWithLocation {\n /**\n * Creates a new instance.\n * @param {Location} loc The location information for the found character.\n */\n constructor(loc) {\n super(\"Unexpected end of input found.\", loc);\n }\n};\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\nvar CHAR_CR = 13;\nvar CHAR_LF = 10;\nvar CharCodeReader = class {\n /**\n * The text to read from.\n * @type {string}\n */\n #text = \"\";\n /**\n * The current line number.\n * @type {number}\n */\n #line = 1;\n /**\n * The current column number.\n * @type {number}\n */\n #column = 0;\n /**\n * The current offset in the text.\n * @type {number}\n */\n #offset = -1;\n /**\n * Whether the last character read was a new line.\n * @type {boolean}\n */\n #newLine = false;\n /**\n * The last character code read.\n * @type {number}\n */\n #last = -1;\n /**\n * Whether the reader has ended.\n * @type {boolean}\n */\n #ended = false;\n /**\n * Creates a new instance.\n * @param {string} text The text to read from\n */\n constructor(text) {\n this.#text = text;\n }\n /**\n * Ends the reader.\n * @returns {void}\n */\n #end() {\n if (this.#ended) {\n return;\n }\n this.#column++;\n this.#offset++;\n this.#last = -1;\n this.#ended = true;\n }\n /**\n * Returns the current position of the reader.\n * @returns {Location} An object with line, column, and offset properties.\n */\n locate() {\n return {\n line: this.#line,\n column: this.#column,\n offset: this.#offset\n };\n }\n /**\n * Reads the next character code in the text.\n * @returns {number} The next character code, or -1 if there are no more characters.\n */\n next() {\n if (this.#offset >= this.#text.length - 1) {\n this.#end();\n return -1;\n }\n this.#offset++;\n const charCode = this.#text.charCodeAt(this.#offset);\n if (this.#newLine) {\n this.#line++;\n this.#column = 1;\n this.#newLine = false;\n } else {\n this.#column++;\n }\n if (charCode === CHAR_CR) {\n this.#newLine = true;\n if (this.peek() === CHAR_LF) {\n this.#offset++;\n }\n } else if (charCode === CHAR_LF) {\n this.#newLine = true;\n }\n this.#last = charCode;\n return charCode;\n }\n /**\n * Peeks at the next character code in the text.\n * @returns {number} The next character code, or -1 if there are no more characters.\n */\n peek() {\n if (this.#offset === this.#text.length - 1) {\n return -1;\n }\n return this.#text.charCodeAt(this.#offset + 1);\n }\n /**\n * Determines if the next character code in the text matches a specific character code.\n * @param {(number) => boolean} fn A function to call on the next character.\n * @returns {boolean} True if the next character code matches, false if not.\n */\n match(fn) {\n if (fn(this.peek())) {\n this.next();\n return true;\n }\n return false;\n }\n /**\n * Returns the last character code read.\n * @returns {number} The last character code read.\n */\n current() {\n return this.#last;\n }\n};\nvar INFINITY = \"Infinity\";\nvar NAN = \"NaN\";\nvar keywordStarts = /* @__PURE__ */ new Set([CHAR_LOWER_T, CHAR_LOWER_F, CHAR_LOWER_N]);\nvar whitespace = /* @__PURE__ */ new Set([CHAR_SPACE, CHAR_TAB, CHAR_NEWLINE, CHAR_RETURN]);\nvar json5Whitespace = /* @__PURE__ */ new Set([\n ...whitespace,\n CHAR_VTAB,\n CHAR_FORM_FEED,\n CHAR_NBSP,\n CHAR_LINE_SEPARATOR,\n CHAR_PARAGRAPH_SEPARATOR,\n CHAR_BOM,\n CHAR_NON_BREAKING_SPACE,\n CHAR_EN_QUAD,\n CHAR_EM_QUAD,\n CHAR_EN_SPACE,\n CHAR_EM_SPACE,\n CHAR_THREE_PER_EM_SPACE,\n CHAR_FOUR_PER_EM_SPACE,\n CHAR_SIX_PER_EM_SPACE,\n CHAR_FIGURE_SPACE,\n CHAR_PUNCTUATION_SPACE,\n CHAR_THIN_SPACE,\n CHAR_HAIR_SPACE,\n CHAR_NARROW_NO_BREAK_SPACE,\n CHAR_MEDIUM_MATHEMATICAL_SPACE,\n CHAR_IDEOGRAPHIC_SPACE\n]);\nvar DEFAULT_OPTIONS$1 = {\n mode: \"json\",\n ranges: false\n};\nvar jsonKeywords = /* @__PURE__ */ new Set([\"true\", \"false\", \"null\"]);\nvar tt = {\n EOF: 0,\n Number: 1,\n String: 2,\n Boolean: 3,\n Null: 4,\n NaN: 5,\n Infinity: 6,\n Identifier: 7,\n Colon: 20,\n LBrace: 21,\n RBrace: 22,\n LBracket: 23,\n RBracket: 24,\n Comma: 25,\n LineComment: 40,\n BlockComment: 41\n};\nfunction isDigit(c) {\n return c >= CHAR_0 && c <= CHAR_9;\n}\nfunction isHexDigit(c) {\n return isDigit(c) || c >= CHAR_UPPER_A && c <= CHAR_UPPER_F || c >= CHAR_LOWER_A && c <= CHAR_LOWER_F;\n}\nfunction isPositiveDigit(c) {\n return c >= CHAR_1 && c <= CHAR_9;\n}\nfunction isKeywordStart(c) {\n return keywordStarts.has(c);\n}\nfunction isNumberStart(c) {\n return isDigit(c) || c === CHAR_DOT || c === CHAR_MINUS;\n}\nfunction isJSON5NumberStart(c) {\n return isNumberStart(c) || c === CHAR_PLUS;\n}\nfunction isStringStart(c, json5) {\n return c === CHAR_DOUBLE_QUOTE || json5 && c === CHAR_SINGLE_QUOTE;\n}\nfunction isJSON5IdentifierStart(c) {\n if (c === CHAR_DOLLAR || c === CHAR_UNDERSCORE || c === CHAR_BACKSLASH) {\n return true;\n }\n if (c >= CHAR_LOWER_A && c <= CHAR_LOWER_Z || c >= CHAR_UPPER_A && c <= CHAR_UPPER_Z) {\n return true;\n }\n if (c === 8204 || c === 8205) {\n return true;\n }\n const ct = String.fromCharCode(c);\n return ID_Start.test(ct);\n}\nfunction isJSON5IdentifierPart(c) {\n if (isJSON5IdentifierStart(c) || isDigit(c)) {\n return true;\n }\n const ct = String.fromCharCode(c);\n return ID_Continue.test(ct);\n}\nvar Tokenizer = class {\n /**\n * Options for the tokenizer.\n * @type {TokenizeOptions}\n */\n #options;\n /**\n * The source text to tokenize.\n * @type {string}\n */\n #text;\n /**\n * The reader for the source text.\n * @type {CharCodeReader}\n */\n #reader;\n /**\n * Indicates if the tokenizer is in JSON5 mode.\n * @type {boolean}\n */\n #json5;\n /**\n * Indicates if comments are allowed.\n * @type {boolean}\n */\n #allowComments;\n /**\n * Indicates if ranges should be included in the tokens.\n * @type {boolean}\n */\n #ranges;\n /**\n * The last token type read.\n * @type {Token}\n */\n #token;\n /**\n * Determines if a character is an escaped character.\n * @type {(c:number) => boolean}\n */\n #isEscapedCharacter;\n /**\n * Determines if a character is a JSON5 line terminator.\n * @type {(c:number) => boolean}\n */\n #isJSON5LineTerminator;\n /**\n * Determines if a character is a JSON5 hex escape.\n * @type {(c:number) => boolean}\n */\n #isJSON5HexEscape;\n /**\n * Determines if a character is whitespace.\n * @type {(c:number) => boolean}\n */\n #isWhitespace;\n /**\n * Creates a new instance of the tokenizer.\n * @param {string} text The source text\n * @param {TokenizeOptions} [options] Options for the tokenizer.\n */\n constructor(text, options) {\n this.#text = text;\n this.#options = {\n ...DEFAULT_OPTIONS$1,\n ...options\n };\n this.#reader = new CharCodeReader(text);\n this.#json5 = this.#options.mode === \"json5\";\n this.#allowComments = this.#options.mode !== \"json\";\n this.#ranges = this.#options.ranges;\n this.#isEscapedCharacter = this.#json5 ? json5EscapeToChar.has.bind(json5EscapeToChar) : escapeToChar.has.bind(escapeToChar);\n this.#isJSON5LineTerminator = this.#json5 ? json5LineTerminators.has.bind(json5LineTerminators) : () => false;\n this.#isJSON5HexEscape = this.#json5 ? (c) => c === CHAR_LOWER_X : () => false;\n this.#isWhitespace = this.#json5 ? json5Whitespace.has.bind(json5Whitespace) : whitespace.has.bind(whitespace);\n }\n // #region Errors\n /**\n * Convenience function for throwing unexpected character errors.\n * @param {number} c The unexpected character.\n * @param {Location} [loc] The location of the unexpected character.\n * @returns {never}\n * @throws {UnexpectedChar} always.\n */\n #unexpected(c, loc = this.#reader.locate()) {\n throw new UnexpectedChar(c, loc);\n }\n /**\n * Convenience function for throwing unexpected identifier errors.\n * @param {string} identifier The unexpected identifier.\n * @param {Location} [loc] The location of the unexpected identifier.\n * @returns {never}\n * @throws {UnexpectedIdentifier} always.\n */\n #unexpectedIdentifier(identifier, loc = this.#reader.locate()) {\n throw new UnexpectedIdentifier(identifier, loc);\n }\n /**\n * Convenience function for throwing unexpected EOF errors.\n * @returns {never}\n * @throws {UnexpectedEOF} always.\n */\n #unexpectedEOF() {\n throw new UnexpectedEOF(this.#reader.locate());\n }\n // #endregion\n // #region Helpers\n /**\n * Creates a new token.\n * @param {TokenType} tokenType The type of token to create.\n * @param {number} length The length of the token.\n * @param {Location} startLoc The start location for the token.\n * @param {Location} [endLoc] The end location for the token.\n * @returns {Token} The token.\n */\n #createToken(tokenType, length, startLoc, endLoc) {\n const endOffset = startLoc.offset + length;\n let range = this.#options.ranges ? {\n range: (\n /** @type {Range} */\n [startLoc.offset, endOffset]\n )\n } : void 0;\n return {\n type: tokenType,\n loc: {\n start: startLoc,\n end: endLoc || {\n line: startLoc.line,\n column: startLoc.column + length,\n offset: endOffset\n }\n },\n ...range\n };\n }\n /**\n * Reads in a specific number of hex digits.\n * @param {number} count The number of hex digits to read.\n * @returns {string} The hex digits read.\n */\n #readHexDigits(count) {\n let value = \"\";\n let c;\n for (let i = 0; i < count; i++) {\n c = this.#reader.peek();\n if (isHexDigit(c)) {\n this.#reader.next();\n value += String.fromCharCode(c);\n continue;\n }\n this.#unexpected(c);\n }\n return value;\n }\n /**\n * Reads in a JSON5 identifier. Also used for JSON but we validate\n * the identifier later.\n * @param {number} c The first character of the identifier.\n * @returns {string} The identifier read.\n * @throws {UnexpectedChar} when the identifier cannot be read.\n */\n #readIdentifier(c) {\n let value = \"\";\n do {\n value += String.fromCharCode(c);\n if (c === CHAR_BACKSLASH) {\n c = this.#reader.next();\n if (c !== CHAR_LOWER_U) {\n this.#unexpected(c);\n }\n value += String.fromCharCode(c);\n const hexDigits = this.#readHexDigits(4);\n const charCode = parseInt(hexDigits, 16);\n if (value.length === 2 && !isJSON5IdentifierStart(charCode)) {\n const loc = this.#reader.locate();\n this.#unexpected(CHAR_BACKSLASH, { line: loc.line, column: loc.column - 5, offset: loc.offset - 5 });\n } else if (!isJSON5IdentifierPart(charCode)) {\n const loc = this.#reader.locate();\n this.#unexpected(charCode, { line: loc.line, column: loc.column - 5, offset: loc.offset - 5 });\n }\n value += hexDigits;\n }\n c = this.#reader.peek();\n if (!isJSON5IdentifierPart(c)) {\n break;\n }\n this.#reader.next();\n } while (true);\n return value;\n }\n /**\n * Reads in a string. Works for both JSON and JSON5.\n * @param {number} c The first character of the string (either \" or ').\n * @returns {number} The length of the string.\n * @throws {UnexpectedChar} when the string cannot be read.\n * @throws {UnexpectedEOF} when EOF is reached before the string is finalized.\n */\n #readString(c) {\n const delimiter = c;\n let length = 1;\n c = this.#reader.peek();\n while (c !== -1 && c !== delimiter) {\n this.#reader.next();\n length++;\n if (c === CHAR_BACKSLASH) {\n c = this.#reader.peek();\n if (this.#isEscapedCharacter(c) || this.#isJSON5LineTerminator(c)) {\n this.#reader.next();\n length++;\n } else if (c === CHAR_LOWER_U) {\n this.#reader.next();\n length++;\n const result = this.#readHexDigits(4);\n length += result.length;\n } else if (this.#isJSON5HexEscape(c)) {\n this.#reader.next();\n length++;\n const result = this.#readHexDigits(2);\n length += result.length;\n } else if (this.#json5) {\n this.#reader.next();\n length++;\n } else {\n this.#unexpected(c);\n }\n }\n c = this.#reader.peek();\n }\n if (c === -1) {\n this.#reader.next();\n this.#unexpectedEOF();\n }\n this.#reader.next();\n length++;\n return length;\n }\n /**\n * Reads a number. Works for both JSON and JSON5.\n * @param {number} c The first character of the number.\n * @returns {number} The length of the number.\n * @throws {UnexpectedChar} when the number cannot be read.\n * @throws {UnexpectedEOF} when EOF is reached before the number is finalized.\n */\n #readNumber(c) {\n let length = 1;\n if (c === CHAR_MINUS || this.#json5 && c === CHAR_PLUS) {\n c = this.#reader.peek();\n if (this.#json5) {\n if (c === CHAR_UPPER_I || c === CHAR_UPPER_N) {\n this.#reader.next();\n const identifier = this.#readIdentifier(c);\n if (identifier !== INFINITY && identifier !== NAN) {\n this.#unexpected(c);\n }\n return length + identifier.length;\n }\n }\n if (!isDigit(c)) {\n this.#unexpected(c);\n }\n this.#reader.next();\n length++;\n }\n if (c === CHAR_0) {\n c = this.#reader.peek();\n if (this.#json5 && (c === CHAR_LOWER_X || c === CHAR_UPPER_X)) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n if (!isHexDigit(c)) {\n this.#reader.next();\n this.#unexpected(c);\n }\n do {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n } while (isHexDigit(c));\n } else if (isDigit(c)) {\n this.#unexpected(c);\n }\n } else {\n if (!this.#json5 || c !== CHAR_DOT) {\n if (!isPositiveDigit(c)) {\n this.#unexpected(c);\n }\n c = this.#reader.peek();\n while (isDigit(c)) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n }\n }\n }\n if (c === CHAR_DOT) {\n let digitCount = -1;\n this.#reader.next();\n length++;\n digitCount++;\n c = this.#reader.peek();\n while (isDigit(c)) {\n this.#reader.next();\n length++;\n digitCount++;\n c = this.#reader.peek();\n }\n if (!this.#json5 && digitCount === 0) {\n this.#reader.next();\n if (c) {\n this.#unexpected(c);\n } else {\n this.#unexpectedEOF();\n }\n }\n }\n if (c === CHAR_LOWER_E || c === CHAR_UPPER_E) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n if (c === CHAR_PLUS || c === CHAR_MINUS) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n }\n if (c === -1) {\n this.#reader.next();\n this.#unexpectedEOF();\n }\n if (!isDigit(c)) {\n this.#reader.next();\n this.#unexpected(c);\n }\n while (isDigit(c)) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n }\n }\n return length;\n }\n /**\n * Reads a comment. Works for both JSON and JSON5.\n * @param {number} c The first character of the comment.\n * @returns {{length: number, multiline: boolean}} The length of the comment, and whether the comment is multi-line.\n * @throws {UnexpectedChar} when the comment cannot be read.\n * @throws {UnexpectedEOF} when EOF is reached before the comment is finalized.\n */\n #readComment(c) {\n let length = 1;\n c = this.#reader.peek();\n if (c === CHAR_SLASH) {\n do {\n this.#reader.next();\n length += 1;\n c = this.#reader.peek();\n } while (c > -1 && c !== CHAR_RETURN && c !== CHAR_NEWLINE);\n return { length, multiline: false };\n }\n if (c === CHAR_STAR) {\n this.#reader.next();\n length += 1;\n while (c > -1) {\n c = this.#reader.peek();\n if (c === CHAR_STAR) {\n this.#reader.next();\n length += 1;\n c = this.#reader.peek();\n if (c === CHAR_SLASH) {\n this.#reader.next();\n length += 1;\n return { length, multiline: true };\n }\n } else {\n this.#reader.next();\n length += 1;\n }\n }\n this.#reader.next();\n this.#unexpectedEOF();\n }\n this.#reader.next();\n this.#unexpected(c);\n }\n // #endregion\n /**\n * Returns the next token in the source text.\n * @returns {number} The code for the next token.\n */\n next() {\n let c = this.#reader.next();\n while (this.#isWhitespace(c)) {\n c = this.#reader.next();\n }\n if (c === -1) {\n return tt.EOF;\n }\n const start = this.#reader.locate();\n const ct = String.fromCharCode(c);\n if (this.#json5) {\n if (knownJSON5TokenTypes.has(ct)) {\n this.#token = this.#createToken(knownJSON5TokenTypes.get(ct), 1, start);\n } else if (isJSON5IdentifierStart(c)) {\n const value = this.#readIdentifier(c);\n if (knownJSON5TokenTypes.has(value)) {\n this.#token = this.#createToken(knownJSON5TokenTypes.get(value), value.length, start);\n } else {\n this.#token = this.#createToken(\"Identifier\", value.length, start);\n }\n } else if (isJSON5NumberStart(c)) {\n const result = this.#readNumber(c);\n this.#token = this.#createToken(\"Number\", result, start);\n } else if (isStringStart(c, this.#json5)) {\n const result = this.#readString(c);\n const lastCharLoc = this.#reader.locate();\n this.#token = this.#createToken(\"String\", result, start, {\n line: lastCharLoc.line,\n column: lastCharLoc.column + 1,\n offset: lastCharLoc.offset + 1\n });\n } else if (c === CHAR_SLASH && this.#allowComments) {\n const result = this.#readComment(c);\n const lastCharLoc = this.#reader.locate();\n this.#token = this.#createToken(!result.multiline ? \"LineComment\" : \"BlockComment\", result.length, start, {\n line: lastCharLoc.line,\n column: lastCharLoc.column + 1,\n offset: lastCharLoc.offset + 1\n });\n } else {\n this.#unexpected(c);\n }\n } else {\n if (knownTokenTypes.has(ct)) {\n this.#token = this.#createToken(knownTokenTypes.get(ct), 1, start);\n } else if (isKeywordStart(c)) {\n const value = this.#readIdentifier(c);\n if (!jsonKeywords.has(value)) {\n this.#unexpectedIdentifier(value, start);\n }\n this.#token = this.#createToken(knownTokenTypes.get(value), value.length, start);\n } else if (isNumberStart(c)) {\n const result = this.#readNumber(c);\n this.#token = this.#createToken(\"Number\", result, start);\n } else if (isStringStart(c, this.#json5)) {\n const result = this.#readString(c);\n this.#token = this.#createToken(\"String\", result, start);\n } else if (c === CHAR_SLASH && this.#allowComments) {\n const result = this.#readComment(c);\n const lastCharLoc = this.#reader.locate();\n this.#token = this.#createToken(!result.multiline ? \"LineComment\" : \"BlockComment\", result.length, start, {\n line: lastCharLoc.line,\n column: lastCharLoc.column + 1,\n offset: lastCharLoc.offset + 1\n });\n } else {\n this.#unexpected(c);\n }\n }\n return tt[this.#token.type];\n }\n /**\n * Returns the current token in the source text.\n * @returns {Token} The current token.\n */\n get token() {\n return this.#token;\n }\n};\nvar types = {\n /**\n * Creates a document node.\n * @param {ValueNode} body The body of the document.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {DocumentNode} The document node.\n */\n document(body, parts = {}) {\n return {\n type: \"Document\",\n body,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates a string node.\n * @param {string} value The value for the string.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {StringNode} The string node.\n */\n string(value, parts = {}) {\n return {\n type: \"String\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates a number node.\n * @param {number} value The value for the number.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {NumberNode} The number node.\n */\n number(value, parts = {}) {\n return {\n type: \"Number\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates a boolean node.\n * @param {boolean} value The value for the boolean.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {BooleanNode} The boolean node.\n */\n boolean(value, parts = {}) {\n return {\n type: \"Boolean\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates a null node.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {NullNode} The null node.\n */\n null(parts = {}) {\n return {\n type: \"Null\",\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates an array node.\n * @param {Array<ElementNode>} elements The elements to add.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {ArrayNode} The array node.\n */\n array(elements, parts = {}) {\n return {\n type: \"Array\",\n elements,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates an element node.\n * @param {ValueNode} value The value for the element.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {ElementNode} The element node.\n */\n element(value, parts = {}) {\n return {\n type: \"Element\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates an object node.\n * @param {Array<MemberNode>} members The members to add.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {ObjectNode} The object node.\n */\n object(members, parts = {}) {\n return {\n type: \"Object\",\n members,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates a member node.\n * @param {StringNode|IdentifierNode} name The name for the member.\n * @param {ValueNode} value The value for the member.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {MemberNode} The member node.\n */\n member(name, value, parts = {}) {\n return {\n type: \"Member\",\n name,\n value,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates an identifier node.\n * @param {string} name The name for the identifier.\n * @param {NodeParts} parts Additional properties for the node.\n * @returns {IdentifierNode} The identifier node.\n */\n identifier(name, parts = {}) {\n return {\n type: \"Identifier\",\n name,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates a NaN node.\n * @param {Sign} sign The sign for the Infinity.\n * @param {NodeParts} parts Additional properties for the node.\n * @returns {NaNNode} The NaN node.\n */\n nan(sign = \"\", parts = {}) {\n return {\n type: \"NaN\",\n sign,\n loc: parts.loc,\n ...parts\n };\n },\n /**\n * Creates an Infinity node.\n * @param {Sign} sign The sign for the Infinity.\n * @param {NodeParts} parts Additional properties for the node.\n * @returns {InfinityNode} The Infinity node.\n */\n infinity(sign = \"\", parts = {}) {\n return {\n type: \"Infinity\",\n sign,\n loc: parts.loc,\n ...parts\n };\n }\n};\nvar DEFAULT_OPTIONS = {\n mode: \"json\",\n ranges: false,\n tokens: false,\n allowTrailingCommas: false\n};\nvar UNICODE_SEQUENCE = /\\\\u[\\da-fA-F]{4}/gu;\nfunction normalizeIdentifier(identifier) {\n return identifier.replace(UNICODE_SEQUENCE, (unicodeEscape) => {\n return String.fromCharCode(parseInt(unicodeEscape.slice(2), 16));\n });\n}\nfunction getStringValue(value, token, json5 = false) {\n let result = \"\";\n let escapeIndex = value.indexOf(\"\\\\\");\n let lastIndex = 0;\n while (escapeIndex >= 0) {\n result += value.slice(lastIndex, escapeIndex);\n const escapeChar = value.charAt(escapeIndex + 1);\n const escapeCharCode = escapeChar.charCodeAt(0);\n if (json5 && json5EscapeToChar.has(escapeCharCode)) {\n result += json5EscapeToChar.get(escapeCharCode);\n lastIndex = escapeIndex + 2;\n } else if (escapeToChar.has(escapeCharCode)) {\n result += escapeToChar.get(escapeCharCode);\n lastIndex = escapeIndex + 2;\n } else if (escapeChar === \"u\") {\n const hexCode = value.slice(escapeIndex + 2, escapeIndex + 6);\n if (hexCode.length < 4 || /[^0-9a-f]/i.test(hexCode)) {\n throw new ErrorWithLocation(\n `Invalid unicode escape \\\\u${hexCode}.`,\n {\n line: token.loc.start.line,\n column: token.loc.start.column + escapeIndex,\n offset: token.loc.start.offset + escapeIndex\n }\n );\n }\n result += String.fromCharCode(parseInt(hexCode, 16));\n lastIndex = escapeIndex + 6;\n } else if (json5 && escapeChar === \"x\") {\n const hexCode = value.slice(escapeIndex + 2, escapeIndex + 4);\n if (hexCode.length < 2 || /[^0-9a-f]/i.test(hexCode)) {\n throw new ErrorWithLocation(\n `Invalid hex escape \\\\x${hexCode}.`,\n {\n line: token.loc.start.line,\n column: token.loc.start.column + escapeIndex,\n offset: token.loc.start.offset + escapeIndex\n }\n );\n }\n result += String.fromCharCode(parseInt(hexCode, 16));\n lastIndex = escapeIndex + 4;\n } else if (json5 && json5LineTerminators.has(escapeCharCode)) {\n lastIndex = escapeIndex + 2;\n if (escapeChar === \"\\r\" && value.charAt(lastIndex) === \"\\n\") {\n lastIndex++;\n }\n } else {\n if (json5) {\n result += escapeChar;\n lastIndex = escapeIndex + 2;\n } else {\n throw new ErrorWithLocation(\n `Invalid escape \\\\${escapeChar}.`,\n {\n line: token.loc.start.line,\n column: token.loc.start.column + escapeIndex,\n offset: token.loc.start.offset + escapeIndex\n }\n );\n }\n }\n escapeIndex = value.indexOf(\"\\\\\", lastIndex);\n }\n result += value.slice(lastIndex);\n return result;\n}\nfunction getLiteralValue(value, token, json5 = false) {\n switch (token.type) {\n case \"Boolean\":\n return value === \"true\";\n case \"Number\":\n if (json5) {\n if (value.charCodeAt(0) === 45) {\n return -Number(value.slice(1));\n }\n if (value.charCodeAt(0) === 43) {\n return Number(value.slice(1));\n }\n }\n return Number(value);\n case \"String\":\n return getStringValue(value.slice(1, -1), token, json5);\n default:\n throw new TypeError(`Unknown token type \"${token.type}.`);\n }\n}\nfunction parse(text, options) {\n options = Object.freeze({\n ...DEFAULT_OPTIONS,\n ...options\n });\n const tokens = [];\n const tokenizer = new Tokenizer(text, {\n mode: options.mode,\n ranges: options.ranges\n });\n const json5 = options.mode === \"json5\";\n const allowTrailingCommas = options.allowTrailingCommas || json5;\n function nextNoComments() {\n const nextType = tokenizer.next();\n if (nextType && options.tokens) {\n tokens.push(tokenizer.token);\n }\n return nextType;\n }\n function nextSkipComments() {\n const nextType = tokenizer.next();\n if (nextType && options.tokens) {\n tokens.push(tokenizer.token);\n }\n if (nextType >= tt.LineComment) {\n return nextSkipComments();\n }\n return nextType;\n }\n const next = options.mode === \"json\" ? nextNoComments : nextSkipComments;\n function assertTokenType(token, type) {\n if (token !== type) {\n throw new UnexpectedToken(tokenizer.token);\n }\n }\n function assertTokenTypes(token, types2) {\n if (!types2.includes(token)) {\n throw new UnexpectedToken(tokenizer.token);\n }\n }\n function createRange(start, end) {\n return options.ranges ? {\n range: [start.offset, end.offset]\n } : void 0;\n }\n function createLiteralNode(tokenType) {\n const token = tokenizer.token;\n const range = createRange(token.loc.start, token.loc.end);\n const value = getLiteralValue(\n text.slice(token.loc.start.offset, token.loc.end.offset),\n token,\n json5\n );\n const loc = {\n start: {\n ...token.loc.start\n },\n end: {\n ...token.loc.end\n }\n };\n const parts = { loc, ...range };\n switch (tokenType) {\n case tt.String:\n return types.string(\n /** @type {string} */\n value,\n parts\n );\n case tt.Number:\n return types.number(\n /** @type {number} */\n value,\n parts\n );\n case tt.Boolean:\n return types.boolean(\n /** @type {boolean} */\n value,\n parts\n );\n default:\n throw new TypeError(`Unknown token type ${token.type}.`);\n }\n }\n function createJSON5IdentifierNode(token) {\n const range = createRange(token.loc.start, token.loc.end);\n const identifier = text.slice(token.loc.start.offset, token.loc.end.offset);\n const loc = {\n start: {\n ...token.loc.start\n },\n end: {\n ...token.loc.end\n }\n };\n const parts = { loc, ...range };\n if (token.type !== \"Identifier\") {\n let sign = \"\";\n if (identifier[0] === \"+\" || identifier[0] === \"-\") {\n sign = identifier[0];\n }\n return types[identifier.includes(\"NaN\") ? \"nan\" : \"infinity\"](\n /** @type {Sign} */\n sign,\n parts\n );\n }\n return types.identifier(normalizeIdentifier(identifier), parts);\n }\n function createNullNode(token) {\n const range = createRange(token.loc.start, token.loc.end);\n return types.null({\n loc: {\n start: {\n ...token.loc.start\n },\n end: {\n ...token.loc.end\n }\n },\n ...range\n });\n }\n function parseProperty(tokenType) {\n if (json5) {\n assertTokenTypes(tokenType, [tt.String, tt.Identifier, tt.Number]);\n } else {\n assertTokenType(tokenType, tt.String);\n }\n const token = tokenizer.token;\n if (json5 && tokenType === tt.Number && /[+\\-0-9]/.test(text[token.loc.start.offset])) {\n throw new UnexpectedToken(token);\n }\n let key = tokenType === tt.String ? (\n /** @type {StringNode} */\n createLiteralNode(tokenType)\n ) : (\n /** @type {IdentifierNode|NaNNode|InfinityNode} */\n createJSON5IdentifierNode(token)\n );\n if (json5 && (key.type === \"NaN\" || key.type === \"Infinity\")) {\n if (key.sign !== \"\") {\n throw new UnexpectedToken(tokenizer.token);\n }\n key = types.identifier(key.type, { loc: key.loc, ...createRange(key.loc.start, key.loc.end) });\n }\n tokenType = next();\n assertTokenType(tokenType, tt.Colon);\n const value = parseValue();\n const range = createRange(key.loc.start, value.loc.end);\n return types.member(\n /** @type {StringNode|IdentifierNode} */\n key,\n /** @type {ValueNode} */\n value,\n {\n loc: {\n start: {\n ...key.loc.start\n },\n end: {\n ...value.loc.end\n }\n },\n ...range\n }\n );\n }\n function parseObject(firstTokenType) {\n assertTokenType(firstTokenType, tt.LBrace);\n const firstToken = tokenizer.token;\n const members = [];\n let tokenType = next();\n if (tokenType !== tt.RBrace) {\n do {\n members.push(parseProperty(tokenType));\n tokenType = next();\n if (!tokenType) {\n throw new UnexpectedEOF(members[members.length - 1].loc.end);\n }\n if (tokenType === tt.Comma) {\n tokenType = next();\n if (allowTrailingCommas && tokenType === tt.RBrace) {\n break;\n }\n } else {\n break;\n }\n } while (tokenType);\n }\n assertTokenType(tokenType, tt.RBrace);\n const lastToken = tokenizer.token;\n const range = createRange(firstToken.loc.start, lastToken.loc.end);\n return types.object(members, {\n loc: {\n start: {\n ...firstToken.loc.start\n },\n end: {\n ...lastToken.loc.end\n }\n },\n ...range\n });\n }\n function parseArray(firstTokenType) {\n assertTokenType(firstTokenType, tt.LBracket);\n const firstToken = tokenizer.token;\n const elements = [];\n let tokenType = next();\n if (tokenType !== tt.RBracket) {\n do {\n const value = parseValue(tokenType);\n elements.push(types.element(\n /** @type {ValueNode} */\n value,\n { loc: value.loc }\n ));\n tokenType = next();\n if (tokenType === tt.Comma) {\n tokenType = next();\n if (allowTrailingCommas && tokenType === tt.RBracket) {\n break;\n }\n } else {\n break;\n }\n } while (tokenType);\n }\n assertTokenType(tokenType, tt.RBracket);\n const lastToken = tokenizer.token;\n const range = createRange(firstToken.loc.start, lastToken.loc.end);\n return types.array(elements, {\n loc: {\n start: {\n ...firstToken.loc.start\n },\n end: {\n ...lastToken.loc.end\n }\n },\n ...range\n });\n }\n function parseValue(tokenType) {\n tokenType = tokenType ?? next();\n const token = tokenizer.token;\n switch (tokenType) {\n case tt.String:\n case tt.Boolean:\n return createLiteralNode(tokenType);\n case tt.Number:\n if (json5) {\n let tokenText = text.slice(token.loc.start.offset, token.loc.end.offset);\n if (tokenText[0] === \"+\" || tokenText[0] === \"-\") {\n tokenText = tokenText.slice(1);\n }\n if (tokenText === \"NaN\" || tokenText === \"Infinity\") {\n return createJSON5IdentifierNode(token);\n }\n }\n return createLiteralNode(tokenType);\n case tt.Null:\n return createNullNode(token);\n case tt.LBrace:\n return parseObject(tokenType);\n case tt.LBracket:\n return parseArray(tokenType);\n default:\n throw new UnexpectedToken(token);\n }\n }\n const docBody = parseValue();\n const unexpectedToken = next();\n if (unexpectedToken) {\n throw new UnexpectedToken(tokenizer.token);\n }\n const docParts = {\n loc: {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n ...docBody.loc.end\n }\n }\n };\n if (options.tokens) {\n docParts.tokens = tokens;\n }\n if (options.ranges) {\n docParts.range = [\n docParts.loc.start.offset,\n docParts.loc.end.offset\n ];\n }\n return types.document(\n /** @type {ValueNode} */\n docBody,\n docParts\n );\n}\n\n// src/utils.js\nvar eq = (x) => (y) => x === y;\nvar not = (fn) => (x) => !fn(x);\nvar getValues = (o) => Object.values(o);\nvar notUndefined = (x) => x !== void 0;\nvar isXError = (x) => (error) => error.keyword === x;\nvar isRequiredError = isXError(\"required\");\nvar isAnyOfError = isXError(\"anyOf\");\nvar isEnumError = isXError(\"enum\");\nvar getErrors = (node) => node && node.errors ? node.errors.map(\n (e) => e.keyword === \"errorMessage\" ? { ...e.params.errors[0], message: e.message } : e\n) : [];\nvar getChildren = (node) => node && getValues(node.children) || [];\nvar getSiblings = (parent) => (node) => getChildren(parent).filter(not(eq(node)));\nvar concatAll = (xs) => (ys) => ys.reduce((zs, z) => zs.concat(z), xs);\n\n// src/validation-errors/required.js\nimport { bold, red, magenta } from \"kleur/colors\";\n\n// src/code-frame-columns.js\nvar NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source) {\n const startLoc = {\n ...loc.start\n };\n const endLoc = {\n ...startLoc,\n ...loc.end\n };\n const linesAbove = 2;\n const linesBelow = 3;\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n const start = Math.max(startLine - (linesAbove + 1), 0);\n const end = Math.min(source.length, endLine + linesBelow);\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n return { start, end, markerLines };\n}\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines);\n const numberMaxWidth = String(end).length;\n return rawLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${String(number)}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\n \"\\n \",\n gutter.replace(/\\d/g, \" \"),\n \" \",\n markerSpacing,\n \"^\".repeat(numberOfMarkers)\n ].join(\"\");\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + opts.message;\n }\n }\n return [\n \">\",\n gutter,\n line.length > 0 ? ` ${line}` : \"\",\n markerLine\n ].join(\"\");\n } else {\n return [\" \", gutter, line.length > 0 ? ` ${line}` : \"\"].join(\"\");\n }\n }).join(\"\\n\");\n}\n\n// src/json/utils.js\nvar getPointers = (dataPath) => {\n return dataPath.split(\"/\").slice(1).map((pointer2) => pointer2.split(\"~1\").join(\"/\").split(\"~0\").join(\"~\"));\n};\n\n// src/json/get-meta-from-path.js\nfunction getMetaFromPath(jsonAst, dataPath, includeIdentifierLocation) {\n const pointers = getPointers(dataPath);\n const lastPointerIndex = pointers.length - 1;\n return pointers.reduce((obj, pointer2, idx) => {\n switch (obj.type) {\n case \"Object\": {\n const filtered = obj.members.filter(\n (child) => child.name.value === pointer2\n );\n if (filtered.length !== 1) {\n throw new Error(`Couldn't find property ${pointer2} of ${dataPath}`);\n }\n const { name, value } = filtered[0];\n return includeIdentifierLocation && idx === lastPointerIndex ? name : value;\n }\n case \"Array\":\n return obj.elements[pointer2].value;\n default:\n console.log(obj);\n }\n }, jsonAst.body);\n}\n\n// src/json/get-decorated-data-path.js\nfunction getDecoratedDataPath(jsonAst, dataPath) {\n let decoratedPath = \"\";\n getPointers(dataPath).reduce((obj, pointer2) => {\n switch (obj.type) {\n case \"Element\":\n obj = obj.value;\n /* eslint-disable-next-line no-fallthrough -- explicitly want fallthrough here */\n case \"Object\": {\n decoratedPath += `/${pointer2}`;\n const filtered = obj.members.filter(\n (child) => child.name.value === pointer2\n );\n if (filtered.length !== 1) {\n throw new Error(`Couldn't find property ${pointer2} of ${dataPath}`);\n }\n return filtered[0].value;\n }\n case \"Array\": {\n decoratedPath += `/${pointer2}${getTypeName(obj.elements[pointer2])}`;\n return obj.elements[pointer2];\n }\n default:\n console.log(obj);\n }\n }, jsonAst.body);\n return decoratedPath;\n}\nfunction getTypeName(obj) {\n if (!obj || !obj.elements) {\n return \"\";\n }\n const type = obj.elements.filter(\n (child) => child && child.name && child.name.value === \"type\"\n );\n if (!type.length) {\n return \"\";\n }\n return type[0].value && `:${type[0].value.value}` || \"\";\n}\n\n// src/validation-errors/base.js\nvar BaseValidationError = class {\n constructor(options = { isIdentifierLocation: false }, { data, schema, jsonAst, jsonRaw }) {\n this.options = options;\n this.data = data;\n this.schema = schema;\n this.jsonAst = jsonAst;\n this.jsonRaw = jsonRaw;\n }\n getLocation(dataPath = this.instancePath) {\n const { isIdentifierLocation, isSkipEndLocation } = this.options;\n const { loc } = getMetaFromPath(\n this.jsonAst,\n dataPath,\n isIdentifierLocation\n );\n return {\n start: loc.start,\n end: isSkipEndLocation ? void 0 : loc.end\n };\n }\n getDecoratedPath(dataPath = this.instancePath) {\n const decoratedPath = getDecoratedDataPath(this.jsonAst, dataPath);\n return decoratedPath;\n }\n getCodeFrame(message, dataPath = this.instancePath) {\n return codeFrameColumns(this.jsonRaw, this.getLocation(dataPath), {\n message\n });\n }\n /**\n * @return {string}\n */\n get instancePath() {\n return typeof this.options.instancePath !== \"undefined\" ? this.options.instancePath : this.options.dataPath;\n }\n print() {\n throw new Error(\n `Implement the 'print' method inside ${this.constructor.name}!`\n );\n }\n getError() {\n throw new Error(\n `Implement the 'getError' method inside ${this.constructor.name}!`\n );\n }\n};\n\n// src/validation-errors/required.js\nvar REQUIRED = bold(\"REQUIRED\");\nvar RequiredValidationError = class extends BaseValidationError {\n getLocation(dataPath = this.instancePath) {\n const { start } = super.getLocation(dataPath);\n return { start };\n }\n print() {\n const { message, params } = this.options;\n const line = red(`${REQUIRED} ${message}`);\n const output = [`${line}\n`];\n return output.concat(\n this.getCodeFrame(`${magenta(params.missingProperty)} is missing here!`)\n );\n }\n getError() {\n const { message } = this.options;\n return {\n ...this.getLocation(),\n error: `${this.getDecoratedPath()} ${message}`,\n path: this.instancePath\n };\n }\n};\n\n// src/validation-errors/additional-prop.js\nimport { bold as bold2, red as red2, magenta as magenta2 } from \"kleur/colors\";\nvar ADDITIONAL_PROPERTY = bold2(\"ADDITIONAL PROPERTY\");\nvar AdditionalPropValidationError = class extends BaseValidationError {\n constructor(...args) {\n super(...args);\n this.options.isIdentifierLocation = true;\n }\n print() {\n const { message, params } = this.options;\n const line = red2(`${ADDITIONAL_PROPERTY} ${message}`);\n const output = [`${line}\n`];\n return output.concat(\n this.getCodeFrame(\n `${magenta2(params.additionalProperty)} is not expected to be here!`,\n `${this.instancePath}/${params.additionalProperty}`\n )\n );\n }\n getError() {\n const { params } = this.options;\n return {\n ...this.getLocation(`${this.instancePath}/${params.additionalProperty}`),\n error: `${this.getDecoratedPath()} Property ${params.additionalProperty} is not expected to be here`,\n path: this.instancePath\n };\n }\n};\n\n// src/validation-errors/enum.js\nvar import_leven = __toESM(require_leven());\nvar import_jsonpointer = __toESM(require_jsonpointer());\nimport { bold as bold3, red as red3, magenta as magenta3 } from \"kleur/colors\";\nvar ENUM = bold3(\"ENUM\");\nvar EnumValidationError = class extends BaseValidationError {\n print() {\n const {\n message,\n params: { allowedValues }\n } = this.options;\n const bestMatch = this.findBestMatch();\n const line1 = red3(`${ENUM} ${message}`);\n const line2 = red3(`(${allowedValues.join(\", \")})`);\n const output = [line1, `${line2}\n`];\n return output.concat(\n this.getCodeFrame(\n bestMatch !== null ? `Did you mean ${magenta3(bestMatch)} here?` : `Unexpected value, should be equal to one of the allowed values`\n )\n );\n }\n getError() {\n const { message, params } = this.options;\n const bestMatch = this.findBestMatch();\n const allowedValues = params.allowedValues.join(\", \");\n const output = {\n ...this.getLocation(),\n error: `${this.getDecoratedPath()} ${message}: ${allowedValues}`,\n path: this.instancePath\n };\n if (bestMatch !== null) {\n output.suggestion = `Did you mean ${bestMatch}?`;\n }\n return output;\n }\n findBestMatch() {\n const {\n params: { allowedValues }\n } = this.options;\n const currentValue = this.instancePath === \"\" ? this.data : import_jsonpointer.default.get(this.data, this.instancePath);\n if (!currentValue) {\n return null;\n }\n const bestMatch = allowedValues.map((value) => ({\n value,\n weight: (0, import_leven.default)(value, currentValue.toString())\n })).sort(\n (x, y) => x.weight > y.weight ? 1 : x.weight < y.weight ? -1 : 0\n )[0];\n return allowedValues.length === 1 || bestMatch.weight < bestMatch.value.length ? bestMatch.value : null;\n }\n};\n\n// src/validation-errors/default.js\nimport { bold as bold4, red as red4, magenta as magenta4 } from \"kleur/colors\";\nvar DefaultValidationError = class extends BaseValidationError {\n print() {\n const { keyword, message } = this.options;\n const line = red4(`${bold4(keyword.toUpperCase())} ${message}`);\n const output = [`${line}\n`];\n return output.concat(this.getCodeFrame(`${magenta4(keyword)} ${message}`));\n }\n getError() {\n const { keyword, message } = this.options;\n return {\n ...this.getLocation(),\n error: `${this.getDecoratedPath()}: ${keyword} ${message}`,\n path: this.instancePath\n };\n }\n};\n\n// src/helpers.js\nvar JSON_POINTERS_REGEX = /\\/[\\w_-]+(\\/\\d+)?/g;\nfunction makeTree(ajvErrors = []) {\n const root = { children: {} };\n ajvErrors.forEach((ajvError) => {\n const instancePath = typeof ajvError.instancePath !== \"undefined\" ? ajvError.instancePath : ajvError.dataPath;\n const paths = instancePath === \"\" ? [\"\"] : instancePath.match(JSON_POINTERS_REGEX);\n paths && paths.reduce((obj, path, i) => {\n obj.children[path] = obj.children[path] || { children: {}, errors: [] };\n if (i === paths.length - 1) {\n obj.children[path].errors.push(ajvError);\n }\n return obj.children[path];\n }, root);\n });\n return root;\n}\nfunction filterRedundantErrors(root, parent, key) {\n getErrors(root).forEach((error) => {\n if (isRequiredError(error)) {\n root.errors = [error];\n root.children = {};\n }\n });\n if (getErrors(root).some(isAnyOfError)) {\n if (Object.keys(root.children).length > 0) {\n delete root.errors;\n }\n }\n if (root.errors && root.errors.length && getErrors(root).every(isEnumError)) {\n if (getSiblings(parent)(root).filter(notUndefined).some(getErrors)) {\n delete parent.children[key];\n }\n }\n Object.entries(root.children).forEach(\n ([key2, child]) => filterRedundantErrors(child, root, key2)\n );\n}\nfunction createErrorInstances(root, options) {\n const errors = getErrors(root);\n if (errors.length && errors.every(isEnumError)) {\n const uniqueValues = new Set(\n concatAll([])(errors.map((e) => e.params.allowedValues))\n );\n const allowedValues = [...uniqueValues];\n const error = errors[0];\n return [\n new EnumValidationError(\n {\n ...error,\n params: { allowedValues }\n },\n options\n )\n ];\n } else {\n return concatAll(\n errors.reduce((ret, error) => {\n switch (error.keyword) {\n case \"additionalProperties\":\n return ret.concat(\n new AdditionalPropValidationError(error, options)\n );\n case \"enum\":\n return ret.concat(new EnumValidationError(error, options));\n case \"required\":\n return ret.concat(new RequiredValidationError(error, options));\n default:\n return ret.concat(new DefaultValidationError(error, options));\n }\n }, [])\n )(getChildren(root).map((child) => createErrorInstances(child, options)));\n }\n}\nvar helpers_default = (ajvErrors, options) => {\n const tree = makeTree(ajvErrors || []);\n filterRedundantErrors(tree);\n return createErrorInstances(tree, options);\n};\n\n// src/index.js\nvar index_default = (schema, data, errors, options = {}) => {\n const { format = \"cli\", indent = null, json = null } = options;\n const jsonRaw = json || JSON.stringify(data, null, indent);\n const jsonAst = parse(jsonRaw);\n const customErrorToText = (error) => error.print().join(\"\\n\");\n const customErrorToStructure = (error) => error.getError();\n const customErrors = helpers_default(errors, {\n data,\n schema,\n jsonAst,\n jsonRaw\n });\n if (format === \"cli\") {\n return customErrors.map(customErrorToText).join(\"\\n\\n\");\n } else {\n return customErrors.map(customErrorToStructure);\n }\n};\nexport {\n index_default as default\n};\n//# sourceMappingURL=index.mjs.map\n","'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","import Ajv from 'ajv';\nimport { e as entities$1, h as html5, b as bundledElements } from './elements.js';\nimport betterAjvErrors from '@sidvind/better-ajv-errors';\nimport { n as naturalJoin } from './utils/natural-join.js';\nimport kleur from 'kleur';\nimport { stylish as stylish$1 } from '@html-validate/stylish';\nimport semver from 'semver';\n\nconst $schema$2 = \"http://json-schema.org/draft-06/schema#\";\nconst $id$2 = \"http://json-schema.org/draft-06/schema#\";\nconst title = \"Core schema meta-schema\";\nconst definitions$1 = {\n\tschemaArray: {\n\t\ttype: \"array\",\n\t\tminItems: 1,\n\t\titems: {\n\t\t\t$ref: \"#\"\n\t\t}\n\t},\n\tnonNegativeInteger: {\n\t\ttype: \"integer\",\n\t\tminimum: 0\n\t},\n\tnonNegativeIntegerDefault0: {\n\t\tallOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"default\": 0\n\t\t\t}\n\t\t]\n\t},\n\tsimpleTypes: {\n\t\t\"enum\": [\n\t\t\t\"array\",\n\t\t\t\"boolean\",\n\t\t\t\"integer\",\n\t\t\t\"null\",\n\t\t\t\"number\",\n\t\t\t\"object\",\n\t\t\t\"string\"\n\t\t]\n\t},\n\tstringArray: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t},\n\t\tuniqueItems: true,\n\t\t\"default\": [\n\t\t]\n\t}\n};\nconst type$2 = [\n\t\"object\",\n\t\"boolean\"\n];\nconst properties$2 = {\n\t$id: {\n\t\ttype: \"string\",\n\t\tformat: \"uri-reference\"\n\t},\n\t$schema: {\n\t\ttype: \"string\",\n\t\tformat: \"uri\"\n\t},\n\t$ref: {\n\t\ttype: \"string\",\n\t\tformat: \"uri-reference\"\n\t},\n\ttitle: {\n\t\ttype: \"string\"\n\t},\n\tdescription: {\n\t\ttype: \"string\"\n\t},\n\t\"default\": {\n\t},\n\texamples: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t}\n\t},\n\tmultipleOf: {\n\t\ttype: \"number\",\n\t\texclusiveMinimum: 0\n\t},\n\tmaximum: {\n\t\ttype: \"number\"\n\t},\n\texclusiveMaximum: {\n\t\ttype: \"number\"\n\t},\n\tminimum: {\n\t\ttype: \"number\"\n\t},\n\texclusiveMinimum: {\n\t\ttype: \"number\"\n\t},\n\tmaxLength: {\n\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t},\n\tminLength: {\n\t\t$ref: \"#/definitions/nonNegativeIntegerDefault0\"\n\t},\n\tpattern: {\n\t\ttype: \"string\",\n\t\tformat: \"regex\"\n\t},\n\tadditionalItems: {\n\t\t$ref: \"#\"\n\t},\n\titems: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/schemaArray\"\n\t\t\t}\n\t\t],\n\t\t\"default\": {\n\t\t}\n\t},\n\tmaxItems: {\n\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t},\n\tminItems: {\n\t\t$ref: \"#/definitions/nonNegativeIntegerDefault0\"\n\t},\n\tuniqueItems: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tcontains: {\n\t\t$ref: \"#\"\n\t},\n\tmaxProperties: {\n\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t},\n\tminProperties: {\n\t\t$ref: \"#/definitions/nonNegativeIntegerDefault0\"\n\t},\n\trequired: {\n\t\t$ref: \"#/definitions/stringArray\"\n\t},\n\tadditionalProperties: {\n\t\t$ref: \"#\"\n\t},\n\tdefinitions: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tproperties: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tpatternProperties: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tdependencies: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#/definitions/stringArray\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\tpropertyNames: {\n\t\t$ref: \"#\"\n\t},\n\t\"const\": {\n\t},\n\t\"enum\": {\n\t\ttype: \"array\",\n\t\tminItems: 1,\n\t\tuniqueItems: true\n\t},\n\ttype: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/simpleTypes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\t$ref: \"#/definitions/simpleTypes\"\n\t\t\t\t},\n\t\t\t\tminItems: 1,\n\t\t\t\tuniqueItems: true\n\t\t\t}\n\t\t]\n\t},\n\tformat: {\n\t\ttype: \"string\"\n\t},\n\tallOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\tanyOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\toneOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\tnot: {\n\t\t$ref: \"#\"\n\t}\n};\nvar ajvSchemaDraft = {\n\t$schema: $schema$2,\n\t$id: $id$2,\n\ttitle: title,\n\tdefinitions: definitions$1,\n\ttype: type$2,\n\tproperties: properties$2,\n\t\"default\": {\n}\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar cjs;\nvar hasRequiredCjs;\n\nfunction requireCjs () {\n\tif (hasRequiredCjs) return cjs;\n\thasRequiredCjs = 1;\n\n\tvar isMergeableObject = function isMergeableObject(value) {\n\t\treturn isNonNullObject(value)\n\t\t\t&& !isSpecial(value)\n\t};\n\n\tfunction isNonNullObject(value) {\n\t\treturn !!value && typeof value === 'object'\n\t}\n\n\tfunction isSpecial(value) {\n\t\tvar stringValue = Object.prototype.toString.call(value);\n\n\t\treturn stringValue === '[object RegExp]'\n\t\t\t|| stringValue === '[object Date]'\n\t\t\t|| isReactElement(value)\n\t}\n\n\t// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\tvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\n\tvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\n\tfunction isReactElement(value) {\n\t\treturn value.$$typeof === REACT_ELEMENT_TYPE\n\t}\n\n\tfunction emptyTarget(val) {\n\t\treturn Array.isArray(val) ? [] : {}\n\t}\n\n\tfunction cloneUnlessOtherwiseSpecified(value, options) {\n\t\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t\t: value\n\t}\n\n\tfunction defaultArrayMerge(target, source, options) {\n\t\treturn target.concat(source).map(function(element) {\n\t\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t\t})\n\t}\n\n\tfunction getMergeFunction(key, options) {\n\t\tif (!options.customMerge) {\n\t\t\treturn deepmerge\n\t\t}\n\t\tvar customMerge = options.customMerge(key);\n\t\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n\t}\n\n\tfunction getEnumerableOwnPropertySymbols(target) {\n\t\treturn Object.getOwnPropertySymbols\n\t\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t\t})\n\t\t\t: []\n\t}\n\n\tfunction getKeys(target) {\n\t\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n\t}\n\n\tfunction propertyIsOnObject(object, property) {\n\t\ttry {\n\t\t\treturn property in object\n\t\t} catch(_) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Protects from prototype poisoning and unexpected merging up the prototype chain.\n\tfunction propertyIsUnsafe(target, key) {\n\t\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n\t}\n\n\tfunction mergeObject(target, source, options) {\n\t\tvar destination = {};\n\t\tif (options.isMergeableObject(target)) {\n\t\t\tgetKeys(target).forEach(function(key) {\n\t\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t\t});\n\t\t}\n\t\tgetKeys(source).forEach(function(key) {\n\t\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t\t} else {\n\t\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t\t}\n\t\t});\n\t\treturn destination\n\t}\n\n\tfunction deepmerge(target, source, options) {\n\t\toptions = options || {};\n\t\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\t\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t\t// implementations can use it. The caller may not replace it.\n\t\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\t\tvar sourceIsArray = Array.isArray(source);\n\t\tvar targetIsArray = Array.isArray(target);\n\t\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\t\tif (!sourceAndTargetTypesMatch) {\n\t\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t\t} else if (sourceIsArray) {\n\t\t\treturn options.arrayMerge(target, source, options)\n\t\t} else {\n\t\t\treturn mergeObject(target, source, options)\n\t\t}\n\t}\n\n\tdeepmerge.all = function deepmergeAll(array, options) {\n\t\tif (!Array.isArray(array)) {\n\t\t\tthrow new Error('first argument should be an array')\n\t\t}\n\n\t\treturn array.reduce(function(prev, next) {\n\t\t\treturn deepmerge(prev, next, options)\n\t\t}, {})\n\t};\n\n\tvar deepmerge_1 = deepmerge;\n\n\tcjs = deepmerge_1;\n\treturn cjs;\n}\n\nvar cjsExports = /*@__PURE__*/ requireCjs();\nvar deepmerge = /*@__PURE__*/getDefaultExportFromCjs(cjsExports);\n\nfunction stringify(value) {\n if (typeof value === \"string\") {\n return String(value);\n } else {\n return JSON.stringify(value);\n }\n}\nclass WrappedError extends Error {\n constructor(message) {\n super(stringify(message));\n }\n}\n\nfunction ensureError(value) {\n if (value instanceof Error) {\n return value;\n } else {\n return new WrappedError(value);\n }\n}\n\nclass NestedError extends Error {\n constructor(message, nested) {\n super(message);\n Error.captureStackTrace(this, NestedError);\n this.name = NestedError.name;\n if (nested?.stack) {\n this.stack ??= \"\";\n this.stack += `\nCaused by: ${nested.stack}`;\n }\n }\n}\n\nclass UserError extends NestedError {\n constructor(message, nested) {\n super(message, nested);\n Error.captureStackTrace(this, UserError);\n this.name = UserError.name;\n Object.defineProperty(this, \"isUserError\", {\n value: true,\n enumerable: false,\n writable: false\n });\n }\n /**\n * @public\n */\n /* istanbul ignore next: default implementation */\n prettyFormat() {\n return void 0;\n }\n}\n\nclass InheritError extends UserError {\n tagName;\n inherit;\n filename;\n constructor({ tagName, inherit }) {\n const message = `Element <${tagName}> cannot inherit from <${inherit}>: no such element`;\n super(message);\n Error.captureStackTrace(this, InheritError);\n this.name = InheritError.name;\n this.tagName = tagName;\n this.inherit = inherit;\n this.filename = null;\n }\n prettyFormat() {\n const { message, tagName, inherit } = this;\n const source = this.filename ? [\"\", \"This error occurred when loading element metadata from:\", `\"${this.filename}\"`, \"\"] : [\"\"];\n return [\n message,\n ...source,\n \"This usually occurs when the elements are defined in the wrong order, try one of the following:\",\n \"\",\n ` - Ensure the spelling of \"${inherit}\" is correct.`,\n ` - Ensure the file containing \"${inherit}\" is loaded before the file containing \"${tagName}\".`,\n ` - Move the definition of \"${inherit}\" above the definition for \"${tagName}\".`\n ].join(\"\\n\");\n }\n}\n\nfunction isUserError(error) {\n return Boolean(error && typeof error === \"object\" && \"isUserError\" in error);\n}\n\nfunction getSummary(schema, obj, errors) {\n const output = betterAjvErrors(schema, obj, errors, {\n format: \"js\"\n });\n return output.length > 0 ? output[0].error : \"unknown validation error\";\n}\nclass SchemaValidationError extends UserError {\n /** Configuration filename the error originates from */\n filename;\n /** Configuration object the error originates from */\n obj;\n /** JSON schema used when validating the configuration */\n schema;\n /** List of schema validation errors */\n errors;\n constructor(filename, message, obj, schema, errors) {\n const summary = getSummary(schema, obj, errors);\n super(`${message}: ${summary}`);\n this.filename = filename;\n this.obj = obj;\n this.schema = schema;\n this.errors = errors;\n }\n}\n\nfunction cyrb53(str) {\n const a = 2654435761;\n const b = 1597334677;\n const c = 2246822507;\n const d = 3266489909;\n const e = 4294967296;\n const f = 2097151;\n const seed = 0;\n let h1 = 3735928559 ^ seed;\n let h2 = 1103547991 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, a);\n h2 = Math.imul(h2 ^ ch, b);\n }\n h1 = Math.imul(h1 ^ h1 >>> 16, c) ^ Math.imul(h2 ^ h2 >>> 13, d);\n h2 = Math.imul(h2 ^ h2 >>> 16, c) ^ Math.imul(h1 ^ h1 >>> 13, d);\n return e * (f & h2) + (h1 >>> 0);\n}\nconst computeHash = cyrb53;\n\nconst $schema$1 = \"http://json-schema.org/draft-06/schema#\";\nconst $id$1 = \"https://html-validate.org/schemas/elements.json\";\nconst type$1 = \"object\";\nconst properties$1 = {\n\t$schema: {\n\t\ttype: \"string\"\n\t}\n};\nconst patternProperties = {\n\t\"^[^$].*$\": {\n\t\ttype: \"object\",\n\t\tproperties: {\n\t\t\tinherit: {\n\t\t\t\ttitle: \"Inherit from another element\",\n\t\t\t\tdescription: \"Most properties from the parent element will be copied onto this one\",\n\t\t\t\ttype: \"string\"\n\t\t\t},\n\t\t\tembedded: {\n\t\t\t\ttitle: \"Mark this element as belonging in the embedded content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\tflow: {\n\t\t\t\ttitle: \"Mark this element as belonging in the flow content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\theading: {\n\t\t\t\ttitle: \"Mark this element as belonging in the heading content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\tinteractive: {\n\t\t\t\ttitle: \"Mark this element as belonging in the interactive content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\ttitle: \"Mark this element as belonging in the metadata content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\tphrasing: {\n\t\t\t\ttitle: \"Mark this element as belonging in the phrasing content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\tsectioning: {\n\t\t\t\ttitle: \"Mark this element as belonging in the sectioning content category\",\n\t\t\t\t$ref: \"#/definitions/contentCategory\"\n\t\t\t},\n\t\t\tdeprecated: {\n\t\t\t\ttitle: \"Mark element as deprecated\",\n\t\t\t\tdescription: \"Deprecated elements should not be used. If a message is provided it will be included in the error\",\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$ref: \"#/definitions/deprecatedElement\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tforeign: {\n\t\t\t\ttitle: \"Mark element as foreign\",\n\t\t\t\tdescription: \"Foreign elements are elements which have a start and end tag but is otherwize not parsed\",\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\t\"void\": {\n\t\t\t\ttitle: \"Mark element as void\",\n\t\t\t\tdescription: \"Void elements are elements which cannot have content and thus must not use an end tag\",\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\ttransparent: {\n\t\t\t\ttitle: \"Mark element as transparent\",\n\t\t\t\tdescription: \"Transparent elements follows the same content model as its parent, i.e. the content must be allowed in the parent.\",\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\timplicitClosed: {\n\t\t\t\ttitle: \"List of elements which implicitly closes this element\",\n\t\t\t\tdescription: \"Some elements are automatically closed when another start tag occurs\",\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\timplicitRole: {\n\t\t\t\ttitle: \"Implicit ARIA role for this element\",\n\t\t\t\tdescription: \"Some elements have implicit ARIA roles.\",\n\t\t\t\tdeprecated: true,\n\t\t\t\t\"function\": true\n\t\t\t},\n\t\t\taria: {\n\t\t\t\ttitle: \"WAI-ARIA properties for this element\",\n\t\t\t\t$ref: \"#/definitions/Aria\"\n\t\t\t},\n\t\t\tscriptSupporting: {\n\t\t\t\ttitle: \"Mark element as script-supporting\",\n\t\t\t\tdescription: \"Script-supporting elements are elements which can be inserted where othersise not permitted to assist in templating\",\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\tfocusable: {\n\t\t\t\ttitle: \"Mark this element as focusable\",\n\t\t\t\tdescription: \"This element may contain an associated label element.\",\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"function\": true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tform: {\n\t\t\t\ttitle: \"Mark element as a submittable form element\",\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\tformAssociated: {\n\t\t\t\ttitle: \"Mark element as a form-associated element\",\n\t\t\t\t$ref: \"#/definitions/FormAssociated\"\n\t\t\t},\n\t\t\tlabelable: {\n\t\t\t\ttitle: \"Mark this element as labelable\",\n\t\t\t\tdescription: \"This element may contain an associated label element.\",\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"function\": true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\ttemplateRoot: {\n\t\t\t\ttitle: \"Mark element as an element ignoring DOM ancestry, i.e. <template>.\",\n\t\t\t\tdescription: \"The <template> element can contain any elements.\",\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\tdeprecatedAttributes: {\n\t\t\t\ttitle: \"List of deprecated attributes\",\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\trequiredAttributes: {\n\t\t\t\ttitle: \"List of required attributes\",\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tattributes: {\n\t\t\t\ttitle: \"List of known attributes and allowed values\",\n\t\t\t\t$ref: \"#/definitions/PermittedAttribute\"\n\t\t\t},\n\t\t\tpermittedContent: {\n\t\t\t\ttitle: \"List of elements or categories allowed as content in this element\",\n\t\t\t\t$ref: \"#/definitions/Permitted\"\n\t\t\t},\n\t\t\tpermittedDescendants: {\n\t\t\t\ttitle: \"List of elements or categories allowed as descendants in this element\",\n\t\t\t\t$ref: \"#/definitions/Permitted\"\n\t\t\t},\n\t\t\tpermittedOrder: {\n\t\t\t\ttitle: \"Required order of child elements\",\n\t\t\t\t$ref: \"#/definitions/PermittedOrder\"\n\t\t\t},\n\t\t\tpermittedParent: {\n\t\t\t\ttitle: \"List of elements or categories allowed as parent to this element\",\n\t\t\t\t$ref: \"#/definitions/Permitted\"\n\t\t\t},\n\t\t\trequiredAncestors: {\n\t\t\t\ttitle: \"List of required ancestor elements\",\n\t\t\t\t$ref: \"#/definitions/RequiredAncestors\"\n\t\t\t},\n\t\t\trequiredContent: {\n\t\t\t\ttitle: \"List of required content elements\",\n\t\t\t\t$ref: \"#/definitions/RequiredContent\"\n\t\t\t},\n\t\t\ttextContent: {\n\t\t\t\ttitle: \"Allow, disallow or require textual content\",\n\t\t\t\tdescription: \"This property controls whenever an element allows, disallows or requires text. Text from any descendant counts, not only direct children\",\n\t\t\t\t\"default\": \"default\",\n\t\t\t\ttype: \"string\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"none\",\n\t\t\t\t\t\"default\",\n\t\t\t\t\t\"required\",\n\t\t\t\t\t\"accessible\"\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\tadditionalProperties: false\n\t}\n};\nconst definitions = {\n\tAria: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\timplicitRole: {\n\t\t\t\ttitle: \"Implicit ARIA role for this element\",\n\t\t\t\tdescription: \"Some elements have implicit ARIA roles.\",\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"function\": true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tnaming: {\n\t\t\t\ttitle: \"Prohibit or allow this element to be named by aria-label or aria-labelledby\",\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\"prohibited\",\n\t\t\t\t\t\t\t\"allowed\"\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"function\": true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\tcontentCategory: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"function\": true\n\t\t\t}\n\t\t]\n\t},\n\tdeprecatedElement: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\ttitle: \"A short text message shown next to the regular error message.\"\n\t\t\t},\n\t\t\tdocumentation: {\n\t\t\t\ttype: \"string\",\n\t\t\t\ttitle: \"An extended markdown formatted message shown with the contextual rule documentation.\"\n\t\t\t},\n\t\t\tsource: {\n\t\t\t\ttype: \"string\",\n\t\t\t\ttitle: \"Element source, e.g. what standard or library deprecated this element.\",\n\t\t\t\t\"default\": \"html5\"\n\t\t\t}\n\t\t}\n\t},\n\tFormAssociated: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\tdisablable: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\ttitle: \"Disablable elements can be disabled using the disabled attribute.\"\n\t\t\t},\n\t\t\tlisted: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\ttitle: \"Listed elements have a name attribute and is listed in the form and fieldset elements property.\"\n\t\t\t}\n\t\t}\n\t},\n\tPermitted: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: {\n\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$ref: \"#/definitions/PermittedGroup\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#/definitions/PermittedGroup\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\tPermittedAttribute: {\n\t\ttype: \"object\",\n\t\tpatternProperties: {\n\t\t\t\"^.*$\": {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tallowed: {\n\t\t\t\t\t\t\t\t\"function\": true,\n\t\t\t\t\t\t\t\ttitle: \"Set to a function to evaluate if this attribute is allowed in this context\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tboolean: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\ttitle: \"Set to true if this is a boolean attribute\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttitle: \"Set to true or string if this attribute is deprecated\",\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlist: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\ttitle: \"Set to true if this attribute is a list of space-separated tokens, each which must be valid by itself\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"enum\": {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\ttitle: \"Exhaustive list of values (string or regex) this attribute accepts\",\n\t\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tregexp: true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tomit: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\ttitle: \"Set to true if this attribute can optionally omit its value\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\ttitle: \"Set to true if this attribute is required\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"null\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\tPermittedGroup: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\texclude: {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype: \"array\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\tPermittedOrder: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t}\n\t},\n\tRequiredAncestors: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t}\n\t},\n\tRequiredContent: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t}\n\t}\n};\nvar schema = {\n\t$schema: $schema$1,\n\t$id: $id$1,\n\ttype: type$1,\n\tproperties: properties$1,\n\tpatternProperties: patternProperties,\n\tdefinitions: definitions\n};\n\nconst ajvRegexpValidate = function(data, dataCxt) {\n const valid = data instanceof RegExp;\n if (!valid) {\n ajvRegexpValidate.errors = [\n {\n instancePath: dataCxt?.instancePath,\n schemaPath: void 0,\n keyword: \"type\",\n message: \"should be a regular expression\",\n params: {\n keyword: \"type\"\n }\n }\n ];\n }\n return valid;\n};\nconst ajvRegexpKeyword = {\n keyword: \"regexp\",\n schema: false,\n errors: true,\n validate: ajvRegexpValidate\n};\n\nconst ajvFunctionValidate = function(data, dataCxt) {\n const valid = typeof data === \"function\";\n if (!valid) {\n ajvFunctionValidate.errors = [\n {\n instancePath: (\n /* istanbul ignore next */\n dataCxt?.instancePath\n ),\n schemaPath: void 0,\n keyword: \"type\",\n message: \"should be a function\",\n params: {\n keyword: \"type\"\n }\n }\n ];\n }\n return valid;\n};\nconst ajvFunctionKeyword = {\n keyword: \"function\",\n schema: false,\n errors: true,\n validate: ajvFunctionValidate\n};\n\nvar TextContent$1 = /* @__PURE__ */ ((TextContent2) => {\n TextContent2[\"NONE\"] = \"none\";\n TextContent2[\"DEFAULT\"] = \"default\";\n TextContent2[\"REQUIRED\"] = \"required\";\n TextContent2[\"ACCESSIBLE\"] = \"accessible\";\n return TextContent2;\n})(TextContent$1 || {});\nconst MetaCopyableProperty = [\n \"metadata\",\n \"flow\",\n \"sectioning\",\n \"heading\",\n \"phrasing\",\n \"embedded\",\n \"interactive\",\n \"transparent\",\n \"focusable\",\n \"form\",\n \"formAssociated\",\n \"labelable\",\n \"attributes\",\n \"aria\",\n \"permittedContent\",\n \"permittedDescendants\",\n \"permittedOrder\",\n \"permittedParent\",\n \"requiredAncestors\",\n \"requiredContent\"\n];\nfunction setMetaProperty(dst, key, value) {\n dst[key] = value;\n}\n\nfunction isSet(value) {\n return typeof value !== \"undefined\";\n}\nfunction flag(value) {\n return value ? true : void 0;\n}\nfunction stripUndefined(src) {\n const entries = Object.entries(src).filter(([, value]) => isSet(value));\n return Object.fromEntries(entries);\n}\nfunction migrateSingleAttribute(src, key) {\n const result = {};\n result.deprecated = flag(src.deprecatedAttributes?.includes(key));\n result.required = flag(src.requiredAttributes?.includes(key));\n result.omit = void 0;\n const attr = src.attributes ? src.attributes[key] : void 0;\n if (typeof attr === \"undefined\") {\n return stripUndefined(result);\n }\n if (attr === null) {\n result.delete = true;\n return stripUndefined(result);\n }\n if (Array.isArray(attr)) {\n if (attr.length === 0) {\n result.boolean = true;\n } else {\n result.enum = attr.filter((it) => it !== \"\");\n if (attr.includes(\"\")) {\n result.omit = true;\n }\n }\n return stripUndefined(result);\n } else {\n return stripUndefined({ ...result, ...attr });\n }\n}\nfunction migrateAttributes(src) {\n const keys = [\n ...Object.keys(src.attributes ?? {}),\n ...src.requiredAttributes ?? [],\n ...src.deprecatedAttributes ?? []\n /* eslint-disable-next-line sonarjs/no-alphabetical-sort -- not really needed in this case, this is a-z anyway */\n ].sort();\n const entries = keys.map((key) => {\n return [key, migrateSingleAttribute(src, key)];\n });\n return Object.fromEntries(entries);\n}\nfunction normalizeAriaImplicitRole(value) {\n if (!value) {\n return () => null;\n }\n if (typeof value === \"string\") {\n return () => value;\n }\n return value;\n}\nfunction normalizeAriaNaming(value) {\n if (!value) {\n return () => \"allowed\";\n }\n if (typeof value === \"string\") {\n return () => value;\n }\n return value;\n}\nfunction migrateElement(src) {\n const implicitRole = normalizeAriaImplicitRole(src.implicitRole ?? src.aria?.implicitRole);\n const result = {\n ...src,\n ...{\n formAssociated: void 0\n },\n attributes: migrateAttributes(src),\n textContent: src.textContent,\n focusable: src.focusable ?? false,\n implicitRole,\n templateRoot: src.templateRoot === true,\n aria: {\n implicitRole,\n naming: normalizeAriaNaming(src.aria?.naming)\n }\n };\n delete result.deprecatedAttributes;\n delete result.requiredAttributes;\n if (!result.textContent) {\n delete result.textContent;\n }\n if (src.formAssociated) {\n result.formAssociated = {\n disablable: Boolean(src.formAssociated.disablable),\n listed: Boolean(src.formAssociated.listed)\n };\n } else {\n delete result.formAssociated;\n }\n return result;\n}\n\nconst dynamicKeys = [\n \"metadata\",\n \"flow\",\n \"sectioning\",\n \"heading\",\n \"phrasing\",\n \"embedded\",\n \"interactive\",\n \"labelable\"\n];\nconst schemaCache = /* @__PURE__ */ new Map();\nfunction clone(src) {\n return JSON.parse(JSON.stringify(src));\n}\nfunction overwriteMerge$1(_a, b) {\n return b;\n}\nclass MetaTable {\n elements;\n schema;\n /**\n * @internal\n */\n constructor() {\n this.elements = {};\n this.schema = clone(schema);\n }\n /**\n * @internal\n */\n init() {\n this.resolveGlobal();\n }\n /**\n * Extend validation schema.\n *\n * @public\n */\n extendValidationSchema(patch) {\n if (patch.properties) {\n this.schema = deepmerge(this.schema, {\n patternProperties: {\n \"^[^$].*$\": {\n properties: patch.properties\n }\n }\n });\n }\n if (patch.definitions) {\n this.schema = deepmerge(this.schema, {\n definitions: patch.definitions\n });\n }\n }\n /**\n * Load metadata table from object.\n *\n * @public\n * @param obj - Object with metadata to load\n * @param filename - Optional filename used when presenting validation error\n */\n loadFromObject(obj, filename = null) {\n try {\n const validate = this.getSchemaValidator();\n if (!validate(obj)) {\n throw new SchemaValidationError(\n filename,\n `Element metadata is not valid`,\n obj,\n this.schema,\n /* istanbul ignore next: AJV sets .errors when validate returns false */\n validate.errors ?? []\n );\n }\n for (const [key, value] of Object.entries(obj)) {\n if (key === \"$schema\") continue;\n this.addEntry(key, migrateElement(value));\n }\n } catch (err) {\n if (err instanceof InheritError) {\n err.filename = filename;\n throw err;\n }\n if (err instanceof SchemaValidationError) {\n throw err;\n }\n if (!filename) {\n throw err;\n }\n throw new UserError(`Failed to load element metadata from \"${filename}\"`, ensureError(err));\n }\n }\n /**\n * Get [[MetaElement]] for the given tag. If no specific metadata is present\n * the global metadata is returned or null if no global is present.\n *\n * @public\n * @returns A shallow copy of metadata.\n */\n getMetaFor(tagName) {\n const meta = this.elements[tagName.toLowerCase()] ?? this.elements[\"*\"];\n if (meta) {\n return { ...meta };\n } else {\n return null;\n }\n }\n /**\n * Find all tags which has enabled given property.\n *\n * @public\n */\n getTagsWithProperty(propName) {\n return this.entries.filter(([, entry]) => entry[propName]).map(([tagName]) => tagName);\n }\n /**\n * Find tag matching tagName or inheriting from it.\n *\n * @public\n */\n getTagsDerivedFrom(tagName) {\n return this.entries.filter(([key, entry]) => key === tagName || entry.inherit === tagName).map(([tagName2]) => tagName2);\n }\n addEntry(tagName, entry) {\n let parent = this.elements[tagName];\n if (entry.inherit) {\n const name = entry.inherit;\n parent = this.elements[name];\n if (!parent) {\n throw new InheritError({\n tagName,\n inherit: name\n });\n }\n }\n const expanded = this.mergeElement(parent ?? {}, { ...entry, tagName });\n expandRegex(expanded);\n this.elements[tagName] = expanded;\n }\n /**\n * Construct a new AJV schema validator.\n */\n getSchemaValidator() {\n const hash = computeHash(JSON.stringify(this.schema));\n const cached = schemaCache.get(hash);\n if (cached) {\n return cached;\n } else {\n const ajv = new Ajv({ strict: true, strictTuples: true, strictTypes: true });\n ajv.addMetaSchema(ajvSchemaDraft);\n ajv.addKeyword(ajvFunctionKeyword);\n ajv.addKeyword(ajvRegexpKeyword);\n ajv.addKeyword({ keyword: \"copyable\" });\n const validate = ajv.compile(this.schema);\n schemaCache.set(hash, validate);\n return validate;\n }\n }\n /**\n * @public\n */\n getJSONSchema() {\n return this.schema;\n }\n /**\n * @internal\n */\n get entries() {\n return Object.entries(this.elements);\n }\n /**\n * Finds the global element definition and merges each known element with the\n * global, e.g. to assign global attributes.\n */\n resolveGlobal() {\n if (!this.elements[\"*\"]) return;\n const global = this.elements[\"*\"];\n delete this.elements[\"*\"];\n delete global.tagName;\n delete global.void;\n for (const [tagName, entry] of this.entries) {\n this.elements[tagName] = this.mergeElement(global, entry);\n }\n }\n mergeElement(a, b) {\n const merged = deepmerge(a, b, { arrayMerge: overwriteMerge$1 });\n const filteredAttrs = Object.entries(\n merged.attributes\n ).filter(([, attr]) => {\n const val = !attr.delete;\n delete attr.delete;\n return val;\n });\n merged.attributes = Object.fromEntries(filteredAttrs);\n return merged;\n }\n /**\n * @internal\n */\n resolve(node) {\n if (node.meta) {\n expandProperties(node, node.meta);\n }\n }\n}\nfunction expandProperties(node, entry) {\n for (const key of dynamicKeys) {\n const property = entry[key];\n if (typeof property === \"function\") {\n setMetaProperty(entry, key, property(node._adapter));\n }\n }\n if (typeof entry.focusable === \"function\") {\n setMetaProperty(entry, \"focusable\", entry.focusable(node._adapter));\n }\n}\nfunction expandRegexValue(value) {\n if (value instanceof RegExp) {\n return value;\n }\n const match = /^\\/(.*(?=\\/))\\/(i?)$/.exec(value);\n if (match) {\n const [, expr, flags] = match;\n if (expr.startsWith(\"^\") || expr.endsWith(\"$\")) {\n return new RegExp(expr, flags);\n } else {\n return new RegExp(`^${expr}$`, flags);\n }\n } else {\n return value;\n }\n}\nfunction expandRegex(entry) {\n for (const [name, values] of Object.entries(entry.attributes)) {\n if (values.enum) {\n entry.attributes[name].enum = values.enum.map(expandRegexValue);\n }\n }\n}\n\nclass DynamicValue {\n expr;\n constructor(expr) {\n this.expr = expr;\n }\n toString() {\n return this.expr;\n }\n}\n\nfunction isStaticAttribute(attr) {\n return Boolean(attr?.isStatic);\n}\nfunction isDynamicAttribute(attr) {\n return Boolean(attr?.isDynamic);\n}\nclass Attribute {\n /** Attribute name */\n key;\n value;\n keyLocation;\n valueLocation;\n originalAttribute;\n /**\n * @param key - Attribute name.\n * @param value - Attribute value. Set to `null` for boolean attributes.\n * @param keyLocation - Source location of attribute name.\n * @param valueLocation - Source location of attribute value.\n * @param originalAttribute - If this attribute was dynamically added via a\n * transformation (e.g. vuejs `:id` generating the `id` attribute) this\n * parameter should be set to the attribute name of the source attribute (`:id`).\n */\n constructor(key, value, keyLocation, valueLocation, originalAttribute) {\n this.key = key;\n this.value = value;\n this.keyLocation = keyLocation;\n this.valueLocation = valueLocation;\n this.originalAttribute = originalAttribute;\n if (typeof this.value === \"undefined\") {\n this.value = null;\n }\n }\n /**\n * Flag set to true if the attribute value is static.\n */\n get isStatic() {\n return !this.isDynamic;\n }\n /**\n * Flag set to true if the attribute value is dynamic.\n */\n get isDynamic() {\n return this.value instanceof DynamicValue;\n }\n /**\n * Test attribute value.\n *\n * @param pattern - Pattern to match value against. Can be a RegExp, literal\n * string or an array of strings (returns true if any value matches the\n * array).\n * @param dynamicMatches - If true `DynamicValue` will always match, if false\n * it never matches.\n * @returns `true` if attribute value matches pattern.\n */\n valueMatches(pattern, dynamicMatches = true) {\n if (this.value === null) {\n return false;\n }\n if (this.value instanceof DynamicValue) {\n return dynamicMatches;\n }\n if (Array.isArray(pattern)) {\n return pattern.includes(this.value);\n }\n if (pattern instanceof RegExp) {\n return this.value.match(pattern) !== null;\n } else {\n return this.value === pattern;\n }\n }\n}\n\nfunction getCSSDeclarations(value) {\n return value.trim().split(\";\").filter(Boolean).map((it) => {\n const [property, value2] = it.split(\":\", 2);\n return [property.trim(), value2 ? value2.trim() : \"\"];\n });\n}\nfunction parseCssDeclaration(value) {\n if (!value || value instanceof DynamicValue) {\n return {};\n }\n const pairs = getCSSDeclarations(value);\n return Object.fromEntries(pairs);\n}\n\nfunction sliceSize(size, begin, end) {\n if (typeof size !== \"number\") {\n return size;\n }\n if (typeof end !== \"number\") {\n return size - begin;\n }\n if (end < 0) {\n end = size + end;\n }\n return Math.min(size, end - begin);\n}\nfunction sliceLocation(location, begin, end, wrap) {\n if (!location) return null;\n const size = sliceSize(location.size, begin, end);\n const sliced = {\n filename: location.filename,\n offset: location.offset + begin,\n line: location.line,\n column: location.column + begin,\n size\n };\n if (wrap) {\n let index = -1;\n const col = sliced.column;\n do {\n index = wrap.indexOf(\"\\n\", index + 1);\n if (index >= 0 && index < begin) {\n sliced.column = col - (index + 1);\n sliced.line++;\n } else {\n break;\n }\n } while (true);\n }\n return sliced;\n}\n\nvar State = /* @__PURE__ */ ((State2) => {\n State2[State2[\"INITIAL\"] = 1] = \"INITIAL\";\n State2[State2[\"DOCTYPE\"] = 2] = \"DOCTYPE\";\n State2[State2[\"TEXT\"] = 3] = \"TEXT\";\n State2[State2[\"TAG\"] = 4] = \"TAG\";\n State2[State2[\"ATTR\"] = 5] = \"ATTR\";\n State2[State2[\"CDATA\"] = 6] = \"CDATA\";\n State2[State2[\"SCRIPT\"] = 7] = \"SCRIPT\";\n State2[State2[\"STYLE\"] = 8] = \"STYLE\";\n return State2;\n})(State || {});\n\nvar ContentModel = /* @__PURE__ */ ((ContentModel2) => {\n ContentModel2[ContentModel2[\"TEXT\"] = 1] = \"TEXT\";\n ContentModel2[ContentModel2[\"SCRIPT\"] = 2] = \"SCRIPT\";\n ContentModel2[ContentModel2[\"STYLE\"] = 3] = \"STYLE\";\n return ContentModel2;\n})(ContentModel || {});\nclass Context {\n contentModel;\n state;\n string;\n filename;\n offset;\n line;\n column;\n constructor(source) {\n this.state = State.INITIAL;\n this.string = source.data;\n this.filename = source.filename;\n this.offset = source.offset;\n this.line = source.line;\n this.column = source.column;\n this.contentModel = 1 /* TEXT */;\n }\n getTruncatedLine(n = 13) {\n return JSON.stringify(this.string.length > n ? `${this.string.slice(0, 10)}...` : this.string);\n }\n consume(n, state) {\n if (typeof n !== \"number\") {\n n = n[0].length;\n }\n let consumed = this.string.slice(0, n);\n let offset;\n while ((offset = consumed.indexOf(\"\\n\")) >= 0) {\n this.line++;\n this.column = 1;\n consumed = consumed.substr(offset + 1);\n }\n this.column += consumed.length;\n this.offset += n;\n this.string = this.string.substr(n);\n this.state = state;\n }\n getLocation(size) {\n return {\n filename: this.filename,\n offset: this.offset,\n line: this.line,\n column: this.column,\n size\n };\n }\n}\n\nfunction normalizeSource(source) {\n return {\n filename: \"\",\n offset: 0,\n line: 1,\n column: 1,\n ...source\n };\n}\n\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n NodeType2[NodeType2[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\n return NodeType2;\n})(NodeType || {});\n\nconst DOCUMENT_NODE_NAME = \"#document\";\nconst TEXT_CONTENT = Symbol(\"textContent\");\nlet counter = 0;\nclass DOMNode {\n nodeName;\n nodeType;\n childNodes;\n location;\n /**\n * @internal\n */\n unique;\n /* eslint-disable-next-line sonarjs/use-type-alias -- technical debt */\n cache;\n /**\n * Set of disabled rules for this node.\n *\n * Rules disabled by using directives are added here.\n */\n disabledRules;\n /**\n * Set of blocked rules for this node.\n *\n * Rules blocked by using directives are added here.\n */\n blockedRules;\n /**\n * Create a new DOMNode.\n *\n * @internal\n * @param nodeType - What node type to create.\n * @param nodeName - What node name to use. For `HtmlElement` this corresponds\n * to the tagName but other node types have specific predefined values.\n * @param location - Source code location of this node.\n */\n constructor(nodeType, nodeName, location) {\n this.nodeType = nodeType;\n this.nodeName = nodeName ?? DOCUMENT_NODE_NAME;\n this.location = location;\n this.disabledRules = /* @__PURE__ */ new Set();\n this.blockedRules = /* @__PURE__ */ new Map();\n this.childNodes = [];\n this.unique = counter++;\n this.cache = null;\n }\n /**\n * Enable cache for this node.\n *\n * Should not be called before the node and all children are fully constructed.\n *\n * @internal\n */\n cacheEnable() {\n this.cache = /* @__PURE__ */ new Map();\n }\n cacheGet(key) {\n if (this.cache) {\n return this.cache.get(key);\n } else {\n return void 0;\n }\n }\n cacheSet(key, value) {\n if (this.cache) {\n this.cache.set(key, value);\n }\n return value;\n }\n /**\n * Remove a value by key from cache.\n *\n * @returns `true` if the entry existed and has been removed.\n */\n cacheRemove(key) {\n if (this.cache) {\n return this.cache.delete(key);\n } else {\n return false;\n }\n }\n /**\n * Check if key exists in cache.\n */\n cacheExists(key) {\n return Boolean(this.cache?.has(key));\n }\n /**\n * Get the text (recursive) from all child nodes.\n */\n get textContent() {\n const cached = this.cacheGet(TEXT_CONTENT);\n if (cached) {\n return cached;\n }\n const text = this.childNodes.map((node) => node.textContent).join(\"\");\n this.cacheSet(TEXT_CONTENT, text);\n return text;\n }\n append(node) {\n const oldParent = node._setParent(this);\n if (oldParent && this.isSameNode(oldParent)) {\n return;\n }\n this.childNodes.push(node);\n if (oldParent) {\n oldParent._removeChild(node);\n }\n }\n /**\n * Insert a node before a reference node.\n *\n * @internal\n */\n insertBefore(node, reference) {\n const index = reference ? this.childNodes.findIndex((it) => it.isSameNode(reference)) : -1;\n if (index >= 0) {\n this.childNodes.splice(index, 0, node);\n } else {\n this.childNodes.push(node);\n }\n const oldParent = node._setParent(this);\n if (oldParent) {\n oldParent._removeChild(node);\n }\n }\n isRootElement() {\n return this.nodeType === NodeType.DOCUMENT_NODE;\n }\n /**\n * Tests if two nodes are the same (references the same object).\n *\n * @since v4.11.0\n */\n isSameNode(otherNode) {\n return this.unique === otherNode.unique;\n }\n /**\n * Returns a DOMNode representing the first direct child node or `null` if the\n * node has no children.\n */\n get firstChild() {\n return this.childNodes[0] || null;\n }\n /**\n * Returns a DOMNode representing the last direct child node or `null` if the\n * node has no children.\n */\n get lastChild() {\n return this.childNodes[this.childNodes.length - 1] || null;\n }\n /**\n * @internal\n */\n removeChild(node) {\n this._removeChild(node);\n node._setParent(null);\n return node;\n }\n /**\n * Block a rule for this node.\n *\n * @internal\n */\n blockRule(ruleId, blocker) {\n const current = this.blockedRules.get(ruleId);\n if (current) {\n current.push(blocker);\n } else {\n this.blockedRules.set(ruleId, [blocker]);\n }\n }\n /**\n * Blocks multiple rules.\n *\n * @internal\n */\n blockRules(rules, blocker) {\n for (const rule of rules) {\n this.blockRule(rule, blocker);\n }\n }\n /**\n * Disable a rule for this node.\n *\n * @internal\n */\n disableRule(ruleId) {\n this.disabledRules.add(ruleId);\n }\n /**\n * Disables multiple rules.\n *\n * @internal\n */\n disableRules(rules) {\n for (const rule of rules) {\n this.disableRule(rule);\n }\n }\n /**\n * Enable a previously disabled rule for this node.\n */\n enableRule(ruleId) {\n this.disabledRules.delete(ruleId);\n }\n /**\n * Enables multiple rules.\n */\n enableRules(rules) {\n for (const rule of rules) {\n this.enableRule(rule);\n }\n }\n /**\n * Test if a rule is enabled for this node.\n *\n * @internal\n */\n ruleEnabled(ruleId) {\n return !this.disabledRules.has(ruleId);\n }\n /**\n * Test if a rule is blocked for this node.\n *\n * @internal\n */\n ruleBlockers(ruleId) {\n return this.blockedRules.get(ruleId) ?? [];\n }\n generateSelector() {\n return null;\n }\n /**\n * @internal\n *\n * @returns Old parent, if set.\n */\n _setParent(_node) {\n return null;\n }\n _removeChild(node) {\n const index = this.childNodes.findIndex((it) => it.isSameNode(node));\n if (index >= 0) {\n this.childNodes.splice(index, 1);\n } else {\n throw new Error(\"DOMException: _removeChild(..) could not find child to remove\");\n }\n }\n}\n\nfunction parse(text, baseLocation) {\n const tokens = [];\n const locations = baseLocation ? [] : null;\n for (let begin = 0; begin < text.length; ) {\n let end = text.indexOf(\" \", begin);\n if (end === -1) {\n end = text.length;\n }\n const size = end - begin;\n if (size === 0) {\n begin++;\n continue;\n }\n const token = text.substring(begin, end);\n tokens.push(token);\n if (locations && baseLocation) {\n const location = sliceLocation(baseLocation, begin, end);\n locations.push(location);\n }\n begin += size + 1;\n }\n return { tokens, locations };\n}\nclass DOMTokenList extends Array {\n value;\n locations;\n constructor(value, location) {\n if (value && typeof value === \"string\") {\n const normalized = value.replace(/[\\t\\r\\n]/g, \" \");\n const { tokens, locations } = parse(normalized, location);\n super(...tokens);\n this.locations = locations;\n } else {\n super(0);\n this.locations = null;\n }\n if (value instanceof DynamicValue) {\n this.value = value.expr;\n } else {\n this.value = value ?? \"\";\n }\n }\n item(n) {\n return this[n];\n }\n location(n) {\n if (this.locations) {\n return this.locations[n];\n } else {\n throw new Error(\"Trying to access DOMTokenList location when base location isn't set\");\n }\n }\n contains(token) {\n return this.includes(token);\n }\n *iterator() {\n for (let index = 0; index < this.length; index++) {\n const item = this.item(index);\n const location = this.location(index);\n yield { index, item, location };\n }\n }\n}\n\nvar Combinator = /* @__PURE__ */ ((Combinator2) => {\n Combinator2[Combinator2[\"DESCENDANT\"] = 1] = \"DESCENDANT\";\n Combinator2[Combinator2[\"CHILD\"] = 2] = \"CHILD\";\n Combinator2[Combinator2[\"ADJACENT_SIBLING\"] = 3] = \"ADJACENT_SIBLING\";\n Combinator2[Combinator2[\"GENERAL_SIBLING\"] = 4] = \"GENERAL_SIBLING\";\n Combinator2[Combinator2[\"SCOPE\"] = 5] = \"SCOPE\";\n return Combinator2;\n})(Combinator || {});\nfunction parseCombinator(combinator, pattern) {\n if (pattern === \":scope\") {\n return 5 /* SCOPE */;\n }\n switch (combinator) {\n case void 0:\n case null:\n case \"\":\n return 1 /* DESCENDANT */;\n case \">\":\n return 2 /* CHILD */;\n case \"+\":\n return 3 /* ADJACENT_SIBLING */;\n case \"~\":\n return 4 /* GENERAL_SIBLING */;\n default:\n throw new Error(`Unknown combinator \"${combinator}\"`);\n }\n}\n\nfunction firstChild(node) {\n return node.previousSibling === null;\n}\n\nfunction lastChild(node) {\n return node.nextSibling === null;\n}\n\nconst cache = {};\nfunction getNthChild(node) {\n if (!node.parent) {\n return -1;\n }\n if (!cache[node.unique]) {\n const parent = node.parent;\n const index = parent.childElements.findIndex((cur) => {\n return cur.unique === node.unique;\n });\n cache[node.unique] = index + 1;\n }\n return cache[node.unique];\n}\nfunction nthChild(node, args) {\n if (!args) {\n throw new Error(\"Missing argument to nth-child\");\n }\n const n = parseInt(args.trim(), 10);\n const cur = getNthChild(node);\n return cur === n;\n}\n\nfunction scope$1(node) {\n return Boolean(this.scope && node.isSameNode(this.scope));\n}\n\nconst table = {\n \"first-child\": firstChild,\n \"last-child\": lastChild,\n \"nth-child\": nthChild,\n scope: scope$1\n};\nfunction factory(name, context) {\n const fn = table[name];\n if (fn) {\n return fn.bind(context);\n } else {\n throw new Error(`Pseudo-class \"${name}\" is not implemented`);\n }\n}\n\nfunction stripslashes(value) {\n return value.replace(/\\\\(.)/g, \"$1\");\n}\nclass Condition {\n}\nclass ClassCondition extends Condition {\n classname;\n constructor(classname) {\n super();\n this.classname = classname;\n }\n match(node) {\n return node.classList.contains(this.classname);\n }\n}\nclass IdCondition extends Condition {\n id;\n constructor(id) {\n super();\n this.id = stripslashes(id);\n }\n match(node) {\n return node.id === this.id;\n }\n}\nclass AttributeCondition extends Condition {\n key;\n op;\n value;\n constructor(attr) {\n super();\n const [, key, op, value] = /^(.+?)(?:([~^$*|]?=)\"([^\"]+?)\")?$/.exec(attr);\n this.key = key;\n this.op = op;\n this.value = typeof value === \"string\" ? stripslashes(value) : value;\n }\n match(node) {\n const attr = node.getAttribute(this.key, true);\n return attr.some((cur) => {\n switch (this.op) {\n case void 0:\n return true;\n /* attribute exists */\n case \"=\":\n return cur.value === this.value;\n default:\n throw new Error(`Attribute selector operator ${this.op} is not implemented yet`);\n }\n });\n }\n}\nclass PseudoClassCondition extends Condition {\n name;\n args;\n constructor(pseudoclass, context) {\n super();\n const match = /^([^(]+)(?:\\((.*)\\))?$/.exec(pseudoclass);\n if (!match) {\n throw new Error(`Missing pseudo-class after colon in selector pattern \"${context}\"`);\n }\n const [, name, args] = match;\n this.name = name;\n this.args = args;\n }\n match(node, context) {\n const fn = factory(this.name, context);\n return fn(node, this.args);\n }\n}\n\nfunction isDelimiter(ch) {\n return /[.#[:]/.test(ch);\n}\nfunction isQuotationMark(ch) {\n return /['\"]/.test(ch);\n}\nfunction isPseudoElement(ch, buffer) {\n return ch === \":\" && buffer === \":\";\n}\nfunction* splitCompound(pattern) {\n if (pattern === \"\") {\n return;\n }\n const end = pattern.length;\n let begin = 0;\n let cur = 1;\n let quoted = false;\n while (cur < end) {\n const ch = pattern[cur];\n const buffer = pattern.slice(begin, cur);\n if (ch === \"\\\\\") {\n cur += 2;\n continue;\n }\n if (quoted) {\n if (ch === quoted) {\n quoted = false;\n }\n cur += 1;\n continue;\n }\n if (isQuotationMark(ch)) {\n quoted = ch;\n cur += 1;\n continue;\n }\n if (isPseudoElement(ch, buffer)) {\n cur += 1;\n continue;\n }\n if (isDelimiter(ch)) {\n begin = cur;\n yield buffer;\n }\n cur += 1;\n }\n const tail = pattern.slice(begin, cur);\n yield tail;\n}\n\nclass Compound {\n combinator;\n tagName;\n selector;\n conditions;\n constructor(pattern) {\n const match = /^([~+\\->]?)((?:[*]|[^.#[:]+)?)([^]*)$/.exec(pattern);\n if (!match) {\n throw new Error(`Failed to create selector pattern from \"${pattern}\"`);\n }\n match.shift();\n this.selector = pattern;\n this.combinator = parseCombinator(match.shift(), pattern);\n this.tagName = match.shift() || \"*\";\n this.conditions = Array.from(splitCompound(match[0]), (it) => this.createCondition(it));\n }\n match(node, context) {\n return node.is(this.tagName) && this.conditions.every((cur) => cur.match(node, context));\n }\n createCondition(pattern) {\n switch (pattern[0]) {\n case \".\":\n return new ClassCondition(pattern.slice(1));\n case \"#\":\n return new IdCondition(pattern.slice(1));\n case \"[\":\n return new AttributeCondition(pattern.slice(1, -1));\n case \":\":\n return new PseudoClassCondition(pattern.slice(1), this.selector);\n default:\n throw new Error(`Failed to create selector condition for \"${pattern}\"`);\n }\n }\n}\n\nfunction* ancestors$1(element) {\n let current = element.parent;\n while (current && !current.isRootElement()) {\n yield current;\n current = current.parent;\n }\n}\nfunction* parent(element) {\n const parent2 = element.parent;\n if (parent2 && !parent2.isRootElement()) {\n yield parent2;\n }\n}\nfunction* adjacentSibling(element) {\n const sibling = element.previousSibling;\n if (sibling) {\n yield sibling;\n }\n}\nfunction* generalSibling(element) {\n const siblings = element.siblings;\n const index = siblings.findIndex((it) => it.isSameNode(element));\n for (let i = 0; i < index; i++) {\n yield siblings[i];\n }\n}\nfunction* scope(element) {\n yield element;\n}\nfunction candidatesFromCombinator(element, combinator) {\n switch (combinator) {\n case Combinator.DESCENDANT:\n return ancestors$1(element);\n case Combinator.CHILD:\n return parent(element);\n case Combinator.ADJACENT_SIBLING:\n return adjacentSibling(element);\n case Combinator.GENERAL_SIBLING:\n return generalSibling(element);\n /* istanbul ignore next -- cannot really happen, the selector would be malformed */\n case Combinator.SCOPE:\n return scope(element);\n }\n}\nfunction matchElement(element, compounds, context) {\n const last = compounds[compounds.length - 1];\n if (!last.match(element, context)) {\n return false;\n }\n const remainder = compounds.slice(0, -1);\n if (remainder.length === 0) {\n return true;\n }\n const candidates = candidatesFromCombinator(element, last.combinator);\n for (const candidate of candidates) {\n if (matchElement(candidate, remainder, context)) {\n return true;\n }\n }\n return false;\n}\n\nconst escapedCodepoints = [\"9\", \"a\", \"d\"];\nfunction* splitSelectorElements(selector) {\n let begin = 0;\n let end = 0;\n function initialState(ch, p) {\n if (ch === \"\\\\\") {\n return 1 /* ESCAPED */;\n }\n if (ch === \" \") {\n end = p;\n return 2 /* WHITESPACE */;\n }\n return 0 /* INITIAL */;\n }\n function escapedState(ch) {\n if (escapedCodepoints.includes(ch)) {\n return 1 /* ESCAPED */;\n }\n return 0 /* INITIAL */;\n }\n function* whitespaceState(ch, p) {\n if (ch === \" \") {\n return 2 /* WHITESPACE */;\n }\n yield selector.slice(begin, end);\n begin = p;\n end = p;\n return 0 /* INITIAL */;\n }\n let state = 0 /* INITIAL */;\n for (let p = 0; p < selector.length; p++) {\n const ch = selector[p];\n switch (state) {\n case 0 /* INITIAL */:\n state = initialState(ch, p);\n break;\n case 1 /* ESCAPED */:\n state = escapedState(ch);\n break;\n case 2 /* WHITESPACE */:\n state = yield* whitespaceState(ch, p);\n break;\n }\n }\n if (begin !== selector.length) {\n yield selector.slice(begin);\n }\n}\n\nfunction unescapeCodepoint(value) {\n const replacement = {\n \"\\\\9 \": \"\t\",\n \"\\\\a \": \"\\n\",\n \"\\\\d \": \"\\r\"\n };\n return value.replace(\n /(\\\\[\\u0039\\u0061\\u0064] )/g,\n (_, codepoint) => replacement[codepoint]\n );\n}\nfunction escapeSelectorComponent(text) {\n const codepoints = {\n \"\t\": \"\\\\9 \",\n \"\\n\": \"\\\\a \",\n \"\\r\": \"\\\\d \"\n };\n return text.toString().replace(/([\\t\\n\\r]|[^a-z0-9_-])/gi, (_, ch) => {\n if (codepoints[ch]) {\n return codepoints[ch];\n } else {\n return `\\\\${ch}`;\n }\n });\n}\nfunction generateIdSelector(id) {\n const escaped = escapeSelectorComponent(id);\n return /^\\d/.exec(escaped) ? `[id=\"${escaped}\"]` : `#${escaped}`;\n}\nclass Selector {\n pattern;\n constructor(selector) {\n this.pattern = Selector.parse(selector);\n }\n /**\n * Match this selector against a HtmlElement.\n *\n * @param root - Element to match against.\n * @returns Iterator with matched elements.\n */\n *match(root) {\n const context = { scope: root };\n yield* this.matchInternal(root, 0, context);\n }\n /**\n * Returns `true` if the element matches this selector.\n */\n matchElement(element) {\n const context = { scope: null };\n return matchElement(element, this.pattern, context);\n }\n *matchInternal(root, level, context) {\n if (level >= this.pattern.length) {\n yield root;\n return;\n }\n const pattern = this.pattern[level];\n const matches = Selector.findCandidates(root, pattern);\n for (const node of matches) {\n if (!pattern.match(node, context)) {\n continue;\n }\n yield* this.matchInternal(node, level + 1, context);\n }\n }\n static parse(selector) {\n selector = selector.replace(/([+~>]) /g, \"$1\");\n return Array.from(splitSelectorElements(selector), (element) => {\n return new Compound(unescapeCodepoint(element));\n });\n }\n static findCandidates(root, pattern) {\n switch (pattern.combinator) {\n case Combinator.DESCENDANT:\n return root.getElementsByTagName(pattern.tagName);\n case Combinator.CHILD:\n return root.childElements.filter((node) => node.is(pattern.tagName));\n case Combinator.ADJACENT_SIBLING:\n return Selector.findAdjacentSibling(root);\n case Combinator.GENERAL_SIBLING:\n return Selector.findGeneralSibling(root);\n case Combinator.SCOPE:\n return [root];\n }\n }\n static findAdjacentSibling(node) {\n let adjacent = false;\n return node.siblings.filter((cur) => {\n if (adjacent) {\n adjacent = false;\n return true;\n }\n if (cur === node) {\n adjacent = true;\n }\n return false;\n });\n }\n static findGeneralSibling(node) {\n let after = false;\n return node.siblings.filter((cur) => {\n if (after) {\n return true;\n }\n if (cur === node) {\n after = true;\n }\n return false;\n });\n }\n}\n\nconst TEXT_NODE_NAME = \"#text\";\nfunction isTextNode(node) {\n return Boolean(node && node.nodeType === NodeType.TEXT_NODE);\n}\nclass TextNode extends DOMNode {\n text;\n /**\n * @param text - Text to add. When a `DynamicValue` is used the expression is\n * used as \"text\".\n * @param location - Source code location of this node.\n */\n constructor(text, location) {\n super(NodeType.TEXT_NODE, TEXT_NODE_NAME, location);\n this.text = text;\n }\n /**\n * Get the text from node.\n */\n get textContent() {\n return this.text.toString();\n }\n /**\n * Flag set to true if the attribute value is static.\n */\n get isStatic() {\n return !this.isDynamic;\n }\n /**\n * Flag set to true if the attribute value is dynamic.\n */\n get isDynamic() {\n return this.text instanceof DynamicValue;\n }\n}\n\nconst ROLE = Symbol(\"role\");\nconst TABINDEX = Symbol(\"tabindex\");\nvar NodeClosed = /* @__PURE__ */ ((NodeClosed2) => {\n NodeClosed2[NodeClosed2[\"Open\"] = 0] = \"Open\";\n NodeClosed2[NodeClosed2[\"EndTag\"] = 1] = \"EndTag\";\n NodeClosed2[NodeClosed2[\"VoidOmitted\"] = 2] = \"VoidOmitted\";\n NodeClosed2[NodeClosed2[\"VoidSelfClosed\"] = 3] = \"VoidSelfClosed\";\n NodeClosed2[NodeClosed2[\"ImplicitClosed\"] = 4] = \"ImplicitClosed\";\n return NodeClosed2;\n})(NodeClosed || {});\nfunction isElementNode(node) {\n return Boolean(node && node.nodeType === NodeType.ELEMENT_NODE);\n}\nfunction isInvalidTagName(tagName) {\n return Boolean(tagName === \"\" || tagName === \"*\");\n}\nfunction createAdapter(node) {\n return {\n closest(selectors) {\n return node.closest(selectors)?._adapter;\n },\n getAttribute(name) {\n return node.getAttribute(name)?.value;\n },\n hasAttribute(name) {\n return node.hasAttribute(name);\n }\n };\n}\nclass HtmlElement extends DOMNode {\n tagName;\n voidElement;\n depth;\n closed;\n attr;\n metaElement;\n annotation;\n _parent;\n /** @internal */\n _adapter;\n constructor(details) {\n const {\n nodeType,\n tagName,\n parent = null,\n closed = 1 /* EndTag */,\n meta = null,\n location\n } = details;\n super(nodeType, tagName, location);\n if (isInvalidTagName(tagName)) {\n throw new Error(`The tag name provided (\"${tagName}\") is not a valid name`);\n }\n this.tagName = tagName ?? \"#document\";\n this._parent = null;\n this.attr = {};\n this.metaElement = meta ?? null;\n this.closed = closed;\n this.voidElement = meta ? Boolean(meta.void) : false;\n this.depth = 0;\n this.annotation = null;\n this._adapter = createAdapter(this);\n if (parent) {\n parent.append(this);\n let cur = parent;\n while (cur.parent) {\n this.depth++;\n cur = cur.parent;\n }\n }\n }\n /**\n * Manually create a new element. This is primary useful for test-cases. While\n * the API is public it is not meant for general consumption and is not\n * guaranteed to be stable across versions.\n *\n * Use at your own risk. Prefer to use [[Parser]] to parse a string of markup\n * instead.\n *\n * @public\n * @since 8.22.0\n * @param tagName - Element tagname.\n * @param location - Element location.\n * @param details - Additional element details.\n */\n static createElement(tagName, location, details = {}) {\n const { closed = 1 /* EndTag */, meta = null, parent = null } = details;\n return new HtmlElement({\n nodeType: NodeType.ELEMENT_NODE,\n tagName,\n parent,\n closed,\n meta,\n location\n });\n }\n /**\n * @internal\n */\n static rootNode(location) {\n const root = new HtmlElement({\n nodeType: NodeType.DOCUMENT_NODE,\n location\n });\n root.setAnnotation(\"#document\");\n return root;\n }\n /**\n * @internal\n *\n * @param namespace - If given it is appended to the tagName.\n */\n static fromTokens(startToken, endToken, parent, metaTable, namespace = \"\") {\n const name = startToken.data[2];\n const tagName = namespace ? `${namespace}:${name}` : name;\n if (!name) {\n throw new Error(\"tagName cannot be empty\");\n }\n const meta = metaTable ? metaTable.getMetaFor(tagName) : null;\n const open = startToken.data[1] !== \"/\";\n const closed = isClosed(endToken, meta);\n const location = sliceLocation(startToken.location, 1);\n return new HtmlElement({\n nodeType: NodeType.ELEMENT_NODE,\n tagName,\n parent: open ? parent : null,\n closed,\n meta,\n location\n });\n }\n /**\n * Returns annotated name if set or defaults to `<tagName>`.\n *\n * E.g. `my-annotation` or `<div>`.\n */\n get annotatedName() {\n if (this.annotation) {\n return this.annotation;\n } else {\n return `<${this.tagName}>`;\n }\n }\n /**\n * Get list of IDs referenced by `aria-labelledby`.\n *\n * If the attribute is unset or empty this getter returns null.\n * If the attribute is dynamic the original {@link DynamicValue} is returned.\n *\n * @public\n */\n get ariaLabelledby() {\n const attr = this.getAttribute(\"aria-labelledby\");\n if (!attr?.value) {\n return null;\n }\n if (attr.value instanceof DynamicValue) {\n return attr.value;\n }\n const list = new DOMTokenList(attr.value, attr.valueLocation);\n return list.length ? Array.from(list) : null;\n }\n /**\n * Similar to childNodes but only elements.\n */\n get childElements() {\n return this.childNodes.filter(isElementNode);\n }\n /**\n * Find the first ancestor matching a selector.\n *\n * Implementation of DOM specification of Element.closest(selectors).\n */\n closest(selectors) {\n let node = this;\n while (node) {\n if (node.matches(selectors)) {\n return node;\n }\n node = node.parent;\n }\n return null;\n }\n /**\n * Generate a DOM selector for this element. The returned selector will be\n * unique inside the current document.\n */\n generateSelector() {\n if (this.isRootElement()) {\n return null;\n }\n const parts = [];\n let root;\n for (root = this; root.parent; root = root.parent) {\n }\n for (let cur = this; cur.parent; cur = cur.parent) {\n if (cur.id) {\n const selector = generateIdSelector(cur.id);\n const matches = root.querySelectorAll(selector);\n if (matches.length === 1) {\n parts.push(selector);\n break;\n }\n }\n const parent = cur.parent;\n const child = parent.childElements;\n const index = child.findIndex((it) => it.unique === cur.unique);\n const numOfType = child.filter((it) => it.is(cur.tagName)).length;\n const solo = numOfType === 1;\n if (solo) {\n parts.push(cur.tagName.toLowerCase());\n continue;\n }\n parts.push(`${cur.tagName.toLowerCase()}:nth-child(${String(index + 1)})`);\n }\n return parts.reverse().join(\" > \");\n }\n /**\n * Tests if this element has given tagname.\n *\n * If passing \"*\" this test will pass if any tagname is set.\n */\n is(tagName) {\n return tagName === \"*\" || this.tagName.toLowerCase() === tagName.toLowerCase();\n }\n /**\n * Load new element metadata onto this element.\n *\n * Do note that semantics such as `void` cannot be changed (as the element has\n * already been created). In addition the element will still \"be\" the same\n * element, i.e. even if loading meta for a `<p>` tag upon a `<div>` tag it\n * will still be a `<div>` as far as the rest of the validator is concerned.\n *\n * In fact only certain properties will be copied onto the element:\n *\n * - content categories (flow, phrasing, etc)\n * - required attributes\n * - attribute allowed values\n * - permitted/required elements\n *\n * Properties *not* loaded:\n *\n * - inherit\n * - deprecated\n * - foreign\n * - void\n * - implicitClosed\n * - scriptSupporting\n * - deprecatedAttributes\n *\n * Changes to element metadata will only be visible after `element:ready` (and\n * the subsequent `dom:ready` event).\n */\n loadMeta(meta) {\n this.metaElement ??= {};\n for (const key of MetaCopyableProperty) {\n const value = meta[key];\n if (typeof value !== \"undefined\") {\n setMetaProperty(this.metaElement, key, value);\n } else {\n delete this.metaElement[key];\n }\n }\n }\n /**\n * Match this element against given selectors. Returns true if any selector\n * matches.\n *\n * Implementation of DOM specification of Element.matches(selectors).\n */\n matches(selectorList) {\n return selectorList.split(\",\").some((it) => {\n const selector = new Selector(it.trim());\n return selector.matchElement(this);\n });\n }\n get meta() {\n return this.metaElement;\n }\n get parent() {\n return this._parent;\n }\n /**\n * Get current role for this element (explicit with `role` attribute or mapped\n * with implicit role).\n *\n * @since 8.9.1\n */\n get role() {\n const cached = this.cacheGet(ROLE);\n if (cached !== void 0) {\n return cached;\n }\n const role = this.getAttribute(\"role\");\n if (role) {\n return this.cacheSet(ROLE, role.value);\n }\n if (this.metaElement) {\n const { aria } = this.metaElement;\n const implicitRole = aria.implicitRole(this._adapter);\n return this.cacheSet(ROLE, implicitRole);\n }\n return this.cacheSet(ROLE, null);\n }\n /**\n * Set annotation for this element.\n */\n setAnnotation(text) {\n this.annotation = text;\n }\n /**\n * Set attribute. Stores all attributes set even with the same name.\n *\n * @param key - Attribute name\n * @param value - Attribute value. Use `null` if no value is present.\n * @param keyLocation - Location of the attribute name.\n * @param valueLocation - Location of the attribute value (excluding quotation)\n * @param originalAttribute - If attribute is an alias for another attribute\n * (dynamic attributes) set this to the original attribute name.\n */\n setAttribute(key, value, keyLocation, valueLocation, originalAttribute) {\n key = key.toLowerCase();\n const attr = new Attribute(key, value, keyLocation, valueLocation, originalAttribute);\n const list = this.attr[key];\n if (list) {\n list.push(attr);\n } else {\n this.attr[key] = [attr];\n }\n }\n /**\n * Get parsed tabindex for this element.\n *\n * - If `tabindex` attribute is not present `null` is returned.\n * - If attribute value is omitted or the empty string `null` is returned.\n * - If attribute value cannot be parsed `null` is returned.\n * - If attribute value is dynamic `0` is returned.\n * - Otherwise the parsed value is returned.\n *\n * This property does *NOT* take into account if the element have a default\n * `tabindex` (such as `<input>` have). Instead use the `focusable` metadata\n * property to determine this.\n *\n * @public\n * @since 8.16.0\n */\n get tabIndex() {\n const cached = this.cacheGet(TABINDEX);\n if (cached !== void 0) {\n return cached;\n }\n const tabindex = this.getAttribute(\"tabindex\");\n if (!tabindex) {\n return this.cacheSet(TABINDEX, null);\n }\n if (tabindex.value === null) {\n return this.cacheSet(TABINDEX, null);\n }\n if (tabindex.value instanceof DynamicValue) {\n return this.cacheSet(TABINDEX, 0);\n }\n const parsed = parseInt(tabindex.value, 10);\n if (isNaN(parsed)) {\n return this.cacheSet(TABINDEX, null);\n }\n return this.cacheSet(TABINDEX, parsed);\n }\n /**\n * Get a list of all attributes on this node.\n */\n get attributes() {\n return Object.values(this.attr).reduce((result, cur) => {\n return result.concat(cur);\n }, []);\n }\n hasAttribute(key) {\n key = key.toLowerCase();\n return key in this.attr;\n }\n getAttribute(key, all = false) {\n key = key.toLowerCase();\n if (key in this.attr) {\n const matches = this.attr[key];\n return all ? matches : matches[0];\n } else {\n return all ? [] : null;\n }\n }\n /**\n * Get attribute value.\n *\n * Returns the attribute value if present.\n *\n * - Missing attributes return `null`.\n * - Boolean attributes return `null`.\n * - `DynamicValue` returns attribute expression.\n *\n * @param key - Attribute name\n * @returns Attribute value or null.\n */\n getAttributeValue(key) {\n const attr = this.getAttribute(key);\n if (attr) {\n return attr.value !== null ? attr.value.toString() : null;\n } else {\n return null;\n }\n }\n /**\n * Add text as a child node to this element.\n *\n * @param text - Text to add.\n * @param location - Source code location of this text.\n */\n appendText(text, location) {\n this.childNodes.push(new TextNode(text, location));\n }\n /**\n * Return a list of all known classes on the element. Dynamic values are\n * ignored.\n */\n get classList() {\n if (!this.hasAttribute(\"class\")) {\n return new DOMTokenList(null, null);\n }\n const classes = this.getAttribute(\"class\", true).filter((attr) => attr.isStatic).map((attr) => attr.value).join(\" \");\n return new DOMTokenList(classes, null);\n }\n /**\n * Get element ID if present.\n */\n get id() {\n return this.getAttributeValue(\"id\");\n }\n get style() {\n const attr = this.getAttribute(\"style\");\n return parseCssDeclaration(attr?.value);\n }\n /**\n * Returns the first child element or null if there are no child elements.\n */\n get firstElementChild() {\n const children = this.childElements;\n return children.length > 0 ? children[0] : null;\n }\n /**\n * Returns the last child element or null if there are no child elements.\n */\n get lastElementChild() {\n const children = this.childElements;\n return children.length > 0 ? children[children.length - 1] : null;\n }\n get siblings() {\n return this.parent ? this.parent.childElements : [this];\n }\n get previousSibling() {\n const i = this.siblings.findIndex((node) => node.unique === this.unique);\n return i >= 1 ? this.siblings[i - 1] : null;\n }\n get nextSibling() {\n const i = this.siblings.findIndex((node) => node.unique === this.unique);\n return i <= this.siblings.length - 2 ? this.siblings[i + 1] : null;\n }\n getElementsByTagName(tagName) {\n return this.childElements.reduce((matches, node) => {\n return matches.concat(node.is(tagName) ? [node] : [], node.getElementsByTagName(tagName));\n }, []);\n }\n querySelector(selector) {\n const it = this.querySelectorImpl(selector);\n const next = it.next();\n if (next.done) {\n return null;\n } else {\n return next.value;\n }\n }\n querySelectorAll(selector) {\n const it = this.querySelectorImpl(selector);\n const unique = new Set(it);\n return Array.from(unique.values());\n }\n *querySelectorImpl(selectorList) {\n if (!selectorList) {\n return;\n }\n for (const selector of selectorList.split(/(?<!\\\\),\\s*/)) {\n const pattern = new Selector(selector);\n yield* pattern.match(this);\n }\n }\n /**\n * Evaluates callbackk on all descendants, returning true if any are true.\n *\n * @internal\n */\n someChildren(callback) {\n return this.childElements.some(visit);\n function visit(node) {\n if (callback(node)) {\n return true;\n } else {\n return node.childElements.some(visit);\n }\n }\n }\n /**\n * Evaluates callbackk on all descendants, returning true if all are true.\n *\n * @internal\n */\n everyChildren(callback) {\n return this.childElements.every(visit);\n function visit(node) {\n if (!callback(node)) {\n return false;\n }\n return node.childElements.every(visit);\n }\n }\n /**\n * Visit all nodes from this node and down. Breadth first.\n *\n * The first node for which the callback evaluates to true is returned.\n *\n * @internal\n */\n find(callback) {\n function visit(node) {\n if (callback(node)) {\n return node;\n }\n for (const child of node.childElements) {\n const match = child.find(callback);\n if (match) {\n return match;\n }\n }\n return null;\n }\n return visit(this);\n }\n /**\n * @internal\n */\n _setParent(node) {\n const oldParent = this._parent;\n this._parent = node instanceof HtmlElement ? node : null;\n return oldParent;\n }\n}\nfunction isClosed(endToken, meta) {\n let closed = 0 /* Open */;\n if (meta?.void) {\n closed = 2 /* VoidOmitted */;\n }\n if (endToken.data[0] === \"/>\") {\n closed = 3 /* VoidSelfClosed */;\n }\n return closed;\n}\n\nfunction isDOMTree(value) {\n return \"root\" in value && \"readyState\" in value;\n}\nfunction depthFirst(root, callback) {\n if (isDOMTree(root)) {\n if (root.readyState !== \"complete\") {\n throw new Error(`Cannot call walk.depthFirst(..) before document is ready`);\n }\n root = root.root;\n }\n function visit(node) {\n node.childElements.forEach(visit);\n if (!node.isRootElement()) {\n callback(node);\n }\n }\n visit(root);\n}\nconst walk = {\n depthFirst\n};\n\nclass DOMTree {\n root;\n active;\n _readyState;\n doctype;\n /**\n * @internal\n */\n constructor(location) {\n this.root = HtmlElement.rootNode(location);\n this.active = this.root;\n this.doctype = null;\n this._readyState = \"loading\";\n }\n /**\n * @internal\n */\n pushActive(node) {\n this.active = node;\n }\n /**\n * @internal\n */\n popActive() {\n if (this.active.isRootElement()) {\n return;\n }\n this.active = this.active.parent ?? this.root;\n }\n /**\n * @internal\n */\n getActive() {\n return this.active;\n }\n /**\n * Describes the loading state of the document.\n *\n * When `\"loading\"` it is still not safe to use functions such as\n * `querySelector` or presence of attributes, child nodes, etc.\n */\n get readyState() {\n return this._readyState;\n }\n /**\n * Resolve dynamic meta expressions.\n *\n * @internal\n */\n resolveMeta(table) {\n this._readyState = \"complete\";\n walk.depthFirst(this, (node) => {\n table.resolve(node);\n });\n }\n getElementsByTagName(tagName) {\n return this.root.getElementsByTagName(tagName);\n }\n /**\n * @deprecated use utility function `walk.depthFirst(..)` instead (since 8.21.0).\n */\n visitDepthFirst(callback) {\n walk.depthFirst(this, callback);\n }\n /**\n * @deprecated use `querySelector(..)` instead (since 8.21.0)\n */\n find(callback) {\n return this.root.find(callback);\n }\n querySelector(selector) {\n return this.root.querySelector(selector);\n }\n querySelectorAll(selector) {\n return this.root.querySelectorAll(selector);\n }\n}\n\nconst allowedKeys = [\"exclude\"];\nclass Validator {\n /**\n * Test if element is used in a proper context.\n *\n * @param node - Element to test.\n * @param rules - List of rules.\n * @returns `true` if element passes all tests.\n */\n static validatePermitted(node, rules) {\n if (!rules) {\n return true;\n }\n return rules.some((rule) => {\n return Validator.validatePermittedRule(node, rule);\n });\n }\n /**\n * Test if an element is used the correct amount of times.\n *\n * For instance, a `<table>` element can only contain a single `<tbody>`\n * child. If multiple `<tbody>` exists this test will fail both nodes.\n * Note that this is called on the parent but will fail the children violating\n * the rule.\n *\n * @param children - Array of children to validate.\n * @param rules - List of rules of the parent element.\n * @returns `true` if the parent element of the children passes the test.\n */\n static validateOccurrences(children, rules, cb) {\n if (!rules) {\n return true;\n }\n let valid = true;\n for (const rule of rules) {\n if (typeof rule !== \"string\") {\n return false;\n }\n const [, category, quantifier] = /^(@?.*?)([?*]?)$/.exec(rule);\n const limit = category && quantifier && parseQuantifier(quantifier);\n if (limit) {\n const siblings = children.filter(\n (cur) => Validator.validatePermittedCategory(cur, rule, true)\n );\n if (siblings.length > limit) {\n for (const child of siblings.slice(limit)) {\n cb(child, category);\n }\n valid = false;\n }\n }\n }\n return valid;\n }\n /**\n * Validate elements order.\n *\n * Given a parent element with children and metadata containing permitted\n * order it will validate each children and ensure each one exists in the\n * specified order.\n *\n * For instance, for a `<table>` element the `<caption>` element must come\n * before a `<thead>` which must come before `<tbody>`.\n *\n * @param children - Array of children to validate.\n */\n static validateOrder(children, rules, cb) {\n if (!rules) {\n return true;\n }\n let i = 0;\n let prev = null;\n for (const node of children) {\n const old = i;\n while (rules[i] && !Validator.validatePermittedCategory(node, rules[i], true)) {\n i++;\n }\n if (i >= rules.length) {\n const orderSpecified = rules.find(\n (cur) => Validator.validatePermittedCategory(node, cur, true)\n );\n if (orderSpecified) {\n cb(node, prev);\n return false;\n }\n i = old;\n }\n prev = node;\n }\n return true;\n }\n /**\n * Validate element ancestors.\n *\n * Check if an element has the required set of elements. At least one of the\n * selectors must match.\n */\n static validateAncestors(node, rules) {\n if (!rules || rules.length === 0) {\n return true;\n }\n return rules.some((rule) => node.closest(rule));\n }\n /**\n * Validate element required content.\n *\n * Check if an element has the required set of elements. At least one of the\n * selectors must match.\n *\n * Returns `[]` when valid or a list of required but missing tagnames or\n * categories.\n */\n static validateRequiredContent(node, rules) {\n if (!rules || rules.length === 0) {\n return [];\n }\n return rules.filter((tagName) => {\n const haveMatchingChild = node.childElements.some(\n (child) => Validator.validatePermittedCategory(child, tagName, false)\n );\n return !haveMatchingChild;\n });\n }\n /**\n * Test if an attribute has an allowed value and/or format.\n *\n * @param attr - Attribute to test.\n * @param rules - Element attribute metadta.\n * @returns `true` if attribute passes all tests.\n */\n static validateAttribute(attr, rules) {\n const rule = rules[attr.key];\n if (!rule) {\n return true;\n }\n const value = attr.value;\n if (value instanceof DynamicValue) {\n return true;\n }\n const empty = value === null || value === \"\";\n if (rule.boolean) {\n return empty || value === attr.key;\n }\n if (rule.omit && empty) {\n return true;\n }\n if (rule.list) {\n const tokens = new DOMTokenList(value, attr.valueLocation);\n return tokens.every((token) => {\n return this.validateAttributeValue(token, rule);\n });\n }\n return this.validateAttributeValue(value, rule);\n }\n static validateAttributeValue(value, rule) {\n if (!rule.enum) {\n return true;\n }\n if (value === null) {\n return false;\n }\n const caseInsensitiveValue = value.toLowerCase();\n return rule.enum.some((entry) => {\n if (entry instanceof RegExp) {\n return !!value.match(entry);\n } else {\n return caseInsensitiveValue === entry;\n }\n });\n }\n static validatePermittedRule(node, rule, isExclude = false) {\n if (typeof rule === \"string\") {\n return Validator.validatePermittedCategory(node, rule, !isExclude);\n } else if (Array.isArray(rule)) {\n return rule.every((inner) => {\n return Validator.validatePermittedRule(node, inner, isExclude);\n });\n } else {\n validateKeys(rule);\n if (rule.exclude) {\n if (Array.isArray(rule.exclude)) {\n return !rule.exclude.some((inner) => {\n return Validator.validatePermittedRule(node, inner, true);\n });\n } else {\n return !Validator.validatePermittedRule(node, rule.exclude, true);\n }\n } else {\n return true;\n }\n }\n }\n /**\n * Validate node against a content category.\n *\n * When matching parent nodes against permitted parents use the superset\n * parameter to also match for `@flow`. E.g. if a node expects a `@phrasing`\n * parent it should also allow `@flow` parent since `@phrasing` is a subset of\n * `@flow`.\n *\n * @param node - The node to test against\n * @param category - Name of category with `@` prefix or tag name.\n * @param defaultMatch - The default return value when node categories is not known.\n */\n /* eslint-disable-next-line complexity -- rule does not like switch */\n static validatePermittedCategory(node, category, defaultMatch) {\n const [, rawCategory] = /^(@?.*?)([?*]?)$/.exec(category);\n if (!rawCategory.startsWith(\"@\")) {\n return node.tagName === rawCategory;\n }\n if (!node.meta) {\n return defaultMatch;\n }\n switch (rawCategory) {\n case \"@meta\":\n return node.meta.metadata;\n case \"@flow\":\n return node.meta.flow;\n case \"@sectioning\":\n return node.meta.sectioning;\n case \"@heading\":\n return node.meta.heading;\n case \"@phrasing\":\n return node.meta.phrasing;\n case \"@embedded\":\n return node.meta.embedded;\n case \"@interactive\":\n return node.meta.interactive;\n case \"@script\":\n return Boolean(node.meta.scriptSupporting);\n case \"@form\":\n return Boolean(node.meta.form);\n default:\n throw new Error(`Invalid content category \"${category}\"`);\n }\n }\n}\nfunction validateKeys(rule) {\n for (const key of Object.keys(rule)) {\n if (!allowedKeys.includes(key)) {\n const str = JSON.stringify(rule);\n throw new Error(`Permitted rule \"${str}\" contains unknown property \"${key}\"`);\n }\n }\n}\nfunction parseQuantifier(quantifier) {\n switch (quantifier) {\n case \"?\":\n return 1;\n case \"*\":\n return null;\n // istanbul ignore next\n default:\n throw new Error(`Invalid quantifier \"${quantifier}\" used`);\n }\n}\n\nconst $schema = \"http://json-schema.org/draft-06/schema#\";\nconst $id = \"https://html-validate.org/schemas/config.json\";\nconst type = \"object\";\nconst additionalProperties = false;\nconst properties = {\n\t$schema: {\n\t\ttype: \"string\"\n\t},\n\troot: {\n\t\ttype: \"boolean\",\n\t\ttitle: \"Mark as root configuration\",\n\t\tdescription: \"If this is set to true no further configurations will be searched.\",\n\t\t\"default\": false\n\t},\n\t\"extends\": {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t},\n\t\ttitle: \"Configurations to extend\",\n\t\tdescription: \"Array of shareable or builtin configurations to extend.\"\n\t},\n\telements: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"object\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\ttitle: \"Element metadata to load\",\n\t\tdescription: \"Array of modules, plugins or files to load element metadata from. Use <rootDir> to refer to the folder with the package.json file.\",\n\t\texamples: [\n\t\t\t[\n\t\t\t\t\"html-validate:recommended\",\n\t\t\t\t\"plugin:recommended\",\n\t\t\t\t\"module\",\n\t\t\t\t\"./local-file.json\"\n\t\t\t]\n\t\t]\n\t},\n\tplugins: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"object\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\ttitle: \"Plugins to load\",\n\t\tdescription: \"Array of plugins load. Use <rootDir> to refer to the folder with the package.json file.\",\n\t\texamples: [\n\t\t\t[\n\t\t\t\t\"my-plugin\",\n\t\t\t\t\"./local-plugin\"\n\t\t\t]\n\t\t]\n\t},\n\ttransform: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"function\": true\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\ttitle: \"File transformations to use.\",\n\t\tdescription: \"Object where key is regular expression to match filename and value is name of transformer or a function.\",\n\t\texamples: [\n\t\t\t{\n\t\t\t\t\"^.*\\\\.foo$\": \"my-transformer\",\n\t\t\t\t\"^.*\\\\.bar$\": \"my-plugin\",\n\t\t\t\t\"^.*\\\\.baz$\": \"my-plugin:named\"\n\t\t\t}\n\t\t]\n\t},\n\trules: {\n\t\ttype: \"object\",\n\t\tpatternProperties: {\n\t\t\t\".*\": {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\"off\",\n\t\t\t\t\t\t\t\"warn\",\n\t\t\t\t\t\t\t\"error\"\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\tmaxItems: 1,\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\"off\",\n\t\t\t\t\t\t\t\t\t\"warn\",\n\t\t\t\t\t\t\t\t\t\"error\"\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tminItems: 2,\n\t\t\t\t\t\tmaxItems: 2,\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\"off\",\n\t\t\t\t\t\t\t\t\t\"warn\",\n\t\t\t\t\t\t\t\t\t\"error\"\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\ttitle: \"Rule configuration.\",\n\t\tdescription: \"Enable/disable rules, set severity. Some rules have additional configuration like style or patterns to use.\",\n\t\texamples: [\n\t\t\t{\n\t\t\t\tfoo: \"error\",\n\t\t\t\tbar: \"off\",\n\t\t\t\tbaz: [\n\t\t\t\t\t\"error\",\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: \"camelcase\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t}\n};\nvar configurationSchema = {\n\t$schema: $schema,\n\t$id: $id,\n\ttype: type,\n\tadditionalProperties: additionalProperties,\n\tproperties: properties\n};\n\nvar Severity = /* @__PURE__ */ ((Severity2) => {\n Severity2[Severity2[\"DISABLED\"] = 0] = \"DISABLED\";\n Severity2[Severity2[\"WARN\"] = 1] = \"WARN\";\n Severity2[Severity2[\"ERROR\"] = 2] = \"ERROR\";\n return Severity2;\n})(Severity || {});\nfunction parseSeverity(value) {\n switch (value) {\n case 0:\n case \"off\":\n return 0 /* DISABLED */;\n case 1:\n case \"warn\":\n return 1 /* WARN */;\n case 2:\n case \"error\":\n return 2 /* ERROR */;\n default:\n throw new Error(`Invalid severity \"${String(value)}\"`);\n }\n}\n\nfunction escape(value) {\n return JSON.stringify(value);\n}\nfunction format(value, quote = false) {\n if (value === null || value === void 0) {\n return \"null\";\n }\n if (typeof value === \"number\") {\n return value.toString();\n }\n if (typeof value === \"string\") {\n return quote ? escape(value) : value;\n }\n if (Array.isArray(value)) {\n const content = value.map((it) => format(it, true)).join(\", \");\n return `[ ${content} ]`;\n }\n if (typeof value === \"object\") {\n const content = Object.entries(value).map(([key, nested]) => `${key}: ${format(nested, true)}`).join(\", \");\n return `{ ${content} }`;\n }\n return String(value);\n}\nfunction interpolate(text, data) {\n return text.replace(/{{\\s*([^\\s{}]+)\\s*}}/g, (match, key) => {\n return typeof data[key] !== \"undefined\" ? format(data[key]) : match;\n });\n}\n\nconst cacheKey = Symbol(\"aria-naming\");\nconst defaultValue = \"allowed\";\nconst prohibitedRoles = [\n \"caption\",\n \"code\",\n \"deletion\",\n \"emphasis\",\n \"generic\",\n \"insertion\",\n \"paragraph\",\n \"presentation\",\n \"strong\",\n \"subscript\",\n \"superscript\"\n];\nfunction byRole(role) {\n return prohibitedRoles.includes(role) ? \"prohibited\" : \"allowed\";\n}\nfunction byMeta(element, meta) {\n return meta.aria.naming(element._adapter);\n}\nfunction ariaNaming(element) {\n const cached = element.cacheGet(cacheKey);\n if (cached) {\n return cached;\n }\n const role = element.getAttribute(\"role\")?.value;\n if (role) {\n if (role instanceof DynamicValue) {\n return element.cacheSet(cacheKey, defaultValue);\n } else {\n return element.cacheSet(cacheKey, byRole(role));\n }\n }\n const meta = element.meta;\n if (!meta) {\n return element.cacheSet(cacheKey, defaultValue);\n }\n return element.cacheSet(cacheKey, byMeta(element, meta));\n}\n\nconst patternCache = /* @__PURE__ */ new Map();\nfunction compileStringPattern(pattern) {\n const regexp = pattern.replace(/[*]+/g, \".+\");\n return new RegExp(`^${regexp}$`);\n}\nfunction compileRegExpPattern(pattern) {\n return new RegExp(`^${pattern}$`);\n}\nfunction compilePattern(pattern) {\n const cached = patternCache.get(pattern);\n if (cached) {\n return cached;\n }\n const match = /^\\/(.*)\\/$/.exec(pattern);\n const regexp = match ? compileRegExpPattern(match[1]) : compileStringPattern(pattern);\n patternCache.set(pattern, regexp);\n return regexp;\n}\nfunction keywordPatternMatcher(list, keyword) {\n for (const pattern of list) {\n const regexp = compilePattern(pattern);\n if (regexp.test(keyword)) {\n return true;\n }\n }\n return false;\n}\nfunction isKeywordIgnored(options, keyword, matcher = (list, it) => list.includes(it)) {\n const { include, exclude } = options;\n if (include && !matcher(include, keyword)) {\n return true;\n }\n if (exclude && matcher(exclude, keyword)) {\n return true;\n }\n return false;\n}\n\nconst ARIA_HIDDEN_CACHE = Symbol(isAriaHidden.name);\nconst HTML_HIDDEN_CACHE = Symbol(isHTMLHidden.name);\nconst INERT_CACHE = Symbol(isInert.name);\nconst ROLE_PRESENTATION_CACHE = Symbol(isPresentation.name);\nconst STYLE_HIDDEN_CACHE = Symbol(isStyleHidden.name);\nfunction inAccessibilityTree(node) {\n if (isAriaHidden(node)) {\n return false;\n }\n if (isPresentation(node)) {\n return false;\n }\n if (isHTMLHidden(node)) {\n return false;\n }\n if (isInert(node)) {\n return false;\n }\n if (isStyleHidden(node)) {\n return false;\n }\n return true;\n}\nfunction isAriaHiddenImpl(node) {\n const getAriaHiddenAttr = (node2) => {\n const ariaHidden = node2.getAttribute(\"aria-hidden\");\n return Boolean(ariaHidden && ariaHidden.value === \"true\");\n };\n return {\n byParent: node.parent ? isAriaHidden(node.parent) : false,\n bySelf: getAriaHiddenAttr(node)\n };\n}\nfunction isAriaHidden(node, details) {\n const cached = node.cacheGet(ARIA_HIDDEN_CACHE);\n if (cached) {\n return details ? cached : cached.byParent || cached.bySelf;\n }\n const result = node.cacheSet(ARIA_HIDDEN_CACHE, isAriaHiddenImpl(node));\n return details ? result : result.byParent || result.bySelf;\n}\nfunction isHTMLHiddenImpl(node) {\n const getHiddenAttr = (node2) => {\n const hidden = node2.getAttribute(\"hidden\");\n return Boolean(hidden?.isStatic);\n };\n return {\n byParent: node.parent ? isHTMLHidden(node.parent) : false,\n bySelf: getHiddenAttr(node)\n };\n}\nfunction isHTMLHidden(node, details) {\n const cached = node.cacheGet(HTML_HIDDEN_CACHE);\n if (cached) {\n return details ? cached : cached.byParent || cached.bySelf;\n }\n const result = node.cacheSet(HTML_HIDDEN_CACHE, isHTMLHiddenImpl(node));\n return details ? result : result.byParent || result.bySelf;\n}\nfunction isInertImpl(node) {\n const getInertAttr = (node2) => {\n const inert = node2.getAttribute(\"inert\");\n return Boolean(inert?.isStatic);\n };\n return {\n byParent: node.parent ? isInert(node.parent) : false,\n bySelf: getInertAttr(node)\n };\n}\nfunction isInert(node, details) {\n const cached = node.cacheGet(INERT_CACHE);\n if (cached) {\n return details ? cached : cached.byParent || cached.bySelf;\n }\n const result = node.cacheSet(INERT_CACHE, isInertImpl(node));\n return details ? result : result.byParent || result.bySelf;\n}\nfunction isStyleHiddenImpl(node) {\n const getStyleAttr = (node2) => {\n const style = node2.getAttribute(\"style\");\n const { display, visibility } = parseCssDeclaration(style?.value);\n return display === \"none\" || visibility === \"hidden\";\n };\n const byParent = node.parent ? isStyleHidden(node.parent) : false;\n const bySelf = getStyleAttr(node);\n return byParent || bySelf;\n}\nfunction isStyleHidden(node) {\n const cached = node.cacheGet(STYLE_HIDDEN_CACHE);\n if (cached) {\n return cached;\n }\n return node.cacheSet(STYLE_HIDDEN_CACHE, isStyleHiddenImpl(node));\n}\nfunction isPresentation(node) {\n if (node.cacheExists(ROLE_PRESENTATION_CACHE)) {\n return Boolean(node.cacheGet(ROLE_PRESENTATION_CACHE));\n }\n const meta = node.meta;\n if (meta?.interactive) {\n return node.cacheSet(ROLE_PRESENTATION_CACHE, false);\n }\n const tabindex = node.getAttribute(\"tabindex\");\n if (tabindex) {\n return node.cacheSet(ROLE_PRESENTATION_CACHE, false);\n }\n const role = node.getAttribute(\"role\");\n if (role && (role.value === \"presentation\" || role.value === \"none\")) {\n return node.cacheSet(ROLE_PRESENTATION_CACHE, true);\n } else {\n return node.cacheSet(ROLE_PRESENTATION_CACHE, false);\n }\n}\n\nconst cachePrefix = classifyNodeText.name;\nconst HTML_CACHE_KEY = Symbol(`${cachePrefix}|html`);\nconst A11Y_CACHE_KEY = Symbol(`${cachePrefix}|a11y`);\nconst IGNORE_HIDDEN_ROOT_HTML_CACHE_KEY = Symbol(`${cachePrefix}|html|ignore-hidden-root`);\nconst IGNORE_HIDDEN_ROOT_A11Y_CACHE_KEY = Symbol(`${cachePrefix}|a11y|ignore-hidden-root`);\nvar TextClassification = /* @__PURE__ */ ((TextClassification2) => {\n TextClassification2[TextClassification2[\"EMPTY_TEXT\"] = 0] = \"EMPTY_TEXT\";\n TextClassification2[TextClassification2[\"DYNAMIC_TEXT\"] = 1] = \"DYNAMIC_TEXT\";\n TextClassification2[TextClassification2[\"STATIC_TEXT\"] = 2] = \"STATIC_TEXT\";\n return TextClassification2;\n})(TextClassification || {});\nfunction getCachekey(options) {\n const { accessible = false, ignoreHiddenRoot = false } = options;\n if (accessible && ignoreHiddenRoot) {\n return IGNORE_HIDDEN_ROOT_A11Y_CACHE_KEY;\n } else if (ignoreHiddenRoot) {\n return IGNORE_HIDDEN_ROOT_HTML_CACHE_KEY;\n } else if (accessible) {\n return A11Y_CACHE_KEY;\n } else {\n return HTML_CACHE_KEY;\n }\n}\nfunction isSpecialEmpty(node) {\n return node.is(\"select\") || node.is(\"textarea\");\n}\nfunction classifyNodeText(node, options = {}) {\n const { accessible = false, ignoreHiddenRoot = false } = options;\n const cacheKey = getCachekey(options);\n if (node.cacheExists(cacheKey)) {\n return node.cacheGet(cacheKey);\n }\n if (!ignoreHiddenRoot && isHTMLHidden(node)) {\n return node.cacheSet(cacheKey, 0 /* EMPTY_TEXT */);\n }\n if (!ignoreHiddenRoot && accessible && isAriaHidden(node)) {\n return node.cacheSet(cacheKey, 0 /* EMPTY_TEXT */);\n }\n if (isSpecialEmpty(node)) {\n return node.cacheSet(cacheKey, 0 /* EMPTY_TEXT */);\n }\n const text = findTextNodes(node, {\n ...options});\n if (text.some((cur) => cur.isDynamic)) {\n return node.cacheSet(cacheKey, 1 /* DYNAMIC_TEXT */);\n }\n if (text.some((cur) => /\\S/.exec(cur.textContent) !== null)) {\n return node.cacheSet(cacheKey, 2 /* STATIC_TEXT */);\n }\n return node.cacheSet(cacheKey, 0 /* EMPTY_TEXT */);\n}\nfunction findTextNodes(node, options) {\n const { accessible = false } = options;\n let text = [];\n for (const child of node.childNodes) {\n if (isTextNode(child)) {\n text.push(child);\n } else if (isElementNode(child)) {\n if (isHTMLHidden(child, true).bySelf) {\n continue;\n }\n if (accessible && isAriaHidden(child, true).bySelf) {\n continue;\n }\n text = text.concat(findTextNodes(child, options));\n }\n }\n return text;\n}\n\nfunction hasAltText(image) {\n const alt = image.getAttribute(\"alt\");\n if (!alt) {\n return false;\n }\n if (alt.value === null) {\n return false;\n }\n return alt.isDynamic || alt.value.toString() !== \"\";\n}\n\nfunction hasAriaLabel(node) {\n const label = node.getAttribute(\"aria-label\");\n if (!label) {\n return false;\n }\n if (label.value === null) {\n return false;\n }\n return label.isDynamic || label.value.toString() !== \"\";\n}\n\nfunction partition(values, predicate) {\n const initial = [[], []];\n return values.reduce((accumulator, value, index) => {\n const match = predicate(value, index, values);\n accumulator[match ? 0 : 1].push(value);\n return accumulator;\n }, initial);\n}\n\nconst ajv$1 = new Ajv({ strict: true, strictTuples: true, strictTypes: true });\najv$1.addMetaSchema(ajvSchemaDraft);\nfunction getSchemaValidator(ruleId, properties) {\n const $id = `rule/${ruleId}`;\n const cached = ajv$1.getSchema($id);\n if (cached) {\n return cached;\n }\n const schema = {\n $id,\n type: \"object\",\n additionalProperties: false,\n properties\n };\n return ajv$1.compile(schema);\n}\nfunction isErrorDescriptor(value) {\n return Boolean(value[0] && value[0].message);\n}\nfunction unpackErrorDescriptor(value) {\n if (isErrorDescriptor(value)) {\n return value[0];\n } else {\n const [node, message, location, context] = value;\n return { node, message, location, context };\n }\n}\nclass Rule {\n reporter;\n parser;\n meta;\n enabled;\n // rule enabled/disabled, irregardless of severity\n blockers;\n severity;\n // rule severity\n event;\n /**\n * Rule name. Defaults to filename without extension but can be overwritten by\n * subclasses.\n */\n name;\n /**\n * Rule options.\n */\n options;\n constructor(options) {\n this.reporter = null;\n this.parser = null;\n this.meta = null;\n this.event = null;\n this.options = options;\n this.enabled = true;\n this.blockers = [];\n this.severity = Severity.DISABLED;\n this.name = \"\";\n }\n getSeverity() {\n return this.severity;\n }\n setServerity(severity) {\n this.severity = severity;\n }\n /**\n * Block this rule from generating errors. Pass in an id generated by\n * `createBlocker`. Can be unblocked by {@link Rule.unblock}.\n *\n * A blocked rule is similar to disabling it but it will still receive parser\n * events. A list of all blockers is passed to the `rule:error` event.\n *\n * @internal\n */\n block(id) {\n this.blockers.push(id);\n }\n /**\n * Unblock a rule previously blocked by {@link Rule.block}.\n *\n * @internal\n */\n unblock(id) {\n this.blockers = this.blockers.filter((it) => it !== id);\n }\n setEnabled(enabled) {\n this.enabled = enabled;\n }\n /**\n * Returns `true` if rule is deprecated.\n *\n * Overridden by subclasses.\n */\n get deprecated() {\n return false;\n }\n /**\n * Test if rule is enabled.\n *\n * To be considered enabled the enabled flag must be true and the severity at\n * least warning.\n *\n * @internal\n */\n isEnabled(node) {\n return this.enabled && this.severity >= Severity.WARN && (!node || node.ruleEnabled(this.name));\n }\n /**\n * Test if rule is enabled.\n *\n * To be considered enabled the enabled flag must be true and the severity at\n * least warning.\n *\n * @internal\n */\n isBlocked(node) {\n if (this.blockers.length > 0) {\n return true;\n }\n if (node && node.ruleBlockers(this.name).length > 0) {\n return true;\n }\n return false;\n }\n /**\n * Get a list of all blockers currently active this rule.\n *\n * @internal\n */\n getBlockers(node) {\n return [...this.blockers, ...node ? node.ruleBlockers(this.name) : []];\n }\n /**\n * Check if keyword is being ignored by the current rule configuration.\n *\n * This method requires the [[RuleOption]] type to include two properties:\n *\n * - include: string[] | null\n * - exclude: string[] | null\n *\n * This methods checks if the given keyword is included by \"include\" but not\n * excluded by \"exclude\". If any property is unset it is skipped by the\n * condition. Usually the user would use either one but not both but there is\n * no limitation to use both but the keyword must satisfy both conditions. If\n * either condition fails `true` is returned.\n *\n * For instance, given `{ include: [\"foo\"] }` the keyword `\"foo\"` would match\n * but not `\"bar\"`.\n *\n * Similarly, given `{ exclude: [\"foo\"] }` the keyword `\"bar\"` would match but\n * not `\"foo\"`.\n *\n * @param keyword - Keyword to match against `include` and `exclude` options.\n * @param matcher - Optional function to compare items with.\n * @returns `true` if keyword is not present in `include` or is present in\n * `exclude`.\n */\n isKeywordIgnored(keyword, matcher = (list, it) => list.includes(it)) {\n return isKeywordIgnored(this.options, keyword, matcher);\n }\n /**\n * Get [[MetaElement]] for the given tag. If no specific metadata is present\n * the global metadata is returned or null if no global is present.\n *\n * @public\n * @returns A shallow copy of metadata.\n */\n getMetaFor(tagName) {\n return this.meta.getMetaFor(tagName);\n }\n /**\n * Find all tags which has enabled given property.\n */\n getTagsWithProperty(propName) {\n return this.meta.getTagsWithProperty(propName);\n }\n /**\n * Find tag matching tagName or inheriting from it.\n */\n getTagsDerivedFrom(tagName) {\n return this.meta.getTagsDerivedFrom(tagName);\n }\n /**\n * JSON schema for rule options.\n *\n * Rules should override this to return an object with JSON schema to validate\n * rule options. If `null` or `undefined` is returned no validation is\n * performed.\n */\n static schema() {\n return null;\n }\n report(...args) {\n const { node, message, location, context } = unpackErrorDescriptor(args);\n const enabled = this.isEnabled(node);\n const blocked = this.isBlocked(node);\n const where = this.findLocation({ node, location, event: this.event });\n this.parser.trigger(\"rule:error\", {\n location: where,\n ruleId: this.name,\n enabled,\n blockers: this.getBlockers(node)\n });\n if (enabled && !blocked) {\n const interpolated = interpolate(message, context ?? {});\n this.reporter.add(this, interpolated, this.severity, node, where, context);\n }\n }\n findLocation(src) {\n if (src.location) {\n return src.location;\n }\n if (src.event?.location) {\n return src.event.location;\n }\n if (src.node?.location) {\n return src.node.location;\n }\n return {};\n }\n on(event, ...args) {\n const callback = args.pop();\n const filter = args.pop() ?? (() => true);\n return this.parser.on(event, (_event, data) => {\n if (this.isEnabled() && filter(data)) {\n this.event = data;\n callback(data);\n }\n });\n }\n /**\n * Called by [[Engine]] when initializing the rule.\n *\n * Do not override this, use the `setup` callback instead.\n *\n * @internal\n */\n init(parser, reporter, severity, meta) {\n this.parser = parser;\n this.reporter = reporter;\n this.severity = severity;\n this.meta = meta;\n }\n /**\n * Validate rule options against schema. Throws error if object does not validate.\n *\n * For rules without schema this function does nothing.\n *\n * @throws {@link SchemaValidationError}\n * Thrown when provided options does not validate against rule schema.\n *\n * @param cls - Rule class (constructor)\n * @param ruleId - Rule identifier\n * @param jsonPath - JSON path from which [[options]] can be found in [[config]]\n * @param options - User configured options to be validated\n * @param filename - Filename from which options originated\n * @param config - Configuration from which options originated\n *\n * @internal\n */\n static validateOptions(cls, ruleId, jsonPath, options, filename, config) {\n if (!cls) {\n return;\n }\n const schema = cls.schema();\n if (!schema) {\n return;\n }\n const isValid = getSchemaValidator(ruleId, schema);\n if (!isValid(options)) {\n const errors = isValid.errors ?? [];\n const mapped = errors.map((error) => {\n error.instancePath = `${jsonPath}${error.instancePath}`;\n return error;\n });\n throw new SchemaValidationError(filename, `Rule configuration error`, config, schema, mapped);\n }\n }\n /**\n * Rule documentation callback.\n *\n * Called when requesting additional documentation for a rule. Some rules\n * provide additional context to provide context-aware suggestions.\n *\n * @public\n * @virtual\n * @param context - Error context given by a reported error.\n * @returns Rule documentation and url with additional details or `null` if no\n * additional documentation is available.\n */\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars -- technical debt, prototype should be moved to interface */\n documentation(context) {\n return null;\n }\n}\n\nconst defaults$y = {\n allowExternal: true,\n allowRelative: true,\n allowAbsolute: true,\n allowBase: true\n};\nconst mapping = {\n a: \"href\",\n img: \"src\",\n link: \"href\",\n script: \"src\"\n};\nconst description = {\n [\"external\" /* EXTERNAL */]: \"External links are not allowed by current configuration.\",\n [\"relative-base\" /* RELATIVE_BASE */]: \"Links relative to <base> are not allowed by current configuration.\",\n [\"relative-path\" /* RELATIVE_PATH */]: \"Relative links are not allowed by current configuration.\",\n [\"absolute\" /* ABSOLUTE */]: \"Absolute links are not allowed by current configuration.\",\n [\"anchor\" /* ANCHOR */]: null\n};\nfunction parseAllow(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n return {\n /* eslint-disable security/detect-non-literal-regexp -- expected to be regexp */\n include: value.include ? value.include.map((it) => new RegExp(it)) : null,\n exclude: value.exclude ? value.exclude.map((it) => new RegExp(it)) : null\n /* eslint-enable security/detect-non-literal-regexp */\n };\n}\nfunction matchList(value, list) {\n if (list.include && !list.include.some((it) => it.test(value))) {\n return false;\n }\n if (list.exclude?.some((it) => it.test(value))) {\n return false;\n }\n return true;\n}\nclass AllowedLinks extends Rule {\n allowExternal;\n allowRelative;\n allowAbsolute;\n constructor(options) {\n super({ ...defaults$y, ...options });\n this.allowExternal = parseAllow(this.options.allowExternal);\n this.allowRelative = parseAllow(this.options.allowRelative);\n this.allowAbsolute = parseAllow(this.options.allowAbsolute);\n }\n static schema() {\n const booleanOrObject = {\n anyOf: [\n { type: \"boolean\" },\n {\n type: \"object\",\n properties: {\n include: {\n type: \"array\",\n items: { type: \"string\" }\n },\n exclude: {\n type: \"array\",\n items: { type: \"string\" }\n }\n }\n }\n ]\n };\n return {\n allowExternal: { ...booleanOrObject },\n allowRelative: { ...booleanOrObject },\n allowAbsolute: { ...booleanOrObject },\n allowBase: { type: \"boolean\" }\n };\n }\n documentation(context) {\n const message = description[context] ?? \"This link type is not allowed by current configuration\";\n return {\n description: message,\n url: \"https://html-validate.org/rules/allowed-links.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n if (!event.value || !this.isRelevant(event)) {\n return;\n }\n const link = event.value.toString();\n const style = this.getStyle(link);\n switch (style) {\n case \"anchor\" /* ANCHOR */:\n break;\n case \"absolute\" /* ABSOLUTE */:\n this.handleAbsolute(link, event, style);\n break;\n case \"external\" /* EXTERNAL */:\n this.handleExternal(link, event, style);\n break;\n case \"relative-base\" /* RELATIVE_BASE */:\n this.handleRelativeBase(link, event, style);\n break;\n case \"relative-path\" /* RELATIVE_PATH */:\n this.handleRelativePath(link, event, style);\n break;\n }\n });\n }\n isRelevant(event) {\n const { target, key, value } = event;\n if (value instanceof DynamicValue) {\n return false;\n }\n const attr = mapping[target.tagName];\n return Boolean(attr && attr === key);\n }\n getStyle(value) {\n if (value.match(/^([a-z]+:)?\\/\\//g)) {\n return \"external\" /* EXTERNAL */;\n }\n switch (value[0]) {\n /* /foo/bar */\n case \"/\":\n return \"absolute\" /* ABSOLUTE */;\n /* ../foo/bar */\n case \".\":\n return \"relative-path\" /* RELATIVE_PATH */;\n /* #foo */\n case \"#\":\n return \"anchor\" /* ANCHOR */;\n /* foo/bar */\n default:\n return \"relative-base\" /* RELATIVE_BASE */;\n }\n }\n handleAbsolute(target, event, style) {\n const { allowAbsolute } = this;\n if (allowAbsolute === true) {\n return;\n } else if (allowAbsolute === false) {\n this.report(\n event.target,\n \"Link destination must not be absolute url\",\n event.valueLocation,\n style\n );\n } else if (!matchList(target, allowAbsolute)) {\n this.report(\n event.target,\n \"Absolute link to this destination is not allowed by current configuration\",\n event.valueLocation,\n style\n );\n }\n }\n handleExternal(target, event, style) {\n const { allowExternal } = this;\n if (allowExternal === true) {\n return;\n } else if (allowExternal === false) {\n this.report(\n event.target,\n \"Link destination must not be external url\",\n event.valueLocation,\n style\n );\n } else if (!matchList(target, allowExternal)) {\n this.report(\n event.target,\n \"External link to this destination is not allowed by current configuration\",\n event.valueLocation,\n style\n );\n }\n }\n handleRelativePath(target, event, style) {\n const { allowRelative } = this;\n if (allowRelative === true) {\n return false;\n } else if (allowRelative === false) {\n this.report(\n event.target,\n \"Link destination must not be relative url\",\n event.valueLocation,\n style\n );\n return true;\n } else if (!matchList(target, allowRelative)) {\n this.report(\n event.target,\n \"Relative link to this destination is not allowed by current configuration\",\n event.valueLocation,\n style\n );\n return true;\n }\n return false;\n }\n handleRelativeBase(target, event, style) {\n const { allowBase } = this.options;\n if (this.handleRelativePath(target, event, style)) {\n return;\n } else if (!allowBase) {\n this.report(\n event.target,\n \"Relative links must be relative to current folder\",\n event.valueLocation,\n style\n );\n }\n }\n}\n\nconst defaults$x = {\n accessible: true\n};\nfunction findByTarget(target, siblings) {\n return siblings.filter((it) => it.getAttributeValue(\"href\") === target);\n}\nfunction getAltText(node) {\n return node.getAttributeValue(\"alt\");\n}\nfunction getDescription$1(context) {\n switch (context) {\n case \"missing-alt\" /* MISSING_ALT */:\n return [\n \"The `alt` attribute must be set (and not empty) when the `href` attribute is present on an `<area>` element.\",\n \"\",\n \"The attribute is used to provide an alternative text description for the area of the image map.\",\n \"The text should describe the purpose of area and the resource referenced by the `href` attribute.\",\n \"\",\n \"Either add the `alt` attribute or remove the `href` attribute.\"\n ];\n case \"missing-href\" /* MISSING_HREF */:\n return [\n \"The `alt` attribute must not be set when the `href` attribute is missing on an `<area>` element.\",\n \"\",\n \"Either add the `href` attribute or remove the `alt` attribute.\"\n ];\n }\n}\nclass AreaAlt extends Rule {\n constructor(options) {\n super({ ...defaults$x, ...options });\n }\n static schema() {\n return {\n accessible: {\n type: \"boolean\"\n }\n };\n }\n documentation(context) {\n return {\n description: getDescription$1(context).join(\"\\n\"),\n url: \"https://html-validate.org/rules/area-alt.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", this.isRelevant, (event) => {\n const { target } = event;\n const siblings = target.querySelectorAll(\"area\");\n for (const child of siblings) {\n this.validateArea(child, siblings);\n }\n });\n }\n validateArea(area, siblings) {\n const { accessible } = this.options;\n const href = area.getAttribute(\"href\");\n const alt = area.getAttribute(\"alt\");\n if (href) {\n if (isDynamicAttribute(alt)) {\n return;\n }\n const target = area.getAttributeValue(\"href\");\n const altTexts = accessible ? [getAltText(area)] : findByTarget(target, siblings).map(getAltText);\n if (!altTexts.some(Boolean)) {\n this.report({\n node: area,\n message: `\"alt\" attribute must be set and non-empty when the \"href\" attribute is present`,\n location: alt ? alt.keyLocation : href.keyLocation,\n context: \"missing-alt\" /* MISSING_ALT */\n });\n }\n } else if (alt) {\n this.report({\n node: area,\n message: `\"alt\" attribute cannot be used unless the \"href\" attribute is present`,\n location: alt.keyLocation,\n context: \"missing-href\" /* MISSING_HREF */\n });\n }\n }\n isRelevant(event) {\n const { target } = event;\n return target.is(\"map\");\n }\n}\n\nclass AriaHiddenBody extends Rule {\n documentation() {\n return {\n description: \"`aria-hidden` must not be used on the `<body>` element as it makes the page inaccessible to assistive technology such as screenreaders\",\n url: \"https://html-validate.org/rules/aria-hidden-body.html\"\n };\n }\n setup() {\n this.on(\"tag:ready\", this.isRelevant, (event) => {\n const { target } = event;\n const attr = target.getAttribute(\"aria-hidden\");\n if (!attr?.valueMatches(\"true\", true)) {\n return;\n }\n this.report(target, \"aria-hidden must not be used on <body>\", attr.keyLocation);\n });\n }\n isRelevant(event) {\n return event.target.is(\"body\");\n }\n}\n\nconst defaults$w = {\n allowAnyNamable: false\n};\nconst whitelisted = [\n \"main\",\n \"nav\",\n \"table\",\n \"td\",\n \"th\",\n \"aside\",\n \"header\",\n \"footer\",\n \"section\",\n \"article\",\n \"dialog\",\n \"form\",\n \"img\",\n \"area\",\n \"fieldset\",\n \"summary\",\n \"figure\"\n];\nfunction isValidUsage(target, meta) {\n const explicit = meta.attributes[\"aria-label\"];\n if (explicit) {\n return true;\n }\n if (whitelisted.includes(target.tagName)) {\n return true;\n }\n if (target.hasAttribute(\"role\")) {\n return true;\n }\n if (target.hasAttribute(\"tabindex\")) {\n return true;\n }\n if (Boolean(meta.interactive) || Boolean(meta.labelable)) {\n return true;\n }\n return false;\n}\nclass AriaLabelMisuse extends Rule {\n constructor(options) {\n super({ ...defaults$w, ...options });\n }\n documentation() {\n const valid = [\n \"Interactive elements\",\n \"Labelable elements\",\n \"Landmark elements\",\n \"Elements with roles inheriting from widget\",\n \"`<area>`\",\n \"`<dialog>`\",\n \"`<form>` and `<fieldset>`\",\n \"`<iframe>`\",\n \"`<img>` and `<figure>`\",\n \"`<summary>`\",\n \"`<table>`, `<td>` and `<th>`\"\n ];\n const lines = valid.map((it) => `- ${it}\n`).join(\"\");\n return {\n description: `\\`aria-label\\` can only be used on:\n\n${lines}`,\n url: \"https://html-validate.org/rules/aria-label-misuse.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n for (const target of document.querySelectorAll(\"[aria-label]\")) {\n this.validateElement(target);\n }\n });\n }\n validateElement(target) {\n const attr = target.getAttribute(\"aria-label\");\n if (!attr.value || attr.valueMatches(\"\", false)) {\n return;\n }\n const meta = target.meta;\n if (!meta) {\n return;\n }\n if (isValidUsage(target, meta)) {\n return;\n }\n if (this.options.allowAnyNamable && ariaNaming(target) === \"allowed\") {\n return;\n }\n this.report(target, `\"aria-label\" cannot be used on this element`, attr.keyLocation);\n }\n}\n\nclass ConfigError extends UserError {\n constructor(message, nested) {\n super(message, nested);\n Error.captureStackTrace(this, ConfigError);\n this.name = ConfigError.name;\n }\n}\n\nclass CaseStyle {\n styles;\n /**\n * @param style - Name of a valid case style.\n */\n constructor(style, ruleId) {\n if (!Array.isArray(style)) {\n style = [style];\n }\n if (style.length === 0) {\n throw new ConfigError(`Missing style for ${ruleId} rule`);\n }\n this.styles = this.parseStyle(style, ruleId);\n }\n /**\n * Test if a text matches this case style.\n */\n match(text) {\n return this.styles.some((style) => text.match(style.pattern));\n }\n get name() {\n const names = this.styles.map((style) => style.name);\n switch (this.styles.length) {\n case 1:\n return names[0];\n case 2:\n return names.join(\" or \");\n default: {\n const last = names.slice(-1);\n const rest = names.slice(0, -1);\n return `${rest.join(\", \")} or ${last[0]}`;\n }\n }\n }\n parseStyle(style, ruleId) {\n return style.map((cur) => {\n switch (cur.toLowerCase()) {\n case \"lowercase\":\n return { pattern: /^[a-z]*$/, name: \"lowercase\" };\n case \"uppercase\":\n return { pattern: /^[A-Z]*$/, name: \"uppercase\" };\n case \"pascalcase\":\n return { pattern: /^[A-Z][A-Za-z]*$/, name: \"PascalCase\" };\n case \"camelcase\":\n return { pattern: /^[a-z][A-Za-z]*$/, name: \"camelCase\" };\n default:\n throw new ConfigError(`Invalid style \"${cur}\" for ${ruleId} rule`);\n }\n });\n }\n}\n\nconst defaults$v = {\n style: \"lowercase\",\n ignoreForeign: true\n};\nclass AttrCase extends Rule {\n style;\n constructor(options) {\n super({ ...defaults$v, ...options });\n this.style = new CaseStyle(this.options.style, \"attr-case\");\n }\n static schema() {\n const styleEnum = [\"lowercase\", \"uppercase\", \"pascalcase\", \"camelcase\"];\n return {\n ignoreForeign: {\n type: \"boolean\"\n },\n style: {\n anyOf: [\n {\n enum: styleEnum,\n type: \"string\"\n },\n {\n items: {\n enum: styleEnum,\n type: \"string\"\n },\n type: \"array\"\n }\n ]\n }\n };\n }\n documentation() {\n const { style } = this.options;\n return {\n description: Array.isArray(style) ? [`Attribute name must be in one of:`, \"\", ...style.map((it) => `- ${it}`)].join(\"\\n\") : `Attribute name must be in ${style}.`,\n url: \"https://html-validate.org/rules/attr-case.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n if (this.isIgnored(event.target)) {\n return;\n }\n if (event.originalAttribute) {\n return;\n }\n const letters = event.key.replace(/[^a-z]+/gi, \"\");\n if (this.style.match(letters)) {\n return;\n }\n this.report({\n node: event.target,\n message: `Attribute \"${event.key}\" should be ${this.style.name}`,\n location: event.keyLocation\n });\n });\n }\n isIgnored(node) {\n if (this.options.ignoreForeign) {\n return Boolean(node.meta?.foreign);\n } else {\n return false;\n }\n }\n}\n\nvar TokenType = /* @__PURE__ */ ((TokenType2) => {\n TokenType2[TokenType2[\"UNICODE_BOM\"] = 1] = \"UNICODE_BOM\";\n TokenType2[TokenType2[\"WHITESPACE\"] = 2] = \"WHITESPACE\";\n TokenType2[TokenType2[\"DOCTYPE_OPEN\"] = 3] = \"DOCTYPE_OPEN\";\n TokenType2[TokenType2[\"DOCTYPE_VALUE\"] = 4] = \"DOCTYPE_VALUE\";\n TokenType2[TokenType2[\"DOCTYPE_CLOSE\"] = 5] = \"DOCTYPE_CLOSE\";\n TokenType2[TokenType2[\"TAG_OPEN\"] = 6] = \"TAG_OPEN\";\n TokenType2[TokenType2[\"TAG_CLOSE\"] = 7] = \"TAG_CLOSE\";\n TokenType2[TokenType2[\"ATTR_NAME\"] = 8] = \"ATTR_NAME\";\n TokenType2[TokenType2[\"ATTR_VALUE\"] = 9] = \"ATTR_VALUE\";\n TokenType2[TokenType2[\"TEXT\"] = 10] = \"TEXT\";\n TokenType2[TokenType2[\"TEMPLATING\"] = 11] = \"TEMPLATING\";\n TokenType2[TokenType2[\"SCRIPT\"] = 12] = \"SCRIPT\";\n TokenType2[TokenType2[\"STYLE\"] = 13] = \"STYLE\";\n TokenType2[TokenType2[\"COMMENT\"] = 14] = \"COMMENT\";\n TokenType2[TokenType2[\"CONDITIONAL\"] = 15] = \"CONDITIONAL\";\n TokenType2[TokenType2[\"DIRECTIVE\"] = 16] = \"DIRECTIVE\";\n TokenType2[TokenType2[\"EOF\"] = 17] = \"EOF\";\n return TokenType2;\n})(TokenType || {});\n\nconst MATCH_UNICODE_BOM = /^\\uFEFF/;\nconst MATCH_WHITESPACE = /^(?:\\r\\n|\\r|\\n|[ \\t]+(?:\\r\\n|\\r|\\n)?)/;\nconst MATCH_DOCTYPE_OPEN = /^<!(DOCTYPE)\\s/i;\nconst MATCH_DOCTYPE_VALUE = /^[^>]+/;\nconst MATCH_DOCTYPE_CLOSE = /^>/;\nconst MATCH_XML_TAG = /^<\\?xml.*?\\?>\\s+/;\nconst MATCH_TAG_OPEN = /^<(\\/?)([a-zA-Z0-9\\-_:]+)/;\nconst MATCH_TAG_CLOSE = /^\\/?>/;\nconst MATCH_TEXT = /^[^]*?(?=(?:[ \\t]*(?:\\r\\n|\\r|\\n)|<[^ ]|$))/;\nconst MATCH_TEMPLATING = /^(?:<%.*?%>|<\\?.*?\\?>|<\\$.*?\\$>)/s;\nconst MATCH_TAG_LOOKAHEAD = /^[^]*?(?=<|$)/;\nconst MATCH_ATTR_START = /^([^\\t\\r\\n\\f \\/><\"'=]+)/;\nconst MATCH_ATTR_SINGLE = /^(\\s*=\\s*)'([^']*?)(')/;\nconst MATCH_ATTR_DOUBLE = /^(\\s*=\\s*)\"([^\"]*?)(\")/;\nconst MATCH_ATTR_UNQUOTED = /^(\\s*=\\s*)([^\\t\\r\\n\\f \"'<>][^\\t\\r\\n\\f <>]*)/;\nconst MATCH_CDATA_BEGIN = /^<!\\[CDATA\\[/;\nconst MATCH_CDATA_END = /^[^]*?]]>/;\nconst MATCH_SCRIPT_DATA = /^[^]*?(?=<\\/script)/;\nconst MATCH_SCRIPT_END = /^<(\\/)(script)/;\nconst MATCH_STYLE_DATA = /^[^]*?(?=<\\/style)/;\nconst MATCH_STYLE_END = /^<(\\/)(style)/;\nconst MATCH_DIRECTIVE = /^(<!--\\s*\\[html-validate-)([a-z0-9-]+)(\\s*)(.*?)(]?\\s*-->)/;\nconst MATCH_COMMENT = /^<!--([^]*?)-->/;\nconst MATCH_CONDITIONAL = /^<!\\[([^\\]]*?)\\]>/;\nclass InvalidTokenError extends Error {\n location;\n constructor(location, message) {\n super(message);\n this.location = location;\n }\n}\nclass Lexer {\n /* eslint-disable-next-line complexity -- there isn't really a good way to refactor this while keeping readability */\n *tokenize(source) {\n const context = new Context(source);\n let previousState = context.state;\n let previousLength = context.string.length;\n while (context.string.length > 0) {\n switch (context.state) {\n case State.INITIAL:\n yield* this.tokenizeInitial(context);\n break;\n case State.DOCTYPE:\n yield* this.tokenizeDoctype(context);\n break;\n case State.TAG:\n yield* this.tokenizeTag(context);\n break;\n case State.ATTR:\n yield* this.tokenizeAttr(context);\n break;\n case State.TEXT:\n yield* this.tokenizeText(context);\n break;\n case State.CDATA:\n yield* this.tokenizeCDATA(context);\n break;\n case State.SCRIPT:\n yield* this.tokenizeScript(context);\n break;\n case State.STYLE:\n yield* this.tokenizeStyle(context);\n break;\n /* istanbul ignore next: sanity check: should not happen unless adding new states */\n default:\n this.unhandled(context);\n }\n if (context.state === previousState && context.string.length === previousLength) {\n this.errorStuck(context);\n }\n previousState = context.state;\n previousLength = context.string.length;\n }\n yield this.token(context, TokenType.EOF, []);\n }\n token(context, type, data) {\n const size = data.length > 0 ? data[0].length : 0;\n const location = context.getLocation(size);\n return {\n type,\n location,\n data: Array.from(data)\n };\n }\n /* istanbul ignore next: used to provide a better error when an unhandled state happens */\n unhandled(context) {\n const truncated = JSON.stringify(\n context.string.length > 13 ? `${context.string.slice(0, 15)}...` : context.string\n );\n const state = State[context.state];\n const message = `failed to tokenize ${truncated}, unhandled state ${state}.`;\n throw new InvalidTokenError(context.getLocation(1), message);\n }\n /* istanbul ignore next: used to provide a better error when lexer is detected to be stuck, no known way to reproduce */\n errorStuck(context) {\n const state = State[context.state];\n const message = `failed to tokenize ${context.getTruncatedLine()}, state ${state} failed to consume data or change state.`;\n throw new InvalidTokenError(context.getLocation(1), message);\n }\n evalNextState(nextState, token) {\n if (typeof nextState === \"function\") {\n return nextState(token);\n } else {\n return nextState;\n }\n }\n *match(context, tests, error) {\n const n = tests.length;\n for (let i = 0; i < n; i++) {\n const [regex, nextState, tokenType] = tests[i];\n const match = regex ? context.string.match(regex) : [\"\"];\n if (match) {\n let token = null;\n if (tokenType !== false) {\n token = this.token(context, tokenType, match);\n yield token;\n }\n const state = this.evalNextState(nextState, token);\n context.consume(match, state);\n this.enter(context, state, match);\n return;\n }\n }\n const message = `failed to tokenize ${context.getTruncatedLine()}, ${error}.`;\n throw new InvalidTokenError(context.getLocation(1), message);\n }\n /**\n * Called when entering a new state.\n */\n enter(context, state, data) {\n if (state === State.TAG && data?.[0].startsWith(\"<\")) {\n if (data[0] === \"<script\") {\n context.contentModel = ContentModel.SCRIPT;\n } else if (data[0] === \"<style\") {\n context.contentModel = ContentModel.STYLE;\n } else {\n context.contentModel = ContentModel.TEXT;\n }\n }\n }\n *tokenizeInitial(context) {\n yield* this.match(\n context,\n [\n [MATCH_UNICODE_BOM, State.INITIAL, TokenType.UNICODE_BOM],\n [MATCH_XML_TAG, State.INITIAL, false],\n [MATCH_DOCTYPE_OPEN, State.DOCTYPE, TokenType.DOCTYPE_OPEN],\n [MATCH_WHITESPACE, State.INITIAL, TokenType.WHITESPACE],\n [MATCH_DIRECTIVE, State.INITIAL, TokenType.DIRECTIVE],\n [MATCH_CONDITIONAL, State.INITIAL, TokenType.CONDITIONAL],\n [MATCH_COMMENT, State.INITIAL, TokenType.COMMENT],\n [false, State.TEXT, false]\n ],\n \"expected doctype\"\n );\n }\n *tokenizeDoctype(context) {\n yield* this.match(\n context,\n [\n [MATCH_WHITESPACE, State.DOCTYPE, TokenType.WHITESPACE],\n [MATCH_DOCTYPE_VALUE, State.DOCTYPE, TokenType.DOCTYPE_VALUE],\n [MATCH_DOCTYPE_CLOSE, State.TEXT, TokenType.DOCTYPE_CLOSE]\n ],\n \"expected doctype name\"\n );\n }\n *tokenizeTag(context) {\n function nextState(token) {\n const tagCloseToken = token;\n switch (context.contentModel) {\n case ContentModel.TEXT:\n return State.TEXT;\n case ContentModel.SCRIPT:\n if (tagCloseToken && !tagCloseToken.data[0].startsWith(\"/\")) {\n return State.SCRIPT;\n } else {\n return State.TEXT;\n }\n case ContentModel.STYLE:\n if (tagCloseToken && !tagCloseToken.data[0].startsWith(\"/\")) {\n return State.STYLE;\n } else {\n return State.TEXT;\n }\n }\n }\n yield* this.match(\n context,\n [\n [MATCH_TAG_CLOSE, nextState, TokenType.TAG_CLOSE],\n [MATCH_ATTR_START, State.ATTR, TokenType.ATTR_NAME],\n [MATCH_WHITESPACE, State.TAG, TokenType.WHITESPACE]\n ],\n 'expected attribute, \">\" or \"/>\"'\n );\n }\n *tokenizeAttr(context) {\n yield* this.match(\n context,\n [\n [MATCH_ATTR_SINGLE, State.TAG, TokenType.ATTR_VALUE],\n [MATCH_ATTR_DOUBLE, State.TAG, TokenType.ATTR_VALUE],\n [MATCH_ATTR_UNQUOTED, State.TAG, TokenType.ATTR_VALUE],\n [false, State.TAG, false]\n ],\n 'expected attribute, \">\" or \"/>\"'\n );\n }\n *tokenizeText(context) {\n yield* this.match(\n context,\n [\n [MATCH_WHITESPACE, State.TEXT, TokenType.WHITESPACE],\n [MATCH_CDATA_BEGIN, State.CDATA, false],\n [MATCH_DIRECTIVE, State.TEXT, TokenType.DIRECTIVE],\n [MATCH_CONDITIONAL, State.TEXT, TokenType.CONDITIONAL],\n [MATCH_COMMENT, State.TEXT, TokenType.COMMENT],\n [MATCH_TEMPLATING, State.TEXT, TokenType.TEMPLATING],\n [MATCH_TAG_OPEN, State.TAG, TokenType.TAG_OPEN],\n [MATCH_TEXT, State.TEXT, TokenType.TEXT],\n [MATCH_TAG_LOOKAHEAD, State.TEXT, TokenType.TEXT]\n ],\n 'expected text or \"<\"'\n );\n }\n *tokenizeCDATA(context) {\n yield* this.match(context, [[MATCH_CDATA_END, State.TEXT, false]], \"expected ]]>\");\n }\n *tokenizeScript(context) {\n yield* this.match(\n context,\n [\n [MATCH_SCRIPT_END, State.TAG, TokenType.TAG_OPEN],\n [MATCH_SCRIPT_DATA, State.SCRIPT, TokenType.SCRIPT]\n ],\n \"expected </script>\"\n );\n }\n *tokenizeStyle(context) {\n yield* this.match(\n context,\n [\n [MATCH_STYLE_END, State.TAG, TokenType.TAG_OPEN],\n [MATCH_STYLE_DATA, State.STYLE, TokenType.STYLE]\n ],\n \"expected </style>\"\n );\n }\n}\n\nconst whitespace = /(\\s+)/;\nclass AttrDelimiter extends Rule {\n documentation() {\n return {\n description: `Attribute value must not be separated by whitespace.`,\n url: \"https://html-validate.org/rules/attr-delimiter.html\"\n };\n }\n setup() {\n this.on(\"token\", (event) => {\n const { token } = event;\n if (token.type !== TokenType.ATTR_VALUE) {\n return;\n }\n const delimiter = token.data[1];\n const match = whitespace.exec(delimiter);\n if (match) {\n const location = sliceLocation(event.location, 0, delimiter.length);\n this.report(null, \"Attribute value must not be delimited by whitespace\", location);\n }\n });\n }\n}\n\nconst DEFAULT_PATTERN = \"[a-z0-9-:]+\";\nconst defaults$u = {\n pattern: DEFAULT_PATTERN,\n ignoreForeign: true\n};\nfunction generateRegexp(pattern) {\n if (Array.isArray(pattern)) {\n return new RegExp(`^(${pattern.join(\"|\")})$`, \"i\");\n } else {\n return new RegExp(`^${pattern}$`, \"i\");\n }\n}\nfunction generateMessage(name, pattern) {\n if (Array.isArray(pattern)) {\n const patterns = pattern.map((it) => `/${it}/`).join(\", \");\n return `Attribute \"${name}\" should match one of [${patterns}]`;\n } else {\n return `Attribute \"${name}\" should match /${pattern}/`;\n }\n}\nfunction generateDescription(name, pattern) {\n if (Array.isArray(pattern)) {\n return [\n `Attribute \"${name}\" should match one of the configured regular expressions:`,\n \"\",\n ...pattern.map((it) => `- \\`/${it}/\\``)\n ].join(\"\\n\");\n } else {\n return `Attribute \"${name}\" should match the regular expression \\`/${pattern}/\\``;\n }\n}\nclass AttrPattern extends Rule {\n pattern;\n constructor(options) {\n super({ ...defaults$u, ...options });\n this.pattern = generateRegexp(this.options.pattern);\n }\n static schema() {\n return {\n pattern: {\n oneOf: [{ type: \"array\", items: { type: \"string\" }, minItems: 1 }, { type: \"string\" }]\n },\n ignoreForeign: {\n type: \"boolean\"\n }\n };\n }\n documentation(context) {\n return {\n description: generateDescription(context.attr, context.pattern),\n url: \"https://html-validate.org/rules/attr-pattern.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n if (this.isIgnored(event.target)) {\n return;\n }\n if (event.originalAttribute) {\n return;\n }\n if (this.pattern.test(event.key)) {\n return;\n }\n const message = generateMessage(event.key, this.options.pattern);\n const context = {\n attr: event.key,\n pattern: this.options.pattern\n };\n this.report(event.target, message, event.keyLocation, context);\n });\n }\n isIgnored(node) {\n if (this.options.ignoreForeign) {\n return Boolean(node.meta?.foreign);\n } else {\n return false;\n }\n }\n}\n\nconst defaults$t = {\n style: \"auto\",\n unquoted: false\n};\nfunction describeError(context) {\n switch (context.error) {\n case \"style\":\n return `Attribute \\`${context.attr}\\` must use \\`${context.expected}\\` instead of \\`${context.actual}\\`.`;\n case \"unquoted\":\n return `Attribute \\`${context.attr}\\` must not be unquoted.`;\n }\n}\nfunction describeStyle(style, unquoted) {\n const description = [];\n switch (style) {\n case \"auto\" /* AUTO_QUOTE */:\n description.push(\n \"- quoted with double quotes `\\\"` unless the value contains double quotes in which case single quotes `'` should be used instead\"\n );\n break;\n case \"any\" /* ANY_QUOTE */:\n description.push(\"- quoted with single quotes `'`\");\n description.push('- quoted with double quotes `\"`');\n break;\n case \"'\" /* SINGLE_QUOTE */:\n case '\"' /* DOUBLE_QUOTE */: {\n const name = style === \"'\" /* SINGLE_QUOTE */ ? \"single\" : \"double\";\n description.push(`- quoted with ${name} quotes \\`${style}\\``);\n break;\n }\n }\n if (unquoted) {\n description.push(\"- unquoted (if applicable)\");\n }\n return `${description.join(\" or\\n\")}\n`;\n}\nclass AttrQuotes extends Rule {\n style;\n static schema() {\n return {\n style: {\n enum: [\"auto\", \"double\", \"single\", \"any\"],\n type: \"string\"\n },\n unquoted: {\n type: \"boolean\"\n }\n };\n }\n documentation(context) {\n const { style } = this;\n const { unquoted } = this.options;\n const description = [\n describeError(context),\n \"\",\n \"Under the current configuration attributes must be:\",\n \"\",\n describeStyle(style, unquoted)\n ];\n return {\n description: description.join(\"\\n\"),\n url: \"https://html-validate.org/rules/attr-quotes.html\"\n };\n }\n constructor(options) {\n super({ ...defaults$t, ...options });\n this.style = parseStyle$3(this.options.style);\n }\n setup() {\n this.on(\"attr\", (event) => {\n if (event.originalAttribute) {\n return;\n }\n if (event.value === null) {\n return;\n }\n if (!event.quote) {\n if (!this.options.unquoted) {\n const message = `Attribute \"${event.key}\" using unquoted value`;\n const context = {\n error: \"unquoted\",\n attr: event.key\n };\n this.report(event.target, message, null, context);\n }\n return;\n }\n if (this.style === \"any\" /* ANY_QUOTE */) {\n return;\n }\n const expected = this.resolveQuotemark(event.value.toString(), this.style);\n if (event.quote !== expected) {\n const message = `Attribute \"${event.key}\" used ${event.quote} instead of expected ${expected}`;\n const context = {\n error: \"style\",\n attr: event.key,\n actual: event.quote,\n expected\n };\n this.report(event.target, message, null, context);\n }\n });\n }\n resolveQuotemark(value, style) {\n if (style === \"auto\" /* AUTO_QUOTE */) {\n return value.includes('\"') ? \"'\" : '\"';\n } else {\n return style;\n }\n }\n}\nfunction parseStyle$3(style) {\n switch (style.toLowerCase()) {\n case \"auto\":\n return \"auto\" /* AUTO_QUOTE */;\n case \"double\":\n return '\"' /* DOUBLE_QUOTE */;\n case \"single\":\n return \"'\" /* SINGLE_QUOTE */;\n case \"any\":\n return \"any\" /* ANY_QUOTE */;\n /* istanbul ignore next: covered by schema validation */\n default:\n throw new ConfigError(`Invalid style \"${style}\" for \"attr-quotes\" rule`);\n }\n}\n\nclass AttrSpacing extends Rule {\n documentation() {\n return {\n description: `No space between attributes. At least one whitespace character (commonly space) must be used to separate attributes.`,\n url: \"https://html-validate.org/rules/attr-spacing.html\"\n };\n }\n setup() {\n let previousToken;\n this.on(\"token\", (event) => {\n if (event.type === TokenType.ATTR_NAME && previousToken !== TokenType.WHITESPACE) {\n this.report(null, \"No space between attributes\", event.location);\n }\n previousToken = event.type;\n });\n }\n}\n\nfunction pick(attr) {\n const result = {};\n if (typeof attr.enum !== \"undefined\") {\n result.enum = attr.enum;\n }\n if (typeof attr.boolean !== \"undefined\") {\n result.boolean = attr.boolean;\n }\n return result;\n}\nclass AttributeAllowedValues extends Rule {\n documentation(context) {\n const docs = {\n description: \"Attribute has invalid value.\",\n url: \"https://html-validate.org/rules/attribute-allowed-values.html\"\n };\n if (!context) {\n return docs;\n }\n const { allowed, attribute, element, value } = context;\n if (allowed.enum) {\n const allowedList = allowed.enum.map((value2) => {\n if (typeof value2 === \"string\") {\n return `- \\`\"${value2}\"\\``;\n } else {\n return `- \\`${value2.toString()}\\``;\n }\n });\n docs.description = [\n `The \\`<${element}>\\` element does not allow the attribute \\`${attribute}\\` to have the value \\`\"${value}\"\\`.`,\n \"\",\n \"It must match one of the following:\",\n \"\",\n ...allowedList\n ].join(\"\\n\");\n } else if (allowed.boolean) {\n docs.description = `The \\`<${context.element}>\\` attribute \\`${context.attribute}\\` must be a boolean attribute, e.g. \\`<${context.element} ${context.attribute}>\\``;\n }\n return docs;\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n const meta = node.meta;\n if (!meta?.attributes) return;\n for (const attr of node.attributes) {\n if (Validator.validateAttribute(attr, meta.attributes)) {\n continue;\n }\n const value = attr.value ? attr.value.toString() : \"\";\n const context = {\n element: node.tagName,\n attribute: attr.key,\n value,\n allowed: pick(meta.attributes[attr.key])\n };\n const message = this.getMessage(attr);\n const location = this.getLocation(attr);\n this.report(node, message, location, context);\n }\n });\n });\n }\n getMessage(attr) {\n const { key, value } = attr;\n if (value !== null) {\n return `Attribute \"${key}\" has invalid value \"${value.toString()}\"`;\n } else {\n return `Attribute \"${key}\" is missing value`;\n }\n }\n getLocation(attr) {\n return attr.valueLocation ?? attr.keyLocation;\n }\n}\n\nconst defaults$s = {\n style: \"omit\"\n};\nclass AttributeBooleanStyle extends Rule {\n hasInvalidStyle;\n constructor(options) {\n super({ ...defaults$s, ...options });\n this.hasInvalidStyle = parseStyle$2(this.options.style);\n }\n static schema() {\n return {\n style: {\n enum: [\"empty\", \"name\", \"omit\"],\n type: \"string\"\n }\n };\n }\n documentation() {\n return {\n description: \"Require a specific style when writing boolean attributes.\",\n url: \"https://html-validate.org/rules/attribute-boolean-style.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n const meta = node.meta;\n if (!meta?.attributes) return;\n for (const attr of node.attributes) {\n if (!this.isBoolean(attr, meta.attributes)) continue;\n if (attr.originalAttribute) {\n continue;\n }\n if (this.hasInvalidStyle(attr)) {\n this.report(node, reportMessage$1(attr, this.options.style), attr.keyLocation);\n }\n }\n });\n });\n }\n isBoolean(attr, rules) {\n const meta = rules[attr.key];\n return Boolean(meta?.boolean);\n }\n}\nfunction parseStyle$2(style) {\n switch (style.toLowerCase()) {\n case \"omit\":\n return (attr) => attr.value !== null;\n case \"empty\":\n return (attr) => attr.value !== \"\";\n case \"name\":\n return (attr) => attr.value !== attr.key;\n /* istanbul ignore next: covered by schema validation */\n default:\n throw new Error(`Invalid style \"${style}\" for \"attribute-boolean-style\" rule`);\n }\n}\nfunction reportMessage$1(attr, style) {\n const key = attr.key;\n switch (style.toLowerCase()) {\n case \"omit\":\n return `Attribute \"${key}\" should omit value`;\n case \"empty\":\n return `Attribute \"${key}\" value should be empty string`;\n case \"name\":\n return `Attribute \"${key}\" should be set to ${key}=\"${key}\"`;\n }\n return \"\";\n}\n\nconst defaults$r = {\n style: \"omit\"\n};\nclass AttributeEmptyStyle extends Rule {\n hasInvalidStyle;\n constructor(options) {\n super({ ...defaults$r, ...options });\n this.hasInvalidStyle = parseStyle$1(this.options.style);\n }\n static schema() {\n return {\n style: {\n enum: [\"empty\", \"omit\"],\n type: \"string\"\n }\n };\n }\n documentation() {\n return {\n description: \"Require a specific style for attributes with empty values.\",\n url: \"https://html-validate.org/rules/attribute-empty-style.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n const meta = node.meta;\n if (!meta?.attributes) return;\n for (const attr of node.attributes) {\n if (!allowsEmpty(attr, meta.attributes)) {\n continue;\n }\n if (!isEmptyValue(attr)) {\n continue;\n }\n if (!this.hasInvalidStyle(attr)) {\n continue;\n }\n this.report(node, reportMessage(attr, this.options.style), attr.keyLocation);\n }\n });\n });\n }\n}\nfunction allowsEmpty(attr, rules) {\n const meta = rules[attr.key];\n return Boolean(meta?.omit);\n}\nfunction isEmptyValue(attr) {\n if (attr.isDynamic) {\n return false;\n }\n return attr.value === null || attr.value === \"\";\n}\nfunction parseStyle$1(style) {\n switch (style.toLowerCase()) {\n case \"omit\":\n return (attr) => attr.value !== null;\n case \"empty\":\n return (attr) => attr.value !== \"\";\n /* istanbul ignore next: covered by schema validation */\n default:\n throw new Error(`Invalid style \"${style}\" for \"attribute-empty-style\" rule`);\n }\n}\nfunction reportMessage(attr, style) {\n const key = attr.key;\n switch (style.toLowerCase()) {\n case \"omit\":\n return `Attribute \"${key}\" should omit value`;\n case \"empty\":\n return `Attribute \"${key}\" value should be empty string`;\n }\n return \"\";\n}\n\nfunction ruleDescription(context) {\n const { tagName, attr, details } = context;\n return `The \\`${attr}\\` attribute cannot be used on \\`${tagName}\\` in this context: ${details}`;\n}\nclass AttributeMisuse extends Rule {\n documentation(context) {\n return {\n description: ruleDescription(context),\n url: \"https://html-validate.org/rules/attribute-misuse.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", (event) => {\n const { target } = event;\n const { meta } = target;\n if (!meta) {\n return;\n }\n for (const attr of target.attributes) {\n const key = attr.key.toLowerCase();\n this.validateAttr(target, attr, meta.attributes[key]);\n }\n });\n }\n validateAttr(node, attr, meta) {\n if (!meta?.allowed) {\n return;\n }\n const details = meta.allowed(node._adapter, attr.value);\n if (details) {\n this.report({\n node,\n message: `\"{{ attr }}\" attribute cannot be used on {{ tagName }} in this context: {{ details }}`,\n location: attr.keyLocation,\n context: {\n tagName: node.annotatedName,\n attr: attr.key,\n details\n }\n });\n }\n }\n}\n\nfunction parsePattern(pattern) {\n switch (pattern) {\n case \"kebabcase\":\n return { regexp: /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, description: pattern };\n case \"camelcase\":\n return { regexp: /^[a-z][a-zA-Z0-9]*$/, description: pattern };\n case \"snakecase\":\n case \"underscore\":\n return { regexp: /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/, description: pattern };\n case \"bem\": {\n const block = \"[a-z][a-z0-9]*(?:-[a-z0-9]+)*\";\n const element = \"(?:__[a-z0-9]+(?:-[a-z0-9]+)*)?\";\n const modifier = \"(?:--[a-z0-9]+(?:-[a-z0-9]+)*){0,2}\";\n return {\n regexp: new RegExp(`^${block}${element}${modifier}$`),\n description: pattern\n };\n }\n default: {\n const regexp = new RegExp(pattern);\n return { regexp, description: regexp.toString() };\n }\n }\n}\n\nfunction toArray$2(value) {\n return Array.isArray(value) ? value : [value];\n}\nclass BasePatternRule extends Rule {\n /** Attribute being tested */\n attr;\n /** Parsed configured patterns */\n patterns;\n /**\n * @param attr - Attribute holding the value.\n * @param options - Rule options with defaults expanded.\n */\n constructor(attr, options) {\n super(options);\n const { pattern } = this.options;\n this.attr = attr;\n this.patterns = toArray$2(pattern).map((it) => parsePattern(it));\n }\n static schema() {\n return {\n pattern: {\n oneOf: [{ type: \"array\", items: { type: \"string\" }, minItems: 1 }, { type: \"string\" }]\n }\n };\n }\n description(context) {\n const { attr, patterns } = this;\n const { value } = context;\n const lead = patterns.length === 1 ? `The \\`${attr}\\` attribute value \\`\"${value}\"\\` does not match the configured pattern.` : `The \\`${attr}\\` attribute value \\`\"${value}\"\\` does not match either of the configured patterns.`;\n return [\n lead,\n \"For consistency within the codebase the `${attr}` is required to match one or more of the following patterns:\",\n \"\",\n ...patterns.map((it) => `- \\`${it.description}\\``)\n ].join(\"\\n\");\n }\n validateValue(node, value, location) {\n const { attr, patterns } = this;\n const matches = patterns.some((it) => it.regexp.test(value));\n if (matches) {\n return;\n }\n const allowed = naturalJoin(patterns.map((it) => `\"${it.description}\"`));\n const message = patterns.length === 1 ? `${attr} \"${value}\" does not match the configured pattern ${allowed}` : `${attr} \"${value}\" does not match either of the configured patterns: ${allowed}`;\n this.report({\n node,\n message,\n location,\n context: {\n value\n }\n });\n }\n}\n\nconst defaults$q = {\n pattern: \"kebabcase\"\n};\nclass ClassPattern extends BasePatternRule {\n constructor(options) {\n super(\"class\", { ...defaults$q, ...options });\n }\n static schema() {\n return BasePatternRule.schema();\n }\n documentation(context) {\n return {\n description: this.description(context),\n url: \"https://html-validate.org/rules/class-pattern.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n const { target, key, value, valueLocation } = event;\n if (key.toLowerCase() !== \"class\") {\n return;\n }\n const classes = new DOMTokenList(value, valueLocation);\n for (const { item, location } of classes.iterator()) {\n this.validateValue(target, item, location);\n }\n });\n }\n}\n\nclass CloseAttr extends Rule {\n documentation() {\n return {\n description: \"HTML disallows end tags to have attributes.\",\n url: \"https://html-validate.org/rules/close-attr.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n if (!event.target) {\n return;\n }\n if (event.previous === event.target) {\n return;\n }\n const node = event.target;\n if (Object.keys(node.attributes).length > 0) {\n const first = node.attributes[0];\n this.report(null, \"Close tags cannot have attributes\", first.keyLocation);\n }\n });\n }\n}\n\nfunction* ancestors(node) {\n if (!node) {\n return;\n }\n let ancestor = node;\n while (ancestor && !ancestor.isRootElement()) {\n yield ancestor;\n ancestor = ancestor.parent;\n }\n if (ancestor) {\n yield ancestor;\n }\n}\nfunction findAncestor(node, predicate) {\n for (const ancestor of ancestors(node)) {\n if (predicate(ancestor)) {\n return ancestor;\n }\n }\n return null;\n}\nclass CloseOrder extends Rule {\n documentation() {\n return {\n description: \"HTML requires elements to be closed in the same order as they were opened.\",\n url: \"https://html-validate.org/rules/close-order.html\"\n };\n }\n setup() {\n let reported;\n this.on(\"parse:begin\", () => {\n reported = /* @__PURE__ */ new Set();\n });\n this.on(\"tag:end\", (event) => {\n const current = event.target;\n const active = event.previous;\n if (current) {\n return;\n }\n for (const ancestor of ancestors(active)) {\n if (ancestor.isRootElement() || reported.has(ancestor.unique)) {\n continue;\n }\n this.report(ancestor, `Unclosed element '<${ancestor.tagName}>'`, ancestor.location);\n reported.add(ancestor.unique);\n }\n });\n this.on(\"tag:end\", (event) => {\n const current = event.target;\n const active = event.previous;\n if (!current) {\n return;\n }\n if (current.voidElement) {\n return;\n }\n if (active.closed === NodeClosed.ImplicitClosed) {\n return;\n }\n if (active.isRootElement()) {\n const location = {\n filename: current.location.filename,\n line: current.location.line,\n column: current.location.column,\n offset: current.location.offset,\n size: current.tagName.length + 1\n };\n this.report(null, `Stray end tag '</${current.tagName}>'`, location);\n return;\n }\n if (current.tagName === active.tagName) {\n return;\n }\n const ancestor = findAncestor(active.parent, (node) => node.is(current.tagName));\n if (ancestor && !ancestor.isRootElement()) {\n for (const element of ancestors(active)) {\n if (ancestor.isSameNode(element)) {\n break;\n }\n if (reported.has(element.unique)) {\n continue;\n }\n this.report(element, `Unclosed element '<${element.tagName}>'`, element.location);\n reported.add(element.unique);\n }\n this.report(\n null,\n `End tag '</${current.tagName}>' seen but there were open elements`,\n current.location\n );\n reported.add(ancestor.unique);\n } else {\n this.report(null, `Stray end tag '</${current.tagName}>'`, current.location);\n }\n });\n }\n}\n\nconst defaults$p = {\n include: null,\n exclude: null\n};\nclass Deprecated extends Rule {\n constructor(options) {\n super({ ...defaults$p, ...options });\n }\n static schema() {\n return {\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n }\n };\n }\n documentation(context) {\n const text = [];\n if (context.source) {\n const source = prettySource(context.source);\n const message = `The \\`<$tagname>\\` element is deprecated ${source} and should not be used in new code.`;\n text.push(message);\n } else {\n const message = `The \\`<$tagname>\\` element is deprecated and should not be used in new code.`;\n text.push(message);\n }\n if (context.documentation) {\n text.push(context.documentation);\n }\n const doc = {\n description: text.map((cur) => cur.replace(/\\$tagname/g, context.tagName)).join(\"\\n\\n\"),\n url: \"https://html-validate.org/rules/deprecated.html\"\n };\n return doc;\n }\n setup() {\n this.on(\"tag:start\", (event) => {\n const node = event.target;\n if (node.meta === null) {\n return;\n }\n const deprecated = node.meta.deprecated;\n if (!deprecated) {\n return;\n }\n if (this.isKeywordIgnored(node.tagName)) {\n return;\n }\n const location = sliceLocation(event.location, 1);\n if (typeof deprecated === \"string\") {\n this.reportString(deprecated, node, location);\n } else if (typeof deprecated === \"boolean\") {\n this.reportBoolean(node, location);\n } else {\n this.reportObject(deprecated, node, location);\n }\n });\n }\n reportString(deprecated, node, location) {\n const context = { tagName: node.tagName };\n const message = `<${node.tagName}> is deprecated: ${deprecated}`;\n this.report(node, message, location, context);\n }\n reportBoolean(node, location) {\n const context = { tagName: node.tagName };\n const message = `<${node.tagName}> is deprecated`;\n this.report(node, message, location, context);\n }\n reportObject(deprecated, node, location) {\n const context = { ...deprecated, tagName: node.tagName };\n const notice = deprecated.message ? `: ${deprecated.message}` : \"\";\n const message = `<${node.tagName}> is deprecated${notice}`;\n this.report(node, message, location, context);\n }\n}\nfunction prettySource(source) {\n const match = /html(\\d)(\\d)?/.exec(source);\n if (match) {\n const [, ...parts] = match;\n const version = parts.filter(Boolean).join(\".\");\n return `in HTML ${version}`;\n }\n switch (source) {\n case \"whatwg\":\n return \"in HTML Living Standard\";\n case \"non-standard\":\n return \"and non-standard\";\n default:\n return `by ${source}`;\n }\n}\n\nclass DeprecatedRule extends Rule {\n documentation(context) {\n const preamble = context ? `The rule \"${context}\"` : \"This rule\";\n return {\n description: `${preamble} is deprecated and should not be used any longer, consult documentation for further information.`,\n url: \"https://html-validate.org/rules/deprecated-rule.html\"\n };\n }\n setup() {\n this.on(\"config:ready\", (event) => {\n for (const rule of this.getDeprecatedRules(event)) {\n if (rule.getSeverity() > Severity.DISABLED) {\n this.report(null, `Usage of deprecated rule \"${rule.name}\"`, null, rule.name);\n }\n }\n });\n }\n getDeprecatedRules(event) {\n const rules = Object.values(event.rules);\n return rules.filter((rule) => rule.deprecated);\n }\n}\n\nlet NoStyleTag$1 = class NoStyleTag extends Rule {\n documentation() {\n return {\n description: [\n 'HTML5 documents should use the \"html\" doctype (short `form`, not legacy string):',\n \"\",\n \"```html\",\n \"<!DOCTYPE html>\",\n \"```\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/doctype-html.html\"\n };\n }\n setup() {\n this.on(\"doctype\", (event) => {\n const doctype = event.value.toLowerCase();\n if (doctype !== \"html\") {\n this.report(null, 'doctype should be \"html\"', event.valueLocation);\n }\n });\n }\n};\n\nconst defaults$o = {\n style: \"uppercase\"\n};\nclass DoctypeStyle extends Rule {\n constructor(options) {\n super({ ...defaults$o, ...options });\n }\n static schema() {\n return {\n style: {\n enum: [\"lowercase\", \"uppercase\"],\n type: \"string\"\n }\n };\n }\n documentation(context) {\n return {\n description: `While DOCTYPE is case-insensitive in the standard the current configuration requires it to be ${context.style}`,\n url: \"https://html-validate.org/rules/doctype-style.html\"\n };\n }\n setup() {\n this.on(\"doctype\", (event) => {\n if (this.options.style === \"uppercase\" && event.tag !== \"DOCTYPE\") {\n this.report(null, \"DOCTYPE should be uppercase\", event.location, this.options);\n }\n if (this.options.style === \"lowercase\" && event.tag !== \"doctype\") {\n this.report(null, \"DOCTYPE should be lowercase\", event.location, this.options);\n }\n });\n }\n}\n\nconst defaults$n = {\n style: \"lowercase\"\n};\nclass ElementCase extends Rule {\n style;\n constructor(options) {\n super({ ...defaults$n, ...options });\n this.style = new CaseStyle(this.options.style, \"element-case\");\n }\n static schema() {\n const styleEnum = [\"lowercase\", \"uppercase\", \"pascalcase\", \"camelcase\"];\n return {\n style: {\n anyOf: [\n {\n enum: styleEnum,\n type: \"string\"\n },\n {\n items: {\n enum: styleEnum,\n type: \"string\"\n },\n type: \"array\"\n }\n ]\n }\n };\n }\n documentation() {\n const { style } = this.options;\n return {\n description: Array.isArray(style) ? [`Element tagname must be in one of:`, \"\", ...style.map((it) => `- ${it}`)].join(\"\\n\") : `Element tagname must be in ${style}.`,\n url: \"https://html-validate.org/rules/element-case.html\"\n };\n }\n setup() {\n this.on(\"tag:start\", (event) => {\n const { target, location } = event;\n this.validateCase(target, location);\n });\n this.on(\"tag:end\", (event) => {\n const { target, previous } = event;\n this.validateMatchingCase(previous, target);\n });\n }\n validateCase(target, targetLocation) {\n const letters = target.tagName.replace(/[^a-z]+/gi, \"\");\n if (!this.style.match(letters)) {\n const location = sliceLocation(targetLocation, 1);\n this.report(target, `Element \"${target.tagName}\" should be ${this.style.name}`, location);\n }\n }\n validateMatchingCase(start, end) {\n if (!start || !end || !start.tagName || !end.tagName) {\n return;\n }\n if (start.tagName.toLowerCase() !== end.tagName.toLowerCase()) {\n return;\n }\n if (start.tagName !== end.tagName) {\n this.report(start, \"Start and end tag must not differ in casing\", end.location);\n }\n }\n}\n\nconst defaults$m = {\n pattern: \"^[a-z][a-z0-9\\\\-._]*-[a-z0-9\\\\-._]*$\",\n whitelist: [],\n blacklist: []\n};\nclass ElementName extends Rule {\n pattern;\n constructor(options) {\n super({ ...defaults$m, ...options });\n this.pattern = new RegExp(this.options.pattern);\n }\n static schema() {\n return {\n blacklist: {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n pattern: {\n type: \"string\"\n },\n whitelist: {\n items: {\n type: \"string\"\n },\n type: \"array\"\n }\n };\n }\n documentation(context) {\n return {\n description: this.documentationMessages(context).join(\"\\n\"),\n url: \"https://html-validate.org/rules/element-name.html\"\n };\n }\n documentationMessages(context) {\n if (context.blacklist.includes(context.tagName)) {\n return [\n `<${context.tagName}> is blacklisted by the project configuration.`,\n \"\",\n \"The following names are blacklisted:\",\n ...context.blacklist.map((cur) => `- ${cur}`)\n ];\n }\n if (context.pattern !== defaults$m.pattern) {\n return [\n `<${context.tagName}> is not a valid element name. This project is configured to only allow names matching the following regular expression:`,\n \"\",\n `- \\`${context.pattern}\\``\n ];\n }\n return [\n `<${context.tagName}> is not a valid element name. If this is a custom element HTML requires the name to follow these rules:`,\n \"\",\n \"- The name must begin with `a-z`\",\n \"- The name must include a hyphen `-`\",\n \"- It may include alphanumerical characters `a-z0-9` or hyphens `-`, dots `.` or underscores `_`.\"\n ];\n }\n setup() {\n const xmlns = /^(.+):.+$/;\n this.on(\"tag:start\", (event) => {\n const target = event.target;\n const tagName = target.tagName;\n const location = sliceLocation(event.location, 1);\n const context = {\n tagName,\n pattern: this.options.pattern,\n blacklist: this.options.blacklist\n };\n if (this.options.blacklist.includes(tagName)) {\n this.report(target, `<${tagName}> element is blacklisted`, location, context);\n }\n if (target.meta) {\n return;\n }\n if (xmlns.exec(tagName)) {\n return;\n }\n if (this.options.whitelist.includes(tagName)) {\n return;\n }\n if (!tagName.match(this.pattern)) {\n this.report(target, `<${tagName}> is not a valid element name`, location, context);\n }\n });\n }\n}\n\nfunction isNativeTemplate(node) {\n const { tagName, meta } = node;\n return Boolean(tagName === \"template\" && meta?.templateRoot && meta?.scriptSupporting);\n}\nfunction getTransparentChildren(node, transparent) {\n if (typeof transparent === \"boolean\") {\n return node.childElements;\n } else {\n return node.childElements.filter((it) => {\n return transparent.some((category) => {\n return Validator.validatePermittedCategory(it, category, false);\n });\n });\n }\n}\nfunction getRuleDescription$2(context) {\n switch (context.kind) {\n case \"content\" /* CONTENT */:\n return [\n `The \\`${context.child}\\` element is not permitted as content under the parent \\`${context.parent}\\` element.`\n ];\n case \"descendant\" /* DESCENDANT */:\n return [\n `The \\`${context.child}\\` element is not permitted as a descendant of the \\`${context.ancestor}\\` element.`\n ];\n }\n}\nclass ElementPermittedContent extends Rule {\n documentation(context) {\n return {\n description: getRuleDescription$2(context).join(\"\\n\"),\n url: \"https://html-validate.org/rules/element-permitted-content.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n const parent = node.parent;\n if (!parent) {\n return;\n }\n [\n () => this.validatePermittedContent(node, parent),\n () => this.validatePermittedDescendant(node, parent)\n ].some((fn) => fn());\n });\n });\n }\n validatePermittedContent(cur, parent) {\n if (!parent.meta) {\n return false;\n }\n const rules = parent.meta.permittedContent ?? null;\n return this.validatePermittedContentImpl(cur, parent, rules);\n }\n validatePermittedContentImpl(cur, parent, rules) {\n if (!Validator.validatePermitted(cur, rules)) {\n const child = `<${cur.tagName}>`;\n const message = `${child} element is not permitted as content under ${parent.annotatedName}`;\n const context = {\n kind: \"content\" /* CONTENT */,\n parent: parent.annotatedName,\n child\n };\n this.report(cur, message, null, context);\n return true;\n }\n if (cur.meta?.transparent) {\n const children = getTransparentChildren(cur, cur.meta.transparent);\n return children.map((child) => {\n return this.validatePermittedContentImpl(child, parent, rules);\n }).some(Boolean);\n }\n return false;\n }\n validatePermittedDescendant(node, parent) {\n for (let cur = parent; cur && !cur.isRootElement() && !isNativeTemplate(cur); cur = /* istanbul ignore next */\n cur.parent ?? null) {\n const meta = cur.meta;\n if (!meta) {\n continue;\n }\n const rules = meta.permittedDescendants;\n if (!rules) {\n continue;\n }\n if (Validator.validatePermitted(node, rules)) {\n continue;\n }\n const child = `<${node.tagName}>`;\n const ancestor = cur.annotatedName;\n const message = `${child} element is not permitted as a descendant of ${ancestor}`;\n const context = {\n kind: \"descendant\" /* DESCENDANT */,\n ancestor,\n child\n };\n this.report(node, message, null, context);\n return true;\n }\n return false;\n }\n}\n\nclass ElementPermittedOccurrences extends Rule {\n documentation() {\n return {\n description: \"Some elements may only be used a fixed amount of times in given context.\",\n url: \"https://html-validate.org/rules/element-permitted-occurrences.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n if (!node.meta) {\n return;\n }\n const rules = node.meta.permittedContent;\n if (!rules) {\n return;\n }\n Validator.validateOccurrences(\n node.childElements,\n rules,\n (child, category) => {\n this.report(\n child,\n `Element <${category}> can only appear once under ${node.annotatedName}`\n );\n }\n );\n });\n });\n }\n}\n\nclass ElementPermittedOrder extends Rule {\n documentation() {\n return {\n description: \"Some elements has a specific order the children must use.\",\n url: \"https://html-validate.org/rules/element-permitted-order.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n if (!node.meta) {\n return;\n }\n const rules = node.meta.permittedOrder;\n if (!rules) {\n return;\n }\n Validator.validateOrder(\n node.childElements,\n rules,\n (child, prev) => {\n this.report(\n child,\n `Element <${child.tagName}> must be used before <${prev.tagName}> in this context`\n );\n }\n );\n });\n });\n }\n}\n\nfunction isCategoryOrTag(value) {\n return typeof value === \"string\";\n}\nfunction isCategory$1(value) {\n return value.startsWith(\"@\");\n}\nfunction formatCategoryOrTag(value) {\n return isCategory$1(value) ? value.slice(1) : `<${value}>`;\n}\nfunction isFormattable(rules) {\n return rules.length > 0 && rules.every(isCategoryOrTag);\n}\nfunction getRuleDescription$1(context) {\n const { child, parent, rules } = context;\n const preamble = `The \\`${child}\\` element cannot have a \\`${parent}\\` element as parent.`;\n if (isFormattable(rules)) {\n const allowed = rules.filter(isCategoryOrTag).map((it) => {\n if (isCategory$1(it)) {\n return `- any ${it.slice(1)} element`;\n } else {\n return `- \\`<${it}>\\``;\n }\n });\n return [preamble, \"\", \"Allowed parents one of:\", \"\", ...allowed];\n } else {\n return [preamble];\n }\n}\nfunction formatMessage$1(node, parent, rules) {\n const nodeName = node.annotatedName;\n const parentName = parent.annotatedName;\n if (!isFormattable(rules)) {\n return `${nodeName} element cannot have ${parentName} element as parent`;\n }\n const allowed = naturalJoin(rules.filter(isCategoryOrTag).map(formatCategoryOrTag));\n return `${nodeName} element requires a ${allowed} element as parent`;\n}\nclass ElementPermittedParent extends Rule {\n documentation(context) {\n return {\n description: getRuleDescription$1(context).join(\"\\n\"),\n url: \"https://html-validate.org/rules/element-permitted-parent.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n const parent = node.parent;\n if (!parent) {\n return;\n }\n if (parent.isRootElement()) {\n return;\n }\n if (parent.tagName === node.tagName) {\n return;\n }\n const rules = node.meta?.permittedParent;\n if (!rules) {\n return false;\n }\n if (Validator.validatePermitted(parent, rules)) {\n return;\n }\n const message = formatMessage$1(node, parent, rules);\n const context = {\n parent: parent.annotatedName,\n child: node.annotatedName,\n rules\n };\n this.report(node, message, null, context);\n });\n });\n }\n}\n\nfunction isTagnameOnly(value) {\n return Boolean(/^[a-zA-Z0-9-]+$/.exec(value));\n}\nfunction getRuleDescription(context) {\n const escaped = context.ancestor.map((it) => `\\`${it}\\``);\n return [`The \\`${context.child}\\` element requires a ${naturalJoin(escaped)} ancestor.`];\n}\nclass ElementRequiredAncestor extends Rule {\n documentation(context) {\n return {\n description: getRuleDescription(context).join(\"\\n\"),\n url: \"https://html-validate.org/rules/element-required-ancestor.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n const parent = node.parent;\n if (!parent) {\n return;\n }\n this.validateRequiredAncestors(node);\n });\n });\n }\n validateRequiredAncestors(node) {\n if (!node.meta) {\n return;\n }\n const rules = node.meta.requiredAncestors;\n if (!rules) {\n return;\n }\n if (Validator.validateAncestors(node, rules)) {\n return;\n }\n const ancestor = rules.map((it) => isTagnameOnly(it) ? `<${it}>` : `\"${it}\"`);\n const child = `<${node.tagName}>`;\n const message = `<${node.tagName}> element requires a ${naturalJoin(ancestor)} ancestor`;\n const context = {\n ancestor,\n child\n };\n this.report(node, message, null, context);\n }\n}\n\nclass ElementRequiredAttributes extends Rule {\n documentation(context) {\n const docs = {\n description: \"Element is missing a required attribute\",\n url: \"https://html-validate.org/rules/element-required-attributes.html\"\n };\n if (context) {\n docs.description = `The <${context.element}> element is required to have a \"${context.attribute}\" attribute.`;\n }\n return docs;\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.previous;\n const meta = node.meta;\n if (!meta?.attributes) {\n return;\n }\n for (const [key, attr] of Object.entries(meta.attributes)) {\n if (!attr.required) {\n continue;\n }\n if (node.hasAttribute(key)) continue;\n const context = {\n element: node.tagName,\n attribute: key\n };\n this.report(\n node,\n `${node.annotatedName} is missing required \"${key}\" attribute`,\n node.location,\n context\n );\n }\n });\n }\n}\n\nfunction isCategory(value) {\n return value.startsWith(\"@\");\n}\nclass ElementRequiredContent extends Rule {\n documentation(context) {\n const { element, missing } = context;\n return {\n description: `The \\`${element}\\` element requires a \\`${missing}\\` to be present as content.`,\n url: \"https://html-validate.org/rules/element-required-content.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n walk.depthFirst(doc, (node) => {\n if (!node.meta) {\n return;\n }\n const rules = node.meta.requiredContent;\n if (!rules) {\n return;\n }\n for (const missing of Validator.validateRequiredContent(node, rules)) {\n const context = {\n element: node.annotatedName,\n missing: `<${missing}>`\n };\n const tag = isCategory(missing) ? `${missing.slice(1)} element` : `<${missing}>`;\n const message = `${node.annotatedName} element must have ${tag} as content`;\n this.report(node, message, null, context);\n }\n });\n });\n }\n}\n\nconst selector = [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].join(\",\");\nfunction hasImgAltText$1(node) {\n if (node.is(\"img\")) {\n return hasAltText(node);\n } else if (node.is(\"svg\")) {\n return node.textContent.trim() !== \"\";\n }\n return false;\n}\nclass EmptyHeading extends Rule {\n documentation() {\n return {\n description: `Assistive technology such as screen readers require textual content in headings. Whitespace only is considered empty.`,\n url: \"https://html-validate.org/rules/empty-heading.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", ({ document }) => {\n const headings = document.querySelectorAll(selector);\n for (const heading of headings) {\n this.validateHeading(heading);\n }\n });\n }\n validateHeading(heading) {\n const images = heading.querySelectorAll(\"img, svg\");\n for (const child of images) {\n if (hasImgAltText$1(child)) {\n return;\n }\n }\n switch (classifyNodeText(heading, { ignoreHiddenRoot: true })) {\n case TextClassification.DYNAMIC_TEXT:\n case TextClassification.STATIC_TEXT:\n break;\n case TextClassification.EMPTY_TEXT:\n this.report(heading, `<${heading.tagName}> cannot be empty, must have text content`);\n break;\n }\n }\n}\n\nclass EmptyTitle extends Rule {\n documentation() {\n return {\n description: [\n \"The `<title>` element cannot be empty, it must have textual content.\",\n \"\",\n \"It is used to describe the document and is shown in the browser tab and titlebar.\",\n \"WCAG and SEO requires a descriptive title and preferably unique within the site.\",\n \"\",\n \"Whitespace is ignored.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/empty-title.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.previous;\n if (node.tagName !== \"title\") return;\n switch (classifyNodeText(node)) {\n case TextClassification.DYNAMIC_TEXT:\n case TextClassification.STATIC_TEXT:\n break;\n case TextClassification.EMPTY_TEXT:\n {\n const message = `<${node.tagName}> cannot be empty, must have text content`;\n this.report(node, message, node.location);\n }\n break;\n }\n });\n }\n}\n\nconst defaults$l = {\n allowArrayBrackets: true,\n allowCheckboxDefault: true,\n shared: [\"radio\", \"button\", \"reset\", \"submit\"]\n};\nconst UNIQUE_CACHE_KEY = Symbol(\"form-elements-unique\");\nconst SHARED_CACHE_KEY = Symbol(\"form-elements-shared\");\nfunction haveName(name) {\n return typeof name === \"string\" && name !== \"\";\n}\nfunction allowSharedName(node, shared) {\n const type = node.getAttribute(\"type\");\n return Boolean(type?.valueMatches(shared, false));\n}\nfunction isInputHidden(element) {\n return element.is(\"input\") && element.getAttributeValue(\"type\") === \"hidden\";\n}\nfunction isInputCheckbox(element) {\n return element.is(\"input\") && element.getAttributeValue(\"type\") === \"checkbox\";\n}\nfunction isCheckboxWithDefault(control, previous, options) {\n const { allowCheckboxDefault } = options;\n if (!allowCheckboxDefault) {\n return false;\n }\n if (!previous.potentialHiddenDefault) {\n return false;\n }\n if (!isInputCheckbox(control)) {\n return false;\n }\n return true;\n}\nfunction getDocumentation(context) {\n const trailer = \"Each form control must have a unique name.\";\n const { name } = context;\n switch (context.kind) {\n case \"duplicate\":\n return [`Duplicate form control name \"${name}\"`, trailer].join(\"\\n\");\n case \"mix\":\n return [\n `Form control name cannot mix regular name \"{{ name }}\" with array brackets \"{{ name }}[]\"`,\n trailer\n ].join(\"\\n\");\n }\n}\nclass FormDupName extends Rule {\n constructor(options) {\n super({ ...defaults$l, ...options });\n }\n static schema() {\n return {\n allowArrayBrackets: {\n type: \"boolean\"\n },\n allowCheckboxDefault: {\n type: \"boolean\"\n },\n shared: {\n type: \"array\",\n items: {\n enum: [\"radio\", \"checkbox\", \"submit\", \"button\", \"reset\"]\n }\n }\n };\n }\n documentation(context) {\n return {\n description: getDocumentation(context),\n url: \"https://html-validate.org/rules/form-dup-name.html\"\n };\n }\n setup() {\n const selector = this.getSelector();\n const { shared } = this.options;\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const controls = document.querySelectorAll(selector);\n const [sharedControls, uniqueControls] = partition(controls, (it) => {\n return allowSharedName(it, shared);\n });\n for (const control of uniqueControls) {\n const attr = control.getAttribute(\"name\");\n const name = attr?.value;\n if (!attr || !haveName(name)) {\n continue;\n }\n const group = control.closest(\"form, template\") ?? document.root;\n this.validateUniqueName(control, group, attr, name);\n }\n for (const control of sharedControls) {\n const attr = control.getAttribute(\"name\");\n const name = attr?.value;\n if (!attr || !haveName(name)) {\n continue;\n }\n const group = control.closest(\"form, template\") ?? document.root;\n this.validateSharedName(control, group, attr, name);\n }\n });\n }\n validateUniqueName(control, group, attr, name) {\n const elements = this.getUniqueElements(group);\n const { allowArrayBrackets } = this.options;\n if (allowArrayBrackets) {\n const isarray = name.endsWith(\"[]\");\n const basename = isarray ? name.slice(0, -2) : name;\n const details = elements.get(basename);\n if (details && details.array !== isarray) {\n const context = {\n name: basename,\n kind: \"mix\"\n };\n this.report({\n node: control,\n location: attr.valueLocation,\n message: 'Cannot mix \"{{ name }}[]\" and \"{{ name }}\"',\n context\n });\n return;\n }\n if (!details && isarray) {\n elements.set(basename, {\n array: true,\n potentialHiddenDefault: false\n });\n }\n if (isarray) {\n return;\n }\n }\n const previous = elements.get(name);\n if (previous) {\n if (isCheckboxWithDefault(control, previous, this.options)) {\n previous.potentialHiddenDefault = false;\n return;\n }\n const context = {\n name,\n kind: \"duplicate\"\n };\n this.report({\n node: control,\n location: attr.valueLocation,\n message: 'Duplicate form control name \"{{ name }}\"',\n context\n });\n } else {\n elements.set(name, {\n array: false,\n potentialHiddenDefault: isInputHidden(control)\n });\n }\n }\n validateSharedName(control, group, attr, name) {\n const uniqueElements = this.getUniqueElements(group);\n const sharedElements = this.getSharedElements(group);\n const type = control.getAttributeValue(\"type\") ?? \"\";\n if (uniqueElements.has(name) || sharedElements.has(name) && sharedElements.get(name) !== type) {\n const context = {\n name,\n kind: \"duplicate\"\n };\n this.report({\n node: control,\n location: attr.valueLocation,\n message: 'Duplicate form control name \"{{ name }}\"',\n context\n });\n }\n sharedElements.set(name, type);\n }\n getSelector() {\n const tags = this.getTagsWithProperty(\"formAssociated\").filter((it) => {\n return this.isListedElement(it);\n });\n return tags.join(\", \");\n }\n isListedElement(tagName) {\n const meta = this.getMetaFor(tagName);\n if (!meta?.formAssociated) {\n return false;\n }\n return meta.formAssociated.listed;\n }\n getUniqueElements(group) {\n const existing = group.cacheGet(UNIQUE_CACHE_KEY);\n if (existing) {\n return existing;\n } else {\n const elements = /* @__PURE__ */ new Map();\n group.cacheSet(UNIQUE_CACHE_KEY, elements);\n return elements;\n }\n }\n getSharedElements(group) {\n const existing = group.cacheGet(SHARED_CACHE_KEY);\n if (existing) {\n return existing;\n } else {\n const elements = /* @__PURE__ */ new Map();\n group.cacheSet(SHARED_CACHE_KEY, elements);\n return elements;\n }\n }\n}\n\nconst defaults$k = {\n allowMultipleH1: false,\n minInitialRank: \"h1\",\n sectioningRoots: [\"dialog\", '[role=\"dialog\"]', '[role=\"alertdialog\"]']\n};\nfunction isRelevant$5(event) {\n const node = event.target;\n return Boolean(node.meta?.heading);\n}\nfunction extractLevel(node) {\n const match = /^[hH](\\d)$/.exec(node.tagName);\n if (match) {\n return parseInt(match[1], 10);\n } else {\n return null;\n }\n}\nfunction parseMaxInitial(value) {\n if (value === false || value === \"any\") {\n return 6;\n }\n const match = /^h(\\d)$/.exec(value);\n if (!match) {\n return 1;\n }\n return parseInt(match[1], 10);\n}\nclass HeadingLevel extends Rule {\n minInitialRank;\n sectionRoots;\n stack = [];\n constructor(options) {\n super({ ...defaults$k, ...options });\n this.minInitialRank = parseMaxInitial(this.options.minInitialRank);\n this.sectionRoots = this.options.sectioningRoots.map((it) => new Compound(it));\n this.stack.push({\n node: null,\n current: 0,\n h1Count: 0\n });\n }\n static schema() {\n return {\n allowMultipleH1: {\n type: \"boolean\"\n },\n minInitialRank: {\n enum: [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"any\", false]\n },\n sectioningRoots: {\n items: {\n type: \"string\"\n },\n type: \"array\"\n }\n };\n }\n documentation() {\n const text = [];\n const modality = this.minInitialRank > 1 ? \"should\" : \"must\";\n text.push(`Headings ${modality} start at <h1> and can only increase one level at a time.`);\n text.push(\"The headings should form a table of contents and make sense on its own.\");\n if (!this.options.allowMultipleH1) {\n text.push(\"\");\n text.push(\n \"Under the current configuration only a single <h1> can be present at a time in the document.\"\n );\n }\n return {\n description: text.join(\"\\n\"),\n url: \"https://html-validate.org/rules/heading-level.html\"\n };\n }\n setup() {\n this.on(\"tag:start\", isRelevant$5, (event) => {\n this.onTagStart(event);\n });\n this.on(\"tag:ready\", (event) => {\n this.onTagReady(event);\n });\n this.on(\"tag:end\", (event) => {\n this.onTagClose(event);\n });\n }\n onTagStart(event) {\n const level = extractLevel(event.target);\n if (!level) return;\n const root = this.getCurrentRoot();\n if (!this.options.allowMultipleH1 && level === 1) {\n if (root.h1Count >= 1) {\n const location = sliceLocation(event.location, 1);\n this.report(event.target, `Multiple <h1> are not allowed`, location);\n return;\n }\n root.h1Count++;\n }\n if (level <= root.current) {\n root.current = level;\n return;\n }\n this.checkLevelIncrementation(root, event, level);\n root.current = level;\n }\n /**\n * Validate heading level was only incremented by one.\n */\n checkLevelIncrementation(root, event, level) {\n const expected = root.current + 1;\n if (level === expected) {\n return;\n }\n const isInitial = this.stack.length === 1 && expected === 1;\n if (isInitial && level <= this.minInitialRank) {\n return;\n }\n const location = sliceLocation(event.location, 1);\n if (root.current > 0) {\n const expectedTag = `<h${String(expected)}>`;\n const actualTag = `<h${String(level)}>`;\n const msg = `Heading level can only increase by one, expected ${expectedTag} but got ${actualTag}`;\n this.report(event.target, msg, location);\n } else {\n this.checkInitialLevel(event, location, level, expected);\n }\n }\n checkInitialLevel(event, location, level, expected) {\n const expectedTag = `<h${String(expected)}>`;\n const actualTag = `<h${String(level)}>`;\n if (this.stack.length === 1) {\n const msg = this.minInitialRank > 1 ? `Initial heading level must be <h${String(this.minInitialRank)}> or higher rank but got ${actualTag}` : `Initial heading level must be ${expectedTag} but got ${actualTag}`;\n this.report(event.target, msg, location);\n } else {\n const prevRoot = this.getPrevRoot();\n const prevRootExpected = prevRoot.current + 1;\n if (level > prevRootExpected) {\n if (expected === prevRootExpected) {\n const msg = `Initial heading level for sectioning root must be ${expectedTag} but got ${actualTag}`;\n this.report(event.target, msg, location);\n } else {\n const msg = `Initial heading level for sectioning root must be between ${expectedTag} and <h${String(prevRootExpected)}> but got ${actualTag}`;\n this.report(event.target, msg, location);\n }\n }\n }\n }\n /**\n * Check if the current element is a sectioning root and push a new root entry\n * on the stack if it is.\n */\n onTagReady(event) {\n const { target } = event;\n if (this.isSectioningRoot(target)) {\n this.stack.push({\n node: target.unique,\n current: 0,\n h1Count: 0\n });\n }\n }\n /**\n * Check if the current element being closed is the element which opened the\n * current sectioning root, in which case the entry is popped from the stack.\n */\n onTagClose(event) {\n const { previous: target } = event;\n const root = this.getCurrentRoot();\n if (target.unique !== root.node) {\n return;\n }\n this.stack.pop();\n }\n getPrevRoot() {\n return this.stack[this.stack.length - 2];\n }\n getCurrentRoot() {\n return this.stack[this.stack.length - 1];\n }\n isSectioningRoot(node) {\n const context = {\n scope: node\n };\n return this.sectionRoots.some((it) => it.match(node, context));\n }\n}\n\nconst FOCUSABLE_CACHE = Symbol(isFocusable.name);\nfunction isDisabled(element, meta) {\n if (!meta.formAssociated?.disablable) {\n return false;\n }\n const disabled = element.matches(\"[disabled]\");\n if (disabled) {\n return true;\n }\n const fieldset = element.closest(\"fieldset[disabled]\");\n if (fieldset) {\n return true;\n }\n return false;\n}\nfunction isFocusableImpl(element) {\n if (isHTMLHidden(element) || isInert(element) || isStyleHidden(element)) {\n return false;\n }\n const { tabIndex, meta } = element;\n if (tabIndex !== null) {\n return tabIndex >= 0;\n }\n if (!meta) {\n return false;\n }\n if (isDisabled(element, meta)) {\n return false;\n }\n return Boolean(meta.focusable);\n}\nfunction isFocusable(element) {\n const cached = element.cacheGet(FOCUSABLE_CACHE);\n if (cached) {\n return cached;\n }\n return element.cacheSet(FOCUSABLE_CACHE, isFocusableImpl(element));\n}\n\nclass HiddenFocusable extends Rule {\n documentation(context) {\n const byParent = context === \"parent\" ? \" In this case it is being hidden by an ancestor with `aria-hidden.`\" : \"\";\n return {\n description: [\n `\\`aria-hidden\\` cannot be used on focusable elements.${byParent}`,\n \"\",\n \"When focusable elements are hidden with `aria-hidden` they are still reachable using conventional means such as a mouse or keyboard but won't be exposed to assistive technology (AT).\",\n \"This is often confusing for users of AT such as screenreaders.\",\n \"\",\n \"To fix this either:\",\n \" - Remove `aria-hidden`.\",\n \" - Remove the element from the DOM instead.\",\n ' - Use `tabindex=\"-1\"` to remove the element from tab order.',\n \" - Use `hidden`, `inert` or similar means to hide or disable the element.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/hidden-focusable.html\"\n };\n }\n setup() {\n const focusable = this.getTagsWithProperty(\"focusable\");\n const selector = [\"[tabindex]\", ...focusable].join(\",\");\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n for (const element of document.querySelectorAll(selector)) {\n if (isFocusable(element) && isAriaHidden(element)) {\n this.reportElement(element);\n }\n }\n });\n }\n reportElement(element) {\n const attribute = element.getAttribute(\"aria-hidden\");\n const message = attribute ? `aria-hidden cannot be used on focusable elements` : `aria-hidden cannot be used on focusable elements (hidden by ancestor element)`;\n const location = attribute ? attribute.keyLocation : element.location;\n const context = attribute ? \"self\" : \"parent\";\n this.report({\n node: element,\n message,\n location,\n context\n });\n }\n}\n\nconst defaults$j = {\n pattern: \"kebabcase\"\n};\nclass IdPattern extends BasePatternRule {\n constructor(options) {\n super(\"id\", { ...defaults$j, ...options });\n }\n static schema() {\n return BasePatternRule.schema();\n }\n documentation(context) {\n return {\n description: this.description(context),\n url: \"https://html-validate.org/rules/id-pattern.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n const { target, key, value, valueLocation } = event;\n if (key.toLowerCase() !== \"id\") {\n return;\n }\n if (value instanceof DynamicValue) {\n return;\n }\n if (value === null) {\n return;\n }\n this.validateValue(target, value, valueLocation);\n });\n }\n}\n\nconst restricted = /* @__PURE__ */ new Map([\n [\"accept\", [\"file\"]],\n [\"alt\", [\"image\"]],\n [\"capture\", [\"file\"]],\n [\"checked\", [\"checkbox\", \"radio\"]],\n [\"dirname\", [\"text\", \"search\"]],\n [\"height\", [\"image\"]],\n [\n \"list\",\n [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime-local\",\n \"number\",\n \"range\",\n \"color\"\n ]\n ],\n [\"max\", [\"date\", \"month\", \"week\", \"time\", \"datetime-local\", \"number\", \"range\"]],\n [\"maxlength\", [\"text\", \"search\", \"url\", \"tel\", \"email\", \"password\"]],\n [\"min\", [\"date\", \"month\", \"week\", \"time\", \"datetime-local\", \"number\", \"range\"]],\n [\"minlength\", [\"text\", \"search\", \"url\", \"tel\", \"email\", \"password\"]],\n [\"multiple\", [\"email\", \"file\"]],\n [\"pattern\", [\"text\", \"search\", \"url\", \"tel\", \"email\", \"password\"]],\n [\"placeholder\", [\"text\", \"search\", \"url\", \"tel\", \"email\", \"password\", \"number\"]],\n [\n \"readonly\",\n [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime-local\",\n \"number\"\n ]\n ],\n [\n \"required\",\n [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime-local\",\n \"number\",\n \"checkbox\",\n \"radio\",\n \"file\"\n ]\n ],\n [\"size\", [\"text\", \"search\", \"url\", \"tel\", \"email\", \"password\"]],\n [\"src\", [\"image\"]],\n [\"step\", [\"date\", \"month\", \"week\", \"time\", \"datetime-local\", \"number\", \"range\"]],\n [\"width\", [\"image\"]]\n]);\nfunction isInput(event) {\n const { target } = event;\n return target.is(\"input\");\n}\nclass InputAttributes extends Rule {\n documentation(context) {\n const { attribute, type } = context;\n const summary = `Attribute \\`${attribute}\\` is not allowed on \\`<input type=\"${type}\">\\`\n`;\n const details = `\\`${attribute}\\` can only be used when \\`type\\` is:`;\n const list = restricted.get(attribute)?.map((it) => `- \\`${it}\\``) ?? [];\n return {\n description: [summary, details, ...list].join(\"\\n\"),\n url: \"https://html-validate.org/rules/input-attributes.html\"\n };\n }\n setup() {\n this.on(\"tag:ready\", isInput, (event) => {\n const { target } = event;\n const type = target.getAttribute(\"type\");\n if (!type || type.isDynamic || !type.value) {\n return;\n }\n const typeValue = type.value.toString();\n for (const attr of target.attributes) {\n const validTypes = restricted.get(attr.key);\n if (!validTypes) {\n continue;\n }\n if (validTypes.includes(typeValue)) {\n continue;\n }\n const context = {\n attribute: attr.key,\n type: typeValue\n };\n const message = `Attribute \"${attr.key}\" is not allowed on <input type=\"${typeValue}\">`;\n this.report(target, message, attr.keyLocation, context);\n }\n });\n }\n}\n\nconst HAS_ACCESSIBLE_TEXT_CACHE = Symbol(hasAccessibleName.name);\nfunction isHidden(node, context) {\n const { reference } = context;\n if (reference?.isSameNode(node)) {\n return false;\n } else {\n return !inAccessibilityTree(node);\n }\n}\nfunction hasImgAltText(node, context) {\n if (node.is(\"img\")) {\n return hasAltText(node);\n } else if (node.is(\"svg\")) {\n return node.textContent.trim() !== \"\";\n } else {\n for (const img of node.querySelectorAll(\"img, svg\")) {\n const hasName = hasAccessibleNameImpl(img, context);\n if (hasName) {\n return true;\n }\n }\n return false;\n }\n}\nfunction hasLabel(node) {\n const value = node.getAttributeValue(\"aria-label\") ?? \"\";\n return Boolean(value.trim());\n}\nfunction isLabelledby(node, context) {\n const { document, reference } = context;\n if (reference) {\n return false;\n }\n const ariaLabelledby = node.ariaLabelledby;\n if (ariaLabelledby instanceof DynamicValue) {\n return true;\n }\n if (ariaLabelledby === null) {\n return false;\n }\n return ariaLabelledby.some((id) => {\n const selector = generateIdSelector(id);\n return document.querySelectorAll(selector).some((child) => {\n return hasAccessibleNameImpl(child, {\n document,\n reference: child\n });\n });\n });\n}\nfunction hasAccessibleNameImpl(current, context) {\n const { reference } = context;\n if (isHidden(current, context)) {\n return false;\n }\n const ignoreHiddenRoot = Boolean(reference?.isSameNode(current));\n const text = classifyNodeText(current, { accessible: true, ignoreHiddenRoot });\n if (text !== TextClassification.EMPTY_TEXT) {\n return true;\n }\n if (hasImgAltText(current, context)) {\n return true;\n }\n if (hasLabel(current)) {\n return true;\n }\n if (isLabelledby(current, context)) {\n return true;\n }\n return false;\n}\nfunction hasAccessibleName(document, current) {\n if (current.cacheExists(HAS_ACCESSIBLE_TEXT_CACHE)) {\n return Boolean(current.cacheGet(HAS_ACCESSIBLE_TEXT_CACHE));\n }\n const result = hasAccessibleNameImpl(current, {\n document,\n reference: null\n });\n return current.cacheSet(HAS_ACCESSIBLE_TEXT_CACHE, result);\n}\n\nfunction isIgnored(node) {\n if (node.is(\"input\")) {\n const type = node.getAttributeValue(\"type\")?.toLowerCase();\n const ignored = [\"hidden\", \"submit\", \"reset\", \"button\"];\n return Boolean(type && ignored.includes(type));\n }\n return false;\n}\nclass InputMissingLabel extends Rule {\n documentation() {\n return {\n description: [\n \"Each form element must have an a label or accessible name.\",\n 'Typically this is implemented using a `<label for=\"..\">` element describing the purpose of the form element.',\n \"\",\n \"This can be resolved in one of the following ways:\",\n \"\",\n ' - Use an associated `<label for=\"..\">` element.',\n \" - Use a nested `<label>` as parent element.\",\n \" - Use `aria-label` or `aria-labelledby` attributes.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/input-missing-label.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const root = event.document;\n for (const elem of root.querySelectorAll(\"input, textarea, select\")) {\n this.validateInput(root, elem);\n }\n });\n }\n validateInput(root, elem) {\n if (!inAccessibilityTree(elem)) {\n return;\n }\n if (isIgnored(elem)) {\n return;\n }\n if (hasAccessibleName(root, elem)) {\n return;\n }\n let label = [];\n if ((label = findLabelById(root, elem.id)).length > 0) {\n this.validateLabel(root, elem, label);\n return;\n }\n if ((label = findLabelByParent(elem)).length > 0) {\n this.validateLabel(root, elem, label);\n return;\n }\n if (elem.hasAttribute(\"aria-label\")) {\n this.report(elem, `<${elem.tagName}> element has aria-label but label has no text`);\n } else if (elem.hasAttribute(\"aria-labelledby\")) {\n this.report(\n elem,\n `<${elem.tagName}> element has aria-labelledby but referenced element has no text`\n );\n } else {\n this.report(elem, `<${elem.tagName}> element does not have a <label>`);\n }\n }\n /**\n * Reports error if none of the labels are accessible.\n */\n validateLabel(root, elem, labels) {\n const visible = labels.filter(inAccessibilityTree);\n if (visible.length === 0) {\n this.report(elem, `<${elem.tagName}> element has <label> but <label> element is hidden`);\n return;\n }\n if (!labels.some((label) => hasAccessibleName(root, label))) {\n this.report(elem, `<${elem.tagName}> element has <label> but <label> has no text`);\n }\n }\n}\nfunction findLabelById(root, id) {\n if (!id) return [];\n return root.querySelectorAll(`label[for=\"${id}\"]`);\n}\nfunction findLabelByParent(el) {\n let cur = el.parent;\n while (cur) {\n if (cur.is(\"label\")) {\n return [cur];\n }\n cur = cur.parent;\n }\n return [];\n}\n\nconst defaults$i = {\n maxlength: 70\n};\nclass LongTitle extends Rule {\n maxlength;\n constructor(options) {\n super({ ...defaults$i, ...options });\n this.maxlength = this.options.maxlength;\n }\n static schema() {\n return {\n maxlength: {\n type: \"number\"\n }\n };\n }\n documentation() {\n return {\n description: `Search engines truncates titles with long text, possibly down-ranking the page in the process.`,\n url: \"https://html-validate.org/rules/long-title.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.previous;\n if (node.tagName !== \"title\") return;\n const text = node.textContent;\n if (text.length > this.maxlength) {\n this.report(node, `title text cannot be longer than ${String(this.maxlength)} characters`);\n }\n });\n }\n}\n\nconst defaults$h = {\n allowLongDelay: false\n};\nclass MetaRefresh extends Rule {\n constructor(options) {\n super({ ...defaults$h, ...options });\n }\n documentation() {\n return {\n description: `Meta refresh directive must use the \\`0;url=...\\` format. Non-zero values for time interval is disallowed as people with assistive technology might be unable to read and understand the page content before automatically reloading. For the same reason skipping the url is disallowed as it would put the browser in an infinite loop reloading the same page over and over again.`,\n url: \"https://html-validate.org/rules/meta-refresh.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", ({ target }) => {\n if (!target.is(\"meta\")) {\n return;\n }\n const httpEquiv = target.getAttributeValue(\"http-equiv\");\n if (httpEquiv !== \"refresh\") {\n return;\n }\n const content = target.getAttribute(\"content\");\n if (!content?.value || content.isDynamic) {\n return;\n }\n const location = content.valueLocation;\n const value = parseContent(content.value.toString());\n if (!value) {\n this.report(target, \"Malformed meta refresh directive\", location);\n return;\n }\n const { delay, url } = value;\n this.validateDelay(target, location, delay, url);\n });\n }\n validateDelay(target, location, delay, url) {\n const { allowLongDelay } = this.options;\n if (allowLongDelay && delay > 72e3) {\n return;\n }\n if (!url && delay === 0) {\n this.report(target, \"Don't use instant meta refresh to reload the page\", location);\n return;\n }\n if (delay !== 0) {\n const message = allowLongDelay ? \"Meta refresh must be instant (0 second delay) or greater than 20 hours (72000 second delay)\" : \"Meta refresh must be instant (0 second delay)\";\n this.report(target, message, location);\n }\n }\n}\nfunction parseContent(text) {\n const match = /^(\\d+)(?:\\s*;\\s*url=(.*))?/i.exec(text);\n if (match) {\n return {\n delay: parseInt(match[1], 10),\n url: match[2]\n };\n } else {\n return null;\n }\n}\n\nfunction getName(attr) {\n const name = attr.value;\n if (!name || name instanceof DynamicValue) {\n return null;\n }\n return name;\n}\nclass MapDupName extends Rule {\n documentation() {\n return {\n description: \"`<map>` must have a unique name, it cannot be the same name as another `<map>` element\",\n url: \"https://html-validate.org/rules/map-dup-name.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const maps = document.querySelectorAll(\"map[name]\");\n const names = /* @__PURE__ */ new Set();\n for (const map of maps) {\n const attr = map.getAttribute(\"name\");\n if (!attr) {\n continue;\n }\n const name = getName(attr);\n if (!name) {\n continue;\n }\n if (names.has(name)) {\n this.report({\n node: map,\n message: `<map> name must be unique`,\n location: attr.keyLocation\n });\n }\n names.add(name);\n }\n });\n }\n}\n\nfunction isRelevant$4(event) {\n return event.target.is(\"map\");\n}\nfunction hasStaticValue(attr) {\n return Boolean(attr && !(attr.value instanceof DynamicValue));\n}\nclass MapIdName extends Rule {\n documentation() {\n return {\n description: \"When the `id` attribute is present on a `<map>` element it must be equal to the `name` attribute.\",\n url: \"https://html-validate.org/rules/map-id-name.html\"\n };\n }\n setup() {\n this.on(\"tag:ready\", isRelevant$4, (event) => {\n const { target } = event;\n const id = target.getAttribute(\"id\");\n const name = target.getAttribute(\"name\");\n if (!hasStaticValue(id) || !hasStaticValue(name)) {\n return;\n }\n if (id.value === name.value) {\n return;\n }\n this.report({\n node: event.target,\n message: `\"id\" and \"name\" attribute must be the same on <map> elements`,\n location: id.valueLocation ?? name.valueLocation\n });\n });\n }\n}\n\nclass MissingDoctype extends Rule {\n documentation() {\n return {\n description: \"Requires that the document contains a doctype.\",\n url: \"https://html-validate.org/rules/missing-doctype.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const dom = event.document;\n if (!dom.doctype) {\n this.report(dom.root, \"Document is missing doctype\");\n }\n });\n }\n}\n\nclass MultipleLabeledControls extends Rule {\n labelable = \"\";\n documentation() {\n return {\n description: `A \\`<label>\\` element can only be associated with one control at a time.`,\n url: \"https://html-validate.org/rules/multiple-labeled-controls.html\"\n };\n }\n setup() {\n this.labelable = this.getTagsWithProperty(\"labelable\").join(\",\");\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const labels = document.querySelectorAll(\"label\");\n for (const label of labels) {\n const numControls = this.getNumLabledControls(label);\n if (numControls <= 1) {\n continue;\n }\n this.report(label, \"<label> is associated with multiple controls\", label.location);\n }\n });\n }\n getNumLabledControls(src) {\n const controls = src.querySelectorAll(this.labelable).filter((node) => node.meta?.labelable).map((node) => node.id);\n const attr = src.getAttribute(\"for\");\n if (!attr || attr.isDynamic || !attr.value) {\n return controls.length;\n }\n const redundant = controls.includes(attr.value.toString());\n if (redundant) {\n return controls.length;\n }\n return controls.length + 1;\n }\n}\n\nconst defaults$g = {\n pattern: \"camelcase\"\n};\nclass NamePattern extends BasePatternRule {\n constructor(options) {\n super(\"name\", { ...defaults$g, ...options });\n }\n static schema() {\n return BasePatternRule.schema();\n }\n documentation(context) {\n return {\n description: this.description(context),\n url: \"https://html-validate.org/rules/name-pattern.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n const { target, key, value, valueLocation } = event;\n const { meta } = target;\n if (!meta?.formAssociated?.listed) {\n return;\n }\n if (key.toLowerCase() !== \"name\") {\n return;\n }\n if (value instanceof DynamicValue) {\n return;\n }\n if (value === null) {\n return;\n }\n const name = value.endsWith(\"[]\") ? value.slice(0, -2) : value;\n this.validateValue(target, name, valueLocation);\n });\n }\n}\n\nconst abstractRoles = [\n \"command\",\n \"composite\",\n \"input\",\n \"landmark\",\n \"range\",\n \"roletype\",\n \"section\",\n \"sectionhead\",\n \"select\",\n \"structure\",\n \"widget\",\n \"window\"\n];\nfunction isRelevant$3(event) {\n return event.key === \"role\";\n}\nclass NoAbstractRole extends Rule {\n documentation(context) {\n return {\n description: [\n `Role \\`\"${context.role}\"\\` is abstract and must not be used.`,\n \"\",\n \"WAI-ARIA defines a list of [abstract roles](https://www.w3.org/TR/wai-aria-1.2/#abstract_roles) which cannot be used by authors:\",\n \"\",\n ...abstractRoles.map((it) => `- \\`\"${it}\"\\``),\n \"\",\n `Use one of the defined subclass roles for \\`\"${context.role}\"\\` instead.`\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/no-abstract-role.html\"\n };\n }\n setup() {\n this.on(\"attr\", isRelevant$3, (event) => {\n const roles = event.value;\n if (!roles || roles instanceof DynamicValue) {\n return;\n }\n const tokens = new DOMTokenList(roles, event.valueLocation);\n for (const { item: role, location } of tokens.iterator()) {\n if (!abstractRoles.includes(role)) {\n continue;\n }\n this.report({\n node: event.target,\n message: `Role \"{{ role }}\" is abstract and must not be used`,\n location,\n context: {\n role\n }\n });\n }\n });\n }\n}\n\nconst defaults$f = {\n include: null,\n exclude: null\n};\nclass NoAutoplay extends Rule {\n constructor(options) {\n super({ ...defaults$f, ...options });\n }\n documentation(context) {\n return {\n description: [\n `The autoplay attribute is not allowed on <${context.tagName}>.`,\n \"Autoplaying content can be disruptive for users and has accessibilty concerns.\",\n \"Prefer to let the user control playback.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/no-autoplay.html\"\n };\n }\n static schema() {\n return {\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n }\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n if (event.key.toLowerCase() !== \"autoplay\") {\n return;\n }\n if (event.value && event.value instanceof DynamicValue) {\n return;\n }\n const tagName = event.target.tagName;\n if (this.isKeywordIgnored(tagName)) {\n return;\n }\n const context = { tagName };\n const location = event.location;\n this.report(\n event.target,\n `The autoplay attribute is not allowed on <${tagName}>`,\n location,\n context\n );\n });\n }\n}\n\nclass NoConditionalComment extends Rule {\n documentation() {\n return {\n description: \"Microsoft Internet Explorer previously supported using special HTML comments (conditional comments) for targeting specific versions of IE but since IE 10 it is deprecated and not supported in standards mode.\",\n url: \"https://html-validate.org/rules/no-conditional-comment.html\"\n };\n }\n setup() {\n this.on(\"conditional\", (event) => {\n this.report(event.parent, \"Use of conditional comments are deprecated\", event.location);\n });\n }\n}\n\nclass NoDeprecatedAttr extends Rule {\n documentation() {\n return {\n description: \"HTML5 deprecated many old attributes.\",\n url: \"https://html-validate.org/rules/no-deprecated-attr.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n const node = event.target;\n const meta = node.meta;\n const attr = event.key.toLowerCase();\n if (meta === null) {\n return;\n }\n const metaAttribute = meta.attributes[attr];\n if (!metaAttribute) {\n return;\n }\n const deprecated = metaAttribute.deprecated;\n if (deprecated) {\n this.report(\n node,\n `Attribute \"${event.key}\" is deprecated on <${node.tagName}> element`,\n event.keyLocation\n );\n }\n });\n }\n}\n\nclass NoDupAttr extends Rule {\n documentation() {\n return {\n description: \"HTML disallows two or more attributes with the same (case-insensitive) name.\",\n url: \"https://html-validate.org/rules/no-dup-attr.html\"\n };\n }\n setup() {\n let attr = {};\n this.on(\"tag:start\", () => {\n attr = {};\n });\n this.on(\"attr\", (event) => {\n if (event.originalAttribute) {\n return;\n }\n const name = event.key.toLowerCase();\n if (name in attr) {\n this.report(event.target, `Attribute \"${name}\" duplicated`, event.keyLocation);\n }\n attr[event.key] = true;\n });\n }\n}\n\nclass NoDupClass extends Rule {\n documentation() {\n return {\n description: \"Prevents unnecessary duplication of class names.\",\n url: \"https://html-validate.org/rules/no-dup-class.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n if (event.key.toLowerCase() !== \"class\") {\n return;\n }\n const classes = new DOMTokenList(event.value, event.valueLocation);\n const unique = /* @__PURE__ */ new Set();\n classes.forEach((cur, index) => {\n if (unique.has(cur)) {\n const location = classes.location(index);\n this.report(event.target, `Class \"${cur}\" duplicated`, location);\n }\n unique.add(cur);\n });\n });\n }\n}\n\nconst CACHE_KEY = Symbol(\"no-dup-id\");\nclass NoDupID extends Rule {\n documentation() {\n return {\n description: \"The ID of an element must be unique.\",\n url: \"https://html-validate.org/rules/no-dup-id.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const rootExisting = getExisting(document.root, document.root);\n const useRootExisting = !document.querySelector(\"template\");\n const elements = document.querySelectorAll(\"[id]\");\n for (const el of elements) {\n const attr = el.getAttribute(\"id\");\n if (!attr) {\n continue;\n }\n if (!attr.value) {\n continue;\n }\n if (attr.isDynamic) {\n continue;\n }\n const id = attr.value.toString();\n const existing = useRootExisting ? rootExisting : getExisting(el, document.root);\n if (existing.has(id)) {\n this.report(el, `Duplicate ID \"${id}\"`, attr.valueLocation);\n continue;\n }\n existing.add(id);\n }\n });\n }\n}\nfunction getExisting(element, root) {\n const group = element.closest(\"template\") ?? root;\n const existing = group.cacheGet(CACHE_KEY);\n if (existing) {\n return existing;\n } else {\n const existing2 = /* @__PURE__ */ new Set();\n return group.cacheSet(CACHE_KEY, existing2);\n }\n}\n\nfunction isRelevant$2(event) {\n return event.target.is(\"button\");\n}\nclass NoImplicitButtonType extends Rule {\n documentation() {\n return {\n description: [\n \"`<button>` is missing recommended `type` attribute\",\n \"\",\n \"When the `type` attribute is omitted it defaults to `submit`.\",\n \"Submit buttons are triggered when a keyboard user presses <kbd>Enter</kbd>.\",\n \"\",\n \"As this may or may not be inteded this rule enforces that the `type` attribute be explicitly set to one of the valid types:\",\n \"\",\n \"- `button` - a generic button.\",\n \"- `submit` - a submit button.\",\n \"- `reset`- a button to reset form fields.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/no-implicit-button-type.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", isRelevant$2, (event) => {\n const { target } = event;\n const attr = target.getAttribute(\"type\");\n if (!attr) {\n this.report({\n node: event.target,\n message: `<button> is missing recommended \"type\" attribute`\n });\n }\n });\n }\n}\n\nfunction isRelevant$1(event) {\n return event.target.is(\"input\");\n}\nclass NoImplicitInputType extends Rule {\n documentation() {\n return {\n description: [\"`<input>` is missing recommended `type` attribute\"].join(\"\\n\"),\n url: \"https://html-validate.org/rules/no-implicit-input-type.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", isRelevant$1, (event) => {\n const { target } = event;\n const attr = target.getAttribute(\"type\");\n if (!attr) {\n this.report({\n node: event.target,\n message: `<input> is missing recommended \"type\" attribute`\n });\n }\n });\n }\n}\n\nclass NoImplicitClose extends Rule {\n documentation() {\n return {\n description: `Some elements in HTML has optional end tags. When an optional tag is omitted a browser must handle it as if the end tag was present.\n\nOmitted end tags can be ambigious for humans to read and many editors have trouble formatting the markup.`,\n url: \"https://html-validate.org/rules/no-implicit-close.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const closed = event.previous;\n const by = event.target;\n if (!by) {\n return;\n }\n if (closed.closed !== NodeClosed.ImplicitClosed) {\n return;\n }\n const parent = closed.parent;\n const closedByParent = parent && parent.tagName === by.tagName;\n const closedByDocument = closedByParent && parent.isRootElement();\n const sameTag = closed.tagName === by.tagName;\n if (closedByDocument) {\n this.report(\n closed,\n `Element <${closed.tagName}> is implicitly closed by document ending`,\n closed.location\n );\n } else if (closedByParent) {\n this.report(\n closed,\n `Element <${closed.tagName}> is implicitly closed by parent </${by.tagName}>`,\n closed.location\n );\n } else if (sameTag) {\n this.report(\n closed,\n `Element <${closed.tagName}> is implicitly closed by sibling`,\n closed.location\n );\n } else {\n this.report(\n closed,\n `Element <${closed.tagName}> is implicitly closed by adjacent <${by.tagName}>`,\n closed.location\n );\n }\n });\n }\n}\n\nconst defaults$e = {\n include: null,\n exclude: null,\n allowedProperties: [\"display\"]\n};\nclass NoInlineStyle extends Rule {\n constructor(options) {\n super({ ...defaults$e, ...options });\n }\n static schema() {\n return {\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n allowedProperties: {\n items: {\n type: \"string\"\n },\n type: \"array\"\n }\n };\n }\n documentation() {\n const text = [\n \"Inline style is not allowed.\\n\",\n \"Inline style is a sign of unstructured CSS. Use class or ID with a separate stylesheet.\\n\"\n ];\n if (this.options.allowedProperties.length > 0) {\n text.push(\"Under the current configuration the following CSS properties are allowed:\\n\");\n text.push(this.options.allowedProperties.map((it) => `- \\`${it}\\``).join(\"\\n\"));\n }\n return {\n description: text.join(\"\\n\"),\n url: \"https://html-validate.org/rules/no-inline-style.html\"\n };\n }\n setup() {\n this.on(\n \"attr\",\n (event) => this.isRelevant(event),\n (event) => {\n const { value } = event;\n if (this.allPropertiesAllowed(value)) {\n return;\n }\n this.report(event.target, \"Inline style is not allowed\");\n }\n );\n }\n isRelevant(event) {\n if (event.key !== \"style\") {\n return false;\n }\n const { include, exclude } = this.options;\n const key = event.originalAttribute ?? event.key;\n if (include && !include.includes(key)) {\n return false;\n }\n if (exclude?.includes(key)) {\n return false;\n }\n return true;\n }\n allPropertiesAllowed(value) {\n const allowProperties = this.options.allowedProperties;\n if (allowProperties.length === 0) {\n return false;\n }\n const declarations = Object.keys(parseCssDeclaration(value));\n return declarations.length > 0 && declarations.every((it) => {\n return allowProperties.includes(it);\n });\n }\n}\n\nconst ARIA = [\n { property: \"aria-activedescendant\", isList: false },\n { property: \"aria-controls\", isList: true },\n { property: \"aria-describedby\", isList: true },\n { property: \"aria-details\", isList: false },\n { property: \"aria-errormessage\", isList: false },\n { property: \"aria-flowto\", isList: true },\n { property: \"aria-labelledby\", isList: true },\n { property: \"aria-owns\", isList: true }\n];\nfunction idMissing(document, id) {\n const nodes = document.querySelectorAll(generateIdSelector(id));\n return nodes.length === 0;\n}\nclass NoMissingReferences extends Rule {\n documentation(context) {\n return {\n description: `The element ID \"${context.value}\" referenced by the ${context.key} attribute must point to an existing element.`,\n url: \"https://html-validate.org/rules/no-missing-references.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const document = event.document;\n for (const node of document.querySelectorAll(\"label[for]\")) {\n const attr = node.getAttribute(\"for\");\n this.validateReference(document, node, attr, false);\n }\n for (const node of document.querySelectorAll(\"input[list]\")) {\n const attr = node.getAttribute(\"list\");\n this.validateReference(document, node, attr, false);\n }\n for (const { property, isList } of ARIA) {\n for (const node of document.querySelectorAll(`[${property}]`)) {\n const attr = node.getAttribute(property);\n this.validateReference(document, node, attr, isList);\n }\n }\n });\n }\n validateReference(document, node, attr, isList) {\n if (!attr) {\n return;\n }\n const value = attr.value;\n if (value instanceof DynamicValue || value === null || value === \"\") {\n return;\n }\n if (isList) {\n this.validateList(document, node, attr, value);\n } else {\n this.validateSingle(document, node, attr, value);\n }\n }\n validateSingle(document, node, attr, id) {\n if (idMissing(document, id)) {\n const context = { key: attr.key, value: id };\n this.report(node, `Element references missing id \"${id}\"`, attr.valueLocation, context);\n }\n }\n validateList(document, node, attr, values) {\n const parsed = new DOMTokenList(values, attr.valueLocation);\n for (const entry of parsed.iterator()) {\n const id = entry.item;\n if (idMissing(document, id)) {\n const context = { key: attr.key, value: id };\n this.report(node, `Element references missing id \"${id}\"`, entry.location, context);\n }\n }\n }\n}\n\nclass NoMultipleMain extends Rule {\n documentation() {\n return {\n description: [\n \"Only a single visible `<main>` element can be present at in a document at a time.\",\n \"\",\n \"Multiple `<main>` can be present in the DOM as long the others are hidden using the HTML5 `hidden` attribute.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/no-multiple-main.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const main = document.querySelectorAll(\"main\").filter((cur) => !cur.hasAttribute(\"hidden\"));\n main.shift();\n for (const elem of main) {\n this.report(elem, \"Multiple <main> elements present in document\");\n }\n });\n }\n}\n\nconst defaults$d = {\n relaxed: false\n};\nconst textRegexp = /([<>]|&(?![a-zA-Z0-9#]+;))/g;\nconst unquotedAttrRegexp = /([<>\"'=`]|&(?![a-zA-Z0-9#]+;))/g;\nconst matchTemplate = /^(<%.*?%>|<\\?.*?\\?>|<\\$.*?\\$>)$/s;\nconst replacementTable = {\n '\"': \""\",\n \"&\": \"&\",\n \"'\": \"'\",\n \"<\": \"<\",\n \"=\": \"=\",\n \">\": \">\",\n \"`\": \"`\"\n};\nclass NoRawCharacters extends Rule {\n relaxed;\n constructor(options) {\n super({ ...defaults$d, ...options });\n this.relaxed = this.options.relaxed;\n }\n static schema() {\n return {\n relaxed: {\n type: \"boolean\"\n }\n };\n }\n documentation() {\n return {\n description: `Some characters such as \\`<\\`, \\`>\\` and \\`&\\` hold special meaning in HTML and must be escaped using a character reference (html entity).`,\n url: \"https://html-validate.org/rules/no-raw-characters.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", (event) => {\n const node = event.target;\n for (const child of node.childNodes) {\n if (child.nodeType !== NodeType.TEXT_NODE) {\n continue;\n }\n if (matchTemplate.exec(child.textContent)) {\n continue;\n }\n this.findRawChars(node, child.textContent, child.location, textRegexp);\n }\n });\n this.on(\"attr\", (event) => {\n const { meta } = event;\n if (!event.value) {\n return;\n }\n if (event.quote) {\n return;\n }\n if (meta?.boolean) {\n return;\n }\n this.findRawChars(\n event.target,\n event.value.toString(),\n event.valueLocation,\n // eslint-disable-line @typescript-eslint/no-non-null-assertion -- technical debt, valueLocation is always set if a value is provided\n unquotedAttrRegexp\n );\n });\n }\n /**\n * Find raw special characters and report as errors.\n *\n * @param text - The full text to find unescaped raw characters in.\n * @param location - Location of text.\n * @param regexp - Regexp pattern to match using.\n */\n findRawChars(node, text, location, regexp) {\n let match;\n do {\n match = regexp.exec(text);\n if (match) {\n const char = match[0];\n if (this.relaxed && char === \"&\") {\n continue;\n }\n const replacement = replacementTable[char];\n const charLocation = sliceLocation(location, match.index, match.index + 1);\n this.report(node, `Raw \"${char}\" must be encoded as \"${replacement}\"`, charLocation);\n }\n } while (match);\n }\n}\n\nconst selectors$1 = [\"input[aria-label]\", \"textarea[aria-label]\", \"select[aria-label]\"];\nclass NoRedundantAriaLabel extends Rule {\n documentation() {\n return {\n description: \"`aria-label` is redundant when an associated `<label>` element containing the same text exists.\",\n url: \"https://html-validate.org/rules/no-redundant-aria-label.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const elements = document.querySelectorAll(selectors$1.join(\",\"));\n for (const element of elements) {\n const ariaLabel = element.getAttribute(\"aria-label\");\n const id = element.id;\n if (!id) {\n continue;\n }\n const label = document.querySelector(`label[for=\"${id}\"]`);\n if (!ariaLabel || !label || label.textContent.trim() !== ariaLabel.value) {\n continue;\n }\n const message = \"aria-label is redundant when label containing same text exists\";\n this.report({\n message,\n node: element,\n location: ariaLabel.keyLocation\n });\n }\n });\n }\n}\n\nclass NoRedundantFor extends Rule {\n documentation() {\n return {\n description: `When the \\`<label>\\` element wraps the labelable control the \\`for\\` attribute is redundant and better left out.`,\n url: \"https://html-validate.org/rules/no-redundant-for.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", (event) => {\n const { target } = event;\n if (target.tagName !== \"label\") {\n return;\n }\n const attr = target.getAttribute(\"for\");\n if (!attr || !isStaticAttribute(attr)) {\n return;\n }\n const id = attr.value;\n if (!id) {\n return;\n }\n const control = target.querySelector(generateIdSelector(id));\n if (!control) {\n return;\n }\n this.report(target, 'Redundant \"for\" attribute', attr.keyLocation);\n });\n }\n}\n\nclass NoRedundantRole extends Rule {\n documentation(context) {\n const { role, tagName } = context;\n return {\n description: `Using the \\`${role}\\` role is redundant as it is already implied by the \\`<${tagName}>\\` element.`,\n url: \"https://html-validate.org/rules/no-redundant-role.html\"\n };\n }\n setup() {\n this.on(\"tag:ready\", (event) => {\n const { target } = event;\n const role = target.getAttribute(\"role\");\n if (!role?.value || role.value instanceof DynamicValue) {\n return;\n }\n const { meta } = target;\n if (!meta) {\n return;\n }\n const implicitRole = meta.aria.implicitRole(target._adapter);\n if (!implicitRole) {\n return;\n }\n if (role.value !== implicitRole) {\n return;\n }\n const context = {\n tagName: target.tagName,\n role: role.value\n };\n this.report(\n event.target,\n `Redundant role \"${role.value}\" on <${target.tagName}>`,\n role.valueLocation,\n context\n );\n });\n }\n}\n\nconst xmlns = /^(.+):.+$/;\nconst defaults$c = {\n ignoreForeign: true,\n ignoreXML: true\n};\nclass NoSelfClosing extends Rule {\n constructor(options) {\n super({ ...defaults$c, ...options });\n }\n static schema() {\n return {\n ignoreForeign: {\n type: \"boolean\"\n },\n ignoreXML: {\n type: \"boolean\"\n }\n };\n }\n documentation(tagName) {\n tagName = tagName || \"element\";\n return {\n description: `Self-closing elements are disallowed. Use regular end tag <${tagName}></${tagName}> instead of self-closing <${tagName}/>.`,\n url: \"https://html-validate.org/rules/no-self-closing.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const active = event.previous;\n if (!isRelevant(active, this.options)) {\n return;\n }\n this.validateElement(active);\n });\n }\n validateElement(node) {\n if (node.closed !== NodeClosed.VoidSelfClosed) {\n return;\n }\n this.report(node, `<${node.tagName}> must not be self-closed`, null, node.tagName);\n }\n}\nfunction isRelevant(node, options) {\n if (xmlns.exec(node.tagName)) {\n return !options.ignoreXML;\n }\n if (!node.meta) {\n return true;\n }\n if (node.meta.void) {\n return false;\n }\n if (node.meta.foreign) {\n return !options.ignoreForeign;\n }\n return true;\n}\n\nclass NoStyleTag extends Rule {\n documentation() {\n return {\n description: \"Prefer to use external stylesheets with the `<link>` tag instead of inlining the styling.\",\n url: \"https://html-validate.org/rules/no-style-tag.html\"\n };\n }\n setup() {\n this.on(\"tag:start\", (event) => {\n const node = event.target;\n if (node.tagName === \"style\") {\n this.report(node, \"Use external stylesheet with <link> instead of <style> tag\");\n }\n });\n }\n}\n\nclass NoTrailingWhitespace extends Rule {\n documentation() {\n return {\n description: \"Lines with trailing whitespace cause unnessecary diff when using version control and usually serve no special purpose in HTML.\",\n url: \"https://html-validate.org/rules/no-trailing-whitespace.html\"\n };\n }\n setup() {\n this.on(\"whitespace\", (event) => {\n if (/^[ \\t]+\\r?\\n$/.exec(event.text)) {\n this.report(null, \"Trailing whitespace\", event.location);\n }\n });\n }\n}\n\nconst defaults$b = {\n include: null,\n exclude: null\n};\nclass NoUnknownElements extends Rule {\n constructor(options) {\n super({ ...defaults$b, ...options });\n }\n static schema() {\n return {\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n }\n };\n }\n documentation(context) {\n const element = context ? ` <${context}>` : \"\";\n return {\n description: `An unknown element${element} was used. If this is a Custom Element you need to supply element metadata for it.`,\n url: \"https://html-validate.org/rules/no-unknown-elements.html\"\n };\n }\n setup() {\n this.on(\"tag:start\", (event) => {\n const node = event.target;\n if (node.meta) {\n return;\n }\n if (this.isKeywordIgnored(node.tagName, keywordPatternMatcher)) {\n return;\n }\n this.report(node, `Unknown element <${node.tagName}>`, null, node.tagName);\n });\n }\n}\n\nclass NoUnusedDisable extends Rule {\n documentation(context) {\n return {\n description: `\\`${context.ruleId}\\` rule is disabled but no error was reported.`,\n url: \"https://html-validate.org/rules/no-unused-disable.html\"\n };\n }\n setup() {\n }\n reportUnused(unused, options, location) {\n const tokens = new DOMTokenList(options.replace(/,/g, \" \"), location);\n for (const ruleId of unused) {\n const index = tokens.indexOf(ruleId);\n const tokenLocation = index >= 0 ? tokens.location(index) : location;\n this.report({\n node: null,\n message: '\"{{ ruleId }}\" rule is disabled but no error was reported',\n location: tokenLocation,\n context: {\n ruleId\n }\n });\n }\n }\n}\n\nclass NoUtf8Bom extends Rule {\n documentation() {\n return {\n description: `This file is saved with the UTF-8 byte order mark (BOM) present. It is neither required or recommended to use.\n\nInstead the document should be served with the \\`Content-Type: application/javascript; charset=utf-8\\` header.`,\n url: \"https://html-validate.org/rules/no-utf8-bom.html\"\n };\n }\n setup() {\n const unregister = this.on(\"token\", (event) => {\n if (event.type === TokenType.UNICODE_BOM) {\n this.report(null, \"File should be saved without UTF-8 BOM\", event.location);\n }\n this.setEnabled(false);\n unregister();\n });\n }\n}\n\nconst types = [\"button\", \"submit\", \"reset\", \"image\"];\nconst replacement = {\n button: '<button type=\"button\">',\n submit: '<button type=\"submit\">',\n reset: '<button type=\"reset\">',\n image: '<button type=\"button\">'\n};\nconst defaults$a = {\n include: null,\n exclude: null\n};\nclass PreferButton extends Rule {\n constructor(options) {\n super({ ...defaults$a, ...options });\n }\n static schema() {\n return {\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n }\n };\n }\n documentation(context) {\n const src = `<input type=\"${context.type}\">`;\n const dst = replacement[context.type] || `<button>`;\n return {\n description: `Prefer to use \\`${dst}\\` instead of \\`\"${src}\\`.`,\n url: \"https://html-validate.org/rules/prefer-button.html\"\n };\n }\n setup() {\n this.on(\"attr\", (event) => {\n const node = event.target;\n if (node.tagName.toLowerCase() !== \"input\") {\n return;\n }\n if (event.key.toLowerCase() !== \"type\") {\n return;\n }\n if (!event.value || event.value instanceof DynamicValue) {\n return;\n }\n const type = event.value.toLowerCase();\n if (this.isKeywordIgnored(type)) {\n return;\n }\n if (!types.includes(type)) {\n return;\n }\n const context = { type };\n const message = `Prefer to use <button> instead of <input type=\"${type}\"> when adding buttons`;\n this.report(node, message, event.valueLocation, context);\n });\n }\n}\n\nconst defaults$9 = {\n mapping: {\n article: \"article\",\n banner: \"header\",\n button: \"button\",\n cell: \"td\",\n checkbox: \"input\",\n complementary: \"aside\",\n contentinfo: \"footer\",\n figure: \"figure\",\n form: \"form\",\n heading: \"hN\",\n input: \"input\",\n link: \"a\",\n list: \"ul\",\n listbox: \"select\",\n listitem: \"li\",\n main: \"main\",\n navigation: \"nav\",\n progressbar: \"progress\",\n radio: \"input\",\n region: \"section\",\n table: \"table\",\n textbox: \"textarea\"\n },\n include: null,\n exclude: null\n};\nclass PreferNativeElement extends Rule {\n constructor(options) {\n super({ ...defaults$9, ...options });\n }\n static schema() {\n return {\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n mapping: {\n type: \"object\"\n }\n };\n }\n documentation(context) {\n return {\n description: `Instead of using the WAI-ARIA role \"${context.role}\" prefer to use the native <${context.replacement}> element.`,\n url: \"https://html-validate.org/rules/prefer-native-element.html\"\n };\n }\n setup() {\n const { mapping } = this.options;\n this.on(\"attr\", (event) => {\n if (event.key.toLowerCase() !== \"role\") {\n return;\n }\n if (!event.value || event.value instanceof DynamicValue) {\n return;\n }\n const role = event.value.toLowerCase();\n if (this.isIgnored(role)) {\n return;\n }\n const replacement = mapping[role];\n if (event.target.is(replacement)) {\n return;\n }\n const context = { role, replacement };\n const location = this.getLocation(event);\n this.report(\n event.target,\n `Prefer to use the native <${replacement}> element`,\n location,\n context\n );\n });\n }\n isIgnored(role) {\n const { mapping } = this.options;\n const replacement = mapping[role];\n if (!replacement) {\n return true;\n }\n return this.isKeywordIgnored(role);\n }\n getLocation(event) {\n const begin = event.location;\n const end = event.valueLocation;\n const quote = event.quote ? 1 : 0;\n const size = end.offset + end.size - begin.offset + quote;\n return {\n filename: begin.filename,\n line: begin.line,\n column: begin.column,\n offset: begin.offset,\n size\n };\n }\n}\n\nclass PreferTbody extends Rule {\n documentation() {\n return {\n description: `While \\`<tbody>\\` is optional is relays semantic information about its contents. Where applicable it should also be combined with \\`<thead>\\` and \\`<tfoot>\\`.`,\n url: \"https://html-validate.org/rules/prefer-tbody.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const doc = event.document;\n for (const table of doc.querySelectorAll(\"table\")) {\n if (table.querySelector(\"> tbody\")) {\n continue;\n }\n const tr = table.querySelectorAll(\"> tr\");\n if (tr.length >= 1) {\n this.report(tr[0], \"Prefer to wrap <tr> elements in <tbody>\");\n }\n }\n });\n }\n}\n\nconst defaults$8 = {\n tags: [\"script\", \"style\"]\n};\nclass RequireCSPNonce extends Rule {\n constructor(options) {\n super({ ...defaults$8, ...options });\n }\n static schema() {\n return {\n tags: {\n type: \"array\",\n items: {\n enum: [\"script\", \"style\"],\n type: \"string\"\n }\n }\n };\n }\n documentation() {\n return {\n description: [\n \"Required Content-Security-Policy (CSP) nonce is missing or empty.\",\n \"\",\n \"This is set by the `nonce` attribute and must match the `Content-Security-Policy` header.\",\n \"For instance, if the header contains `script-src 'nonce-r4nd0m'` the `nonce` attribute must be set to `nonce=\\\"r4nd0m\\\">`\",\n \"\",\n \"The nonce should be unique per each request and set to a cryptography secure random token.\",\n \"It is used to prevent cross site scripting (XSS) by preventing malicious actors from injecting scripts onto the page.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/require-csp-nonce.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const { tags } = this.options;\n const node = event.previous;\n if (!tags.includes(node.tagName)) {\n return;\n }\n const nonce = node.getAttribute(\"nonce\")?.value;\n if (nonce && nonce !== \"\") {\n return;\n }\n if (node.is(\"script\") && node.hasAttribute(\"src\")) {\n return;\n }\n const message = `required CSP nonce is missing`;\n this.report(node, message, node.location);\n });\n }\n}\n\nconst defaults$7 = {\n target: \"all\",\n include: null,\n exclude: null\n};\nconst crossorigin = new RegExp(\"^(\\\\w+://|//)\");\nconst supportSri = {\n link: \"href\",\n script: \"src\"\n};\nconst supportedRel = [\"stylesheet\", \"preload\", \"modulepreload\"];\nconst supportedPreload = [\"style\", \"script\"];\nfunction linkSupportsSri(node) {\n const rel = node.getAttribute(\"rel\");\n if (typeof rel?.value !== \"string\") {\n return false;\n }\n if (!supportedRel.includes(rel.value)) {\n return false;\n }\n if (rel.value === \"preload\") {\n const as = node.getAttribute(\"as\");\n return typeof as?.value === \"string\" && supportedPreload.includes(as.value);\n }\n return true;\n}\nclass RequireSri extends Rule {\n target;\n constructor(options) {\n super({ ...defaults$7, ...options });\n this.target = this.options.target;\n }\n static schema() {\n return {\n target: {\n enum: [\"all\", \"crossorigin\"],\n type: \"string\"\n },\n include: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n },\n exclude: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"null\"\n }\n ]\n }\n };\n }\n documentation() {\n return {\n description: `Subresource Integrity (SRI) \\`integrity\\` attribute is required to prevent tampering or manipulation from Content Delivery Networks (CDN), rouge proxies, malicious entities, etc.`,\n url: \"https://html-validate.org/rules/require-sri.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.previous;\n if (!(this.supportSri(node) && this.needSri(node))) {\n return;\n }\n if (node.hasAttribute(\"integrity\")) {\n return;\n }\n this.report(\n node,\n `SRI \"integrity\" attribute is required on <${node.tagName}> element`,\n node.location\n );\n });\n }\n supportSri(node) {\n return Object.keys(supportSri).includes(node.tagName);\n }\n needSri(node) {\n if (node.is(\"link\") && !linkSupportsSri(node)) {\n return false;\n }\n const attr = this.elementSourceAttr(node);\n if (!attr) {\n return false;\n }\n if (attr.value === null || attr.value === \"\" || attr.isDynamic) {\n return false;\n }\n const url = attr.value.toString();\n if (this.target === \"all\" || crossorigin.test(url)) {\n return !this.isIgnored(url);\n }\n return false;\n }\n elementSourceAttr(node) {\n const key = supportSri[node.tagName];\n return node.getAttribute(key);\n }\n isIgnored(url) {\n return this.isKeywordIgnored(url, (list, it) => {\n return list.some((pattern) => it.includes(pattern));\n });\n }\n}\n\nclass ScriptElement extends Rule {\n documentation() {\n return {\n description: \"The end tag for `<script>` is a hard requirement and must never be omitted even when using the `src` attribute.\",\n url: \"https://html-validate.org/rules/script-element.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.target;\n if (!node || node.tagName !== \"script\") {\n return;\n }\n if (node.closed !== NodeClosed.EndTag) {\n this.report(node, `End tag for <${node.tagName}> must not be omitted`);\n }\n });\n }\n}\n\nconst javascript = [\n \"\",\n \"application/ecmascript\",\n \"application/javascript\",\n \"text/ecmascript\",\n \"text/javascript\"\n];\nclass ScriptType extends Rule {\n documentation() {\n return {\n description: \"While valid the HTML5 standard encourages authors to omit the type element for JavaScript resources.\",\n url: \"https://html-validate.org/rules/script-type.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.previous;\n if (node.tagName !== \"script\") {\n return;\n }\n const attr = node.getAttribute(\"type\");\n if (!attr || attr.isDynamic) {\n return;\n }\n const value = attr.value ? attr.value.toString() : \"\";\n if (!this.isJavascript(value)) {\n return;\n }\n this.report(\n node,\n '\"type\" attribute is unnecessary for javascript resources',\n attr.keyLocation\n );\n });\n }\n isJavascript(mime) {\n const type = mime.replace(/;.*/, \"\");\n return javascript.includes(type);\n }\n}\n\nclass SvgFocusable extends Rule {\n documentation() {\n return {\n description: `Inline SVG elements in IE are focusable by default which may cause issues with tab-ordering. The \\`focusable\\` attribute should explicitly be set to avoid unintended behaviour.`,\n url: \"https://html-validate.org/rules/svg-focusable.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", (event) => {\n if (event.target.is(\"svg\")) {\n this.validate(event.target);\n }\n });\n }\n validate(svg) {\n if (svg.hasAttribute(\"focusable\")) {\n return;\n }\n this.report(svg, `<${svg.tagName}> is missing required \"focusable\" attribute`);\n }\n}\n\nconst defaults$6 = {\n characters: [\n { pattern: \" \", replacement: \" \", description: \"non-breaking space\" },\n { pattern: \"-\", replacement: \"‑\", description: \"non-breaking hyphen\" }\n ],\n ignoreClasses: [],\n ignoreStyle: true\n};\nfunction constructRegex(characters) {\n const disallowed = characters.map((it) => {\n return it.pattern;\n }).join(\"|\");\n const pattern = `(${disallowed})`;\n return new RegExp(pattern, \"g\");\n}\nfunction getText(node) {\n const match = /^(\\s*)(.*)$/.exec(node.textContent);\n const [, leading, text] = match;\n return [leading.length, text.trimEnd()];\n}\nfunction matchAll(text, regexp) {\n const copy = new RegExp(regexp);\n const matches = [];\n let match;\n while (match = copy.exec(text)) {\n matches.push(match);\n }\n return matches;\n}\nclass TelNonBreaking extends Rule {\n regex;\n constructor(options) {\n super({ ...defaults$6, ...options });\n this.regex = constructRegex(this.options.characters);\n }\n static schema() {\n return {\n characters: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n pattern: {\n type: \"string\"\n },\n replacement: {\n type: \"string\"\n },\n description: {\n type: \"string\"\n }\n }\n }\n },\n ignoreClasses: {\n type: \"array\",\n items: {\n type: \"string\"\n }\n },\n ignoreStyle: {\n type: \"boolean\"\n }\n };\n }\n documentation(context) {\n const { characters } = this.options;\n const replacements = characters.map((it) => {\n return ` - \\`${it.pattern}\\` - replace with \\`${it.replacement}\\` (${it.description}).`;\n });\n return {\n description: [\n `The \\`${context.pattern}\\` character should be replaced with \\`${context.replacement}\\` character (${context.description}) when used in a telephone number.`,\n \"\",\n \"Unless non-breaking characters is used there could be a line break inserted at that character.\",\n \"Line breaks make is harder to read and understand the telephone number.\",\n \"\",\n \"The following characters should be avoided:\",\n \"\",\n ...replacements\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/tel-non-breaking.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", this.isRelevant, (event) => {\n const { target } = event;\n if (this.isIgnored(target)) {\n return;\n }\n this.walk(target, target);\n });\n }\n isRelevant(event) {\n const { target } = event;\n if (!target.is(\"a\")) {\n return false;\n }\n const attr = target.getAttribute(\"href\");\n if (!attr?.valueMatches(/^tel:/, false)) {\n return false;\n }\n return true;\n }\n isIgnoredClass(node) {\n const { ignoreClasses } = this.options;\n const { classList } = node;\n return ignoreClasses.some((it) => classList.contains(it));\n }\n isIgnoredStyle(node) {\n const { ignoreStyle } = this.options;\n const { style } = node;\n if (!ignoreStyle) {\n return false;\n }\n if (style[\"white-space\"] === \"nowrap\" || style[\"white-space\"] === \"pre\") {\n return true;\n }\n return false;\n }\n isIgnored(node) {\n return this.isIgnoredClass(node) || this.isIgnoredStyle(node);\n }\n walk(anchor, node) {\n for (const child of node.childNodes) {\n if (isTextNode(child)) {\n this.detectDisallowed(anchor, child);\n } else if (isElementNode(child)) {\n this.walk(anchor, child);\n }\n }\n }\n detectDisallowed(anchor, node) {\n const [offset, text] = getText(node);\n const matches = matchAll(text, this.regex);\n for (const match of matches) {\n const detected = match[0];\n const entry = this.options.characters.find((it) => it.pattern === detected);\n if (!entry) {\n throw new Error(`Failed to find entry for \"${detected}\" when searching text \"${text}\"`);\n }\n const message = `\"${detected}\" should be replaced with \"${entry.replacement}\" (${entry.description}) in telephone number`;\n const begin = offset + match.index;\n const end = begin + detected.length;\n const location = sliceLocation(node.location, begin, end);\n const context = entry;\n this.report(anchor, message, location, context);\n }\n }\n}\n\nfunction hasNonEmptyAttribute(node, key) {\n const attr = node.getAttribute(key);\n return Boolean(attr?.valueMatches(/.+/, true));\n}\nfunction hasDefaultText(node) {\n if (!node.is(\"input\")) {\n return false;\n }\n if (node.hasAttribute(\"value\")) {\n return false;\n }\n const type = node.getAttribute(\"type\");\n return Boolean(type?.valueMatches(/submit|reset/, false));\n}\nfunction isNonEmptyText(node) {\n if (isTextNode(node)) {\n return node.isDynamic || node.textContent.trim() !== \"\";\n } else {\n return false;\n }\n}\nfunction haveAccessibleText(node) {\n if (!inAccessibilityTree(node)) {\n return false;\n }\n const haveText = node.childNodes.some((child) => isNonEmptyText(child));\n if (haveText) {\n return true;\n }\n if (hasNonEmptyAttribute(node, \"aria-label\")) {\n return true;\n }\n if (hasNonEmptyAttribute(node, \"aria-labelledby\")) {\n return true;\n }\n if (node.is(\"img\") && hasNonEmptyAttribute(node, \"alt\")) {\n return true;\n }\n if (hasDefaultText(node)) {\n return true;\n }\n return node.childElements.some((child) => {\n return haveAccessibleText(child);\n });\n}\nclass TextContent extends Rule {\n documentation(context) {\n const doc = {\n description: `The textual content for this element is not valid.`,\n url: \"https://html-validate.org/rules/text-content.html\"\n };\n switch (context.textContent) {\n case TextContent$1.NONE:\n doc.description = `The \\`<${context.tagName}>\\` element must not have textual content.`;\n break;\n case TextContent$1.REQUIRED:\n doc.description = `The \\`<${context.tagName}>\\` element must have textual content.`;\n break;\n case TextContent$1.ACCESSIBLE:\n doc.description = `The \\`<${context.tagName}>\\` element must have accessible text.`;\n break;\n }\n return doc;\n }\n static filter(event) {\n const { target } = event;\n if (!target.meta) {\n return false;\n }\n const { textContent } = target.meta;\n if (!textContent || textContent === TextContent$1.DEFAULT) {\n return false;\n }\n return true;\n }\n setup() {\n this.on(\"element:ready\", TextContent.filter, (event) => {\n const target = event.target;\n const { textContent } = target.meta;\n switch (textContent) {\n case TextContent$1.NONE:\n this.validateNone(target);\n break;\n case TextContent$1.REQUIRED:\n this.validateRequired(target);\n break;\n case TextContent$1.ACCESSIBLE:\n this.validateAccessible(target);\n break;\n }\n });\n }\n /**\n * Validate element has empty text (inter-element whitespace is not considered text)\n */\n validateNone(node) {\n if (classifyNodeText(node) === TextClassification.EMPTY_TEXT) {\n return;\n }\n this.reportError(node, node.meta, `${node.annotatedName} must not have text content`);\n }\n /**\n * Validate element has any text (inter-element whitespace is not considered text)\n */\n validateRequired(node) {\n if (classifyNodeText(node) !== TextClassification.EMPTY_TEXT) {\n return;\n }\n this.reportError(node, node.meta, `${node.annotatedName} must have text content`);\n }\n /**\n * Validate element has accessible text (either regular text or text only\n * exposed in accessibility tree via aria-label or similar)\n */\n validateAccessible(node) {\n if (!inAccessibilityTree(node)) {\n return;\n }\n if (haveAccessibleText(node)) {\n return;\n }\n this.reportError(node, node.meta, `${node.annotatedName} must have accessible text`);\n }\n reportError(node, meta, message) {\n this.report(node, message, null, {\n tagName: node.tagName,\n textContent: meta.textContent\n });\n }\n}\n\nconst roles = [\"complementary\", \"contentinfo\", \"form\", \"banner\", \"main\", \"navigation\", \"region\"];\nconst selectors = [\n \"aside\",\n \"footer\",\n \"form\",\n \"header\",\n \"main\",\n \"nav\",\n \"section\",\n ...roles.map((it) => `[role=\"${it}\"]`)\n /* <search> does not (yet?) require a unique name */\n];\nfunction getTextFromReference(document, id) {\n if (!id || id instanceof DynamicValue) {\n return id;\n }\n const selector = `#${id}`;\n const ref = document.querySelector(selector);\n if (ref) {\n return ref.textContent;\n } else {\n return selector;\n }\n}\nfunction groupBy(values, callback) {\n const result = {};\n for (const value of values) {\n const key = callback(value);\n if (key in result) {\n result[key].push(value);\n } else {\n result[key] = [value];\n }\n }\n return result;\n}\nfunction getTextEntryFromElement(document, node) {\n const ariaLabel = node.getAttribute(\"aria-label\");\n if (ariaLabel) {\n return {\n node,\n text: ariaLabel.value,\n location: ariaLabel.keyLocation\n };\n }\n const ariaLabelledby = node.getAttribute(\"aria-labelledby\");\n if (ariaLabelledby) {\n const text = getTextFromReference(document, ariaLabelledby.value);\n return {\n node,\n text,\n location: ariaLabelledby.keyLocation\n };\n }\n return {\n node,\n text: null,\n location: node.location\n };\n}\nfunction isExcluded(entry) {\n const { node, text } = entry;\n if (text === null) {\n return !(node.is(\"form\") || node.is(\"section\"));\n }\n return true;\n}\nclass UniqueLandmark extends Rule {\n documentation() {\n return {\n description: [\n \"When the same type of landmark is present more than once in the same document each must be uniquely identifiable with a non-empty and unique name.\",\n \"For instance, if the document has two `<nav>` elements each of them need an accessible name to be distinguished from each other.\",\n \"\",\n \"The following elements / roles are considered landmarks:\",\n \"\",\n ' - `aside` or `[role=\"complementary\"]`',\n ' - `footer` or `[role=\"contentinfo\"]`',\n ' - `form` or `[role=\"form\"]`',\n ' - `header` or `[role=\"banner\"]`',\n ' - `main` or `[role=\"main\"]`',\n ' - `nav` or `[role=\"navigation\"]`',\n ' - `section` or `[role=\"region\"]`',\n \"\",\n \"To fix this either:\",\n \"\",\n \" - Add `aria-label`.\",\n \" - Add `aria-labelledby`.\",\n \" - Remove one of the landmarks.\"\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/unique-landmark.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const elements = document.querySelectorAll(selectors.join(\",\")).filter((it) => typeof it.role === \"string\" && roles.includes(it.role));\n const grouped = groupBy(elements, (it) => it.role);\n for (const nodes of Object.values(grouped)) {\n if (nodes.length <= 1) {\n continue;\n }\n const entries = nodes.map((it) => getTextEntryFromElement(document, it));\n const filteredEntries = entries.filter(isExcluded);\n for (const entry of filteredEntries) {\n if (entry.text instanceof DynamicValue) {\n continue;\n }\n const dup = entries.filter((it) => it.text === entry.text).length > 1;\n if (!entry.text || dup) {\n const message = `Landmarks must have a non-empty and unique accessible name (aria-label or aria-labelledby)`;\n const location = entry.location;\n this.report({\n node: entry.node,\n message,\n location\n });\n }\n }\n }\n });\n }\n}\n\nconst defaults$5 = {\n ignoreCase: false,\n requireSemicolon: true\n};\nconst regexp$1 = /&(?:[a-z0-9]+|#x?[0-9a-f]+)(;|[^a-z0-9]|$)/gi;\nconst lowercaseEntities = entities$1.map((it) => it.toLowerCase());\nfunction isNumerical(entity) {\n return entity.startsWith(\"&#\");\n}\nfunction getLocation(location, entity, match) {\n const index = match.index ?? 0;\n return sliceLocation(location, index, index + entity.length);\n}\nfunction getDescription(context, options) {\n const url = \"https://html.spec.whatwg.org/multipage/named-characters.html\";\n let message;\n if (context.terminated) {\n message = `Unrecognized character reference \\`${context.entity}\\`.`;\n } else {\n message = `Character reference \\`${context.entity}\\` must be terminated by a semicolon.`;\n }\n return [\n message,\n `HTML5 defines a set of [valid character references](${url}) but this is not a valid one.`,\n \"\",\n \"Ensure that:\",\n \"\",\n \"1. The character is one of the listed names.\",\n ...options.ignoreCase ? [] : [\"1. The case is correct (names are case sensitive).\"],\n ...options.requireSemicolon ? [\"1. The name is terminated with a `;`.\"] : []\n ].join(\"\\n\");\n}\nclass UnknownCharReference extends Rule {\n constructor(options) {\n super({ ...defaults$5, ...options });\n }\n static schema() {\n return {\n ignoreCase: {\n type: \"boolean\"\n },\n requireSemicolon: {\n type: \"boolean\"\n }\n };\n }\n documentation(context) {\n return {\n description: getDescription(context, this.options),\n url: \"https://html-validate.org/rules/unrecognized-char-ref.html\"\n };\n }\n setup() {\n this.on(\"element:ready\", (event) => {\n const node = event.target;\n for (const child of node.childNodes) {\n if (child.nodeType !== NodeType.TEXT_NODE) {\n continue;\n }\n this.findCharacterReferences(node, child.textContent, child.location, {\n isAttribute: false\n });\n }\n });\n this.on(\"attr\", (event) => {\n if (!event.value) {\n return;\n }\n this.findCharacterReferences(event.target, event.value.toString(), event.valueLocation, {\n isAttribute: true\n });\n });\n }\n get entities() {\n if (this.options.ignoreCase) {\n return lowercaseEntities;\n } else {\n return entities$1;\n }\n }\n findCharacterReferences(node, text, location, { isAttribute }) {\n const isQuerystring = isAttribute && text.includes(\"?\");\n for (const match of this.getMatches(text)) {\n this.validateCharacterReference(node, location, match, { isQuerystring });\n }\n }\n validateCharacterReference(node, location, foobar, { isQuerystring }) {\n const { requireSemicolon } = this.options;\n const { match, entity, raw, terminated } = foobar;\n if (isNumerical(entity)) {\n return;\n }\n if (isQuerystring && !terminated) {\n return;\n }\n const found = this.entities.includes(entity);\n if (found && (terminated || !requireSemicolon)) {\n return;\n }\n if (found && !terminated) {\n const entityLocation2 = getLocation(location, entity, match);\n const message2 = `Character reference \"{{ entity }}\" must be terminated by a semicolon`;\n const context2 = {\n entity: raw,\n terminated: false\n };\n this.report(node, message2, entityLocation2, context2);\n return;\n }\n const entityLocation = getLocation(location, entity, match);\n const message = `Unrecognized character reference \"{{ entity }}\"`;\n const context = {\n entity: raw,\n terminated: true\n };\n this.report(node, message, entityLocation, context);\n }\n *getMatches(text) {\n let match;\n do {\n match = regexp$1.exec(text);\n if (match) {\n const terminator = match[1];\n const terminated = terminator === \";\";\n const needSlice = terminator !== \";\" && terminator.length > 0;\n const entity = needSlice ? match[0].slice(0, -1) : match[0];\n if (this.options.ignoreCase) {\n yield { match, entity: entity.toLowerCase(), raw: entity, terminated };\n } else {\n yield { match, entity, raw: entity, terminated };\n }\n }\n } while (match);\n }\n}\n\nconst expectedOrder = [\"section\", \"hint\", \"contact\", \"field1\", \"field2\", \"webauthn\"];\nconst fieldNames1 = [\n \"name\",\n \"honorific-prefix\",\n \"given-name\",\n \"additional-name\",\n \"family-name\",\n \"honorific-suffix\",\n \"nickname\",\n \"username\",\n \"new-password\",\n \"current-password\",\n \"one-time-code\",\n \"organization-title\",\n \"organization\",\n \"street-address\",\n \"address-line1\",\n \"address-line2\",\n \"address-line3\",\n \"address-level4\",\n \"address-level3\",\n \"address-level2\",\n \"address-level1\",\n \"country\",\n \"country-name\",\n \"postal-code\",\n \"cc-name\",\n \"cc-given-name\",\n \"cc-additional-name\",\n \"cc-family-name\",\n \"cc-number\",\n \"cc-exp\",\n \"cc-exp-month\",\n \"cc-exp-year\",\n \"cc-csc\",\n \"cc-type\",\n \"transaction-currency\",\n \"transaction-amount\",\n \"language\",\n \"bday\",\n \"bday-day\",\n \"bday-month\",\n \"bday-year\",\n \"sex\",\n \"url\",\n \"photo\"\n];\nconst fieldNames2 = [\n \"tel\",\n \"tel-country-code\",\n \"tel-national\",\n \"tel-area-code\",\n \"tel-local\",\n \"tel-local-prefix\",\n \"tel-local-suffix\",\n \"tel-extension\",\n \"email\",\n \"impp\"\n];\nconst fieldNameGroup = {\n name: \"text\",\n \"honorific-prefix\": \"text\",\n \"given-name\": \"text\",\n \"additional-name\": \"text\",\n \"family-name\": \"text\",\n \"honorific-suffix\": \"text\",\n nickname: \"text\",\n username: \"username\",\n \"new-password\": \"password\",\n // eslint-disable-line sonarjs/no-hardcoded-passwords -- false positive, it is not used as a password\n \"current-password\": \"password\",\n // eslint-disable-line sonarjs/no-hardcoded-passwords -- false positive, it is not used as a password\n \"one-time-code\": \"password\",\n \"organization-title\": \"text\",\n organization: \"text\",\n \"street-address\": \"multiline\",\n \"address-line1\": \"text\",\n \"address-line2\": \"text\",\n \"address-line3\": \"text\",\n \"address-level4\": \"text\",\n \"address-level3\": \"text\",\n \"address-level2\": \"text\",\n \"address-level1\": \"text\",\n country: \"text\",\n \"country-name\": \"text\",\n \"postal-code\": \"text\",\n \"cc-name\": \"text\",\n \"cc-given-name\": \"text\",\n \"cc-additional-name\": \"text\",\n \"cc-family-name\": \"text\",\n \"cc-number\": \"text\",\n \"cc-exp\": \"month\",\n \"cc-exp-month\": \"numeric\",\n \"cc-exp-year\": \"numeric\",\n \"cc-csc\": \"text\",\n \"cc-type\": \"text\",\n \"transaction-currency\": \"text\",\n \"transaction-amount\": \"numeric\",\n language: \"text\",\n bday: \"date\",\n \"bday-day\": \"numeric\",\n \"bday-month\": \"numeric\",\n \"bday-year\": \"numeric\",\n sex: \"text\",\n url: \"url\",\n photo: \"url\",\n tel: \"tel\",\n \"tel-country-code\": \"text\",\n \"tel-national\": \"text\",\n \"tel-area-code\": \"text\",\n \"tel-local\": \"text\",\n \"tel-local-prefix\": \"text\",\n \"tel-local-suffix\": \"text\",\n \"tel-extension\": \"text\",\n email: \"username\",\n impp: \"url\"\n};\nconst disallowedInputTypes = [\"checkbox\", \"radio\", \"file\", \"submit\", \"image\", \"reset\", \"button\"];\nfunction matchSection(token) {\n return token.startsWith(\"section-\");\n}\nfunction matchHint(token) {\n return token === \"shipping\" || token === \"billing\";\n}\nfunction matchFieldNames1(token) {\n return fieldNames1.includes(token);\n}\nfunction matchContact(token) {\n const haystack = [\"home\", \"work\", \"mobile\", \"fax\", \"pager\"];\n return haystack.includes(token);\n}\nfunction matchFieldNames2(token) {\n return fieldNames2.includes(token);\n}\nfunction matchWebauthn(token) {\n return token === \"webauthn\";\n}\nfunction matchToken(token) {\n if (matchSection(token)) {\n return \"section\";\n }\n if (matchHint(token)) {\n return \"hint\";\n }\n if (matchFieldNames1(token)) {\n return \"field1\";\n }\n if (matchFieldNames2(token)) {\n return \"field2\";\n }\n if (matchContact(token)) {\n return \"contact\";\n }\n if (matchWebauthn(token)) {\n return \"webauthn\";\n }\n return null;\n}\nfunction getControlGroups(type) {\n const allGroups = [\n \"text\",\n \"multiline\",\n \"password\",\n \"url\",\n \"username\",\n \"tel\",\n \"numeric\",\n \"month\",\n \"date\"\n ];\n const mapping = {\n hidden: allGroups,\n text: allGroups.filter((it) => it !== \"multiline\"),\n search: allGroups.filter((it) => it !== \"multiline\"),\n password: [\"password\"],\n url: [\"url\"],\n email: [\"username\"],\n tel: [\"tel\"],\n number: [\"numeric\"],\n month: [\"month\"],\n date: [\"date\"]\n };\n return mapping[type] ?? [];\n}\nfunction isDisallowedType(node, type) {\n if (!node.is(\"input\")) {\n return false;\n }\n return disallowedInputTypes.includes(type);\n}\nfunction getTerminalMessage(context) {\n switch (context.msg) {\n case 0 /* InvalidAttribute */:\n return \"autocomplete attribute cannot be used on {{ what }}\";\n case 1 /* InvalidValue */:\n return '\"{{ value }}\" cannot be used on {{ what }}';\n case 2 /* InvalidOrder */:\n return '\"{{ second }}\" must appear before \"{{ first }}\"';\n case 3 /* InvalidToken */:\n return '\"{{ token }}\" is not a valid autocomplete token or field name';\n case 4 /* InvalidCombination */:\n return '\"{{ second }}\" cannot be combined with \"{{ first }}\"';\n case 5 /* MissingField */:\n return \"autocomplete attribute is missing field name\";\n }\n}\nfunction getMarkdownMessage(context) {\n switch (context.msg) {\n case 0 /* InvalidAttribute */:\n return [\n `\\`autocomplete\\` attribute cannot be used on \\`${context.what}\\``,\n \"\",\n \"The following input types cannot use the `autocomplete` attribute:\",\n \"\",\n ...disallowedInputTypes.map((it) => `- \\`${it}\\``)\n ].join(\"\\n\");\n case 1 /* InvalidValue */: {\n const message = `\\`\"${context.value}\"\\` cannot be used on \\`${context.what}\\``;\n if (context.type === \"form\") {\n return [\n message,\n \"\",\n 'The `<form>` element can only use the values `\"on\"` and `\"off\"`.'\n ].join(\"\\n\");\n }\n if (context.type === \"hidden\") {\n return [\n message,\n \"\",\n '`<input type=\"hidden\">` cannot use the values `\"on\"` and `\"off\"`.'\n ].join(\"\\n\");\n }\n const controlGroups = getControlGroups(context.type);\n const currentGroup = fieldNameGroup[context.value];\n return [\n message,\n \"\",\n `\\`${context.what}\\` allows autocomplete fields from the following group${controlGroups.length > 1 ? \"s\" : \"\"}:`,\n \"\",\n ...controlGroups.map((it) => `- ${it}`),\n \"\",\n `The field \\`\"${context.value}\"\\` belongs to the group /${currentGroup}/ which cannot be used with this input type.`\n ].join(\"\\n\");\n }\n case 2 /* InvalidOrder */:\n return [\n `\\`\"${context.second}\"\\` must appear before \\`\"${context.first}\"\\``,\n \"\",\n \"The autocomplete tokens must appear in the following order:\",\n \"\",\n \"- Optional section name (`section-` prefix).\",\n \"- Optional `shipping` or `billing` token.\",\n \"- Optional `home`, `work`, `mobile`, `fax` or `pager` token (for fields supporting it).\",\n \"- Field name\",\n \"- Optional `webauthn` token.\"\n ].join(\"\\n\");\n case 3 /* InvalidToken */:\n return `\\`\"${context.token}\"\\` is not a valid autocomplete token or field name`;\n case 4 /* InvalidCombination */:\n return `\\`\"${context.second}\"\\` cannot be combined with \\`\"${context.first}\"\\``;\n case 5 /* MissingField */:\n return \"Autocomplete attribute is missing field name\";\n }\n}\nclass ValidAutocomplete extends Rule {\n documentation(context) {\n return {\n description: getMarkdownMessage(context),\n url: \"https://html-validate.org/rules/valid-autocomplete.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const elements = document.querySelectorAll(\"[autocomplete]\");\n for (const element of elements) {\n const autocomplete = element.getAttribute(\"autocomplete\");\n if (autocomplete.value === null || autocomplete.value instanceof DynamicValue) {\n continue;\n }\n const location = autocomplete.valueLocation;\n const value = autocomplete.value.toLowerCase();\n const tokens = new DOMTokenList(value, location);\n if (tokens.length === 0) {\n continue;\n }\n this.validate(element, value, tokens, autocomplete.keyLocation, location);\n }\n });\n }\n validate(node, value, tokens, keyLocation, valueLocation) {\n switch (node.tagName) {\n case \"form\":\n this.validateFormAutocomplete(node, value, valueLocation);\n break;\n case \"input\":\n case \"textarea\":\n case \"select\":\n this.validateControlAutocomplete(node, tokens, keyLocation);\n break;\n }\n }\n validateControlAutocomplete(node, tokens, keyLocation) {\n const type = node.getAttributeValue(\"type\") ?? \"text\";\n const mantle = type !== \"hidden\" ? \"expectation\" : \"anchor\";\n if (isDisallowedType(node, type)) {\n const context = {\n msg: 0 /* InvalidAttribute */,\n what: `<input type=\"${type}\">`\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: keyLocation,\n context\n });\n return;\n }\n if (tokens.includes(\"on\") || tokens.includes(\"off\")) {\n this.validateOnOff(node, mantle, tokens);\n return;\n }\n this.validateTokens(node, tokens, keyLocation);\n }\n validateFormAutocomplete(node, value, location) {\n const trimmed = value.trim();\n if ([\"on\", \"off\"].includes(trimmed)) {\n return;\n }\n const context = {\n msg: 1 /* InvalidValue */,\n type: \"form\",\n value: trimmed,\n what: \"<form>\"\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location,\n context\n });\n }\n validateOnOff(node, mantle, tokens) {\n const index = tokens.findIndex((it) => it === \"on\" || it === \"off\");\n const value = tokens.item(index);\n const location = tokens.location(index);\n if (tokens.length > 1) {\n const context = {\n msg: 4 /* InvalidCombination */,\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- it must be present of it wouldn't be found */\n first: tokens.item(index > 0 ? 0 : 1),\n second: value\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location,\n context\n });\n }\n switch (mantle) {\n case \"expectation\":\n return;\n case \"anchor\": {\n const context = {\n msg: 1 /* InvalidValue */,\n type: \"hidden\",\n value,\n what: `<input type=\"hidden\">`\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: tokens.location(0),\n context\n });\n }\n }\n }\n validateTokens(node, tokens, keyLocation) {\n const order = [];\n for (const { item, location } of tokens.iterator()) {\n const tokenType = matchToken(item);\n if (tokenType) {\n order.push(tokenType);\n } else {\n const context = {\n msg: 3 /* InvalidToken */,\n token: item\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location,\n context\n });\n return;\n }\n }\n const fieldTokens = order.map((it) => it === \"field1\" || it === \"field2\");\n this.validateFieldPresence(node, tokens, fieldTokens, keyLocation);\n this.validateContact(node, tokens, order);\n this.validateOrder(node, tokens, order);\n this.validateControlGroup(node, tokens, fieldTokens);\n }\n /**\n * Ensure that exactly one field name is present from the two field lists.\n */\n validateFieldPresence(node, tokens, fieldTokens, keyLocation) {\n const numFields = fieldTokens.filter(Boolean).length;\n if (numFields === 0) {\n const context = {\n msg: 5 /* MissingField */\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: keyLocation,\n context\n });\n } else if (numFields > 1) {\n const a = fieldTokens.indexOf(true);\n const b = fieldTokens.lastIndexOf(true);\n const context = {\n msg: 4 /* InvalidCombination */,\n /* eslint-disable @typescript-eslint/no-non-null-assertion -- it must be present of it wouldn't be found */\n first: tokens.item(a),\n second: tokens.item(b)\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: tokens.location(b),\n context\n });\n }\n }\n /**\n * Ensure contact token is only used with field names from the second list.\n */\n validateContact(node, tokens, order) {\n if (order.includes(\"contact\") && order.includes(\"field1\")) {\n const a = order.indexOf(\"field1\");\n const b = order.indexOf(\"contact\");\n const context = {\n msg: 4 /* InvalidCombination */,\n /* eslint-disable @typescript-eslint/no-non-null-assertion -- it must be present of it wouldn't be found */\n first: tokens.item(a),\n second: tokens.item(b)\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: tokens.location(b),\n context\n });\n }\n }\n validateOrder(node, tokens, order) {\n const indicies = order.map((it) => expectedOrder.indexOf(it));\n for (let i = 0; i < indicies.length - 1; i++) {\n if (indicies[0] > indicies[i + 1]) {\n const context = {\n msg: 2 /* InvalidOrder */,\n /* eslint-disable @typescript-eslint/no-non-null-assertion -- it must be present of it wouldn't be found */\n first: tokens.item(i),\n second: tokens.item(i + 1)\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: tokens.location(i + 1),\n context\n });\n }\n }\n }\n validateControlGroup(node, tokens, fieldTokens) {\n const numFields = fieldTokens.filter(Boolean).length;\n if (numFields === 0) {\n return;\n }\n if (!node.is(\"input\")) {\n return;\n }\n const attr = node.getAttribute(\"type\");\n const type = attr?.value ?? \"text\";\n if (type instanceof DynamicValue) {\n return;\n }\n const controlGroups = getControlGroups(type);\n const fieldIndex = fieldTokens.indexOf(true);\n const fieldToken = tokens.item(fieldIndex);\n const fieldGroup = fieldNameGroup[fieldToken];\n if (!controlGroups.includes(fieldGroup)) {\n const context = {\n msg: 1 /* InvalidValue */,\n type,\n value: fieldToken,\n what: `<input type=\"${type}\">`\n };\n this.report({\n node,\n message: getTerminalMessage(context),\n location: tokens.location(fieldIndex),\n context\n });\n }\n }\n}\n\nconst defaults$4 = {\n relaxed: false\n};\nclass ValidID extends Rule {\n constructor(options) {\n super({ ...defaults$4, ...options });\n }\n static schema() {\n return {\n relaxed: {\n type: \"boolean\"\n }\n };\n }\n documentation(context) {\n const { relaxed } = this.options;\n const { kind, id } = context;\n const message = this.messages[kind].replace(`\"{{ id }}\"`, \"`{{ id }}`\").replace(\"id\", \"ID\").replace(/^(.)/, (m) => m.toUpperCase());\n const relaxedDescription = relaxed ? [] : [\n \" - ID must begin with a letter\",\n \" - ID must only contain letters, digits, `-` and `_`\"\n ];\n return {\n description: [\n `${interpolate(message, { id })}.`,\n \"\",\n \"Under the current configuration the following rules are applied:\",\n \"\",\n \" - ID must not be empty\",\n \" - ID must not contain any whitespace characters\",\n ...relaxedDescription\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/valid-id.html\"\n };\n }\n setup() {\n this.on(\"attr\", this.isRelevant, (event) => {\n const { value } = event;\n if (value === null || value instanceof DynamicValue) {\n return;\n }\n if (value === \"\") {\n const context = { kind: 1 /* EMPTY */, id: value };\n this.report(event.target, this.messages[context.kind], event.location, context);\n return;\n }\n if (/\\s/.exec(value)) {\n const context = { kind: 2 /* WHITESPACE */, id: value };\n this.report(event.target, this.messages[context.kind], event.valueLocation, context);\n return;\n }\n const { relaxed } = this.options;\n if (relaxed) {\n return;\n }\n if (/^[^\\p{L}]/u.exec(value)) {\n const context = { kind: 3 /* LEADING_CHARACTER */, id: value };\n this.report(event.target, this.messages[context.kind], event.valueLocation, context);\n return;\n }\n if (/[^\\p{L}\\p{N}_-]/u.exec(value)) {\n const context = { kind: 4 /* DISALLOWED_CHARACTER */, id: value };\n this.report(event.target, this.messages[context.kind], event.valueLocation, context);\n }\n });\n }\n get messages() {\n return {\n [1 /* EMPTY */]: `element id \"{{ id }}\" must not be empty`,\n [2 /* WHITESPACE */]: `element id \"{{ id }}\" must not contain whitespace`,\n [3 /* LEADING_CHARACTER */]: `element id \"{{ id }}\" must begin with a letter`,\n [4 /* DISALLOWED_CHARACTER */]: `element id \"{{ id }}\" must only contain letters, digits, dash and underscore characters`\n };\n }\n isRelevant(event) {\n return event.key === \"id\";\n }\n}\n\nclass VoidContent extends Rule {\n documentation(tagName) {\n const doc = {\n description: \"HTML void elements cannot have any content and must not have content or end tag.\",\n url: \"https://html-validate.org/rules/void-content.html\"\n };\n if (tagName) {\n doc.description = `<${tagName}> is a void element and must not have content or end tag.`;\n }\n return doc;\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.target;\n if (!node) {\n return;\n }\n if (!node.voidElement) {\n return;\n }\n if (node.closed === NodeClosed.EndTag) {\n this.report(\n null,\n `End tag for <${node.tagName}> must be omitted`,\n node.location,\n node.tagName\n );\n }\n });\n }\n}\n\nconst defaults$3 = {\n style: \"omit\"\n};\nclass VoidStyle extends Rule {\n style;\n constructor(options) {\n super({ ...defaults$3, ...options });\n this.style = parseStyle(this.options.style);\n }\n static schema() {\n return {\n style: {\n enum: [\"omit\", \"selfclose\", \"selfclosing\"],\n type: \"string\"\n }\n };\n }\n documentation(context) {\n const [desc, end] = styleDescription(context.style);\n return {\n description: `The current configuration requires void elements to ${desc}, use <${context.tagName}${end}> instead.`,\n url: \"https://html-validate.org/rules/void-style.html\"\n };\n }\n setup() {\n const { style } = this;\n const validateStyle = {\n [1 /* AlwaysOmit */]: this.validateOmitted.bind(this),\n [2 /* AlwaysSelfclose */]: this.validateSelfClosed.bind(this)\n }[style];\n this.on(\"tag:end\", (event) => {\n const active = event.previous;\n if (active.meta) {\n validateStyle(active);\n }\n });\n }\n validateOmitted(node) {\n if (!node.voidElement) {\n return;\n }\n if (node.closed !== NodeClosed.VoidSelfClosed) {\n return;\n }\n this.reportError(\n node,\n `Expected omitted end tag <${node.tagName}> instead of self-closing element <${node.tagName}/>`\n );\n }\n validateSelfClosed(node) {\n if (!node.voidElement) {\n return;\n }\n if (node.closed !== NodeClosed.VoidOmitted) {\n return;\n }\n this.reportError(\n node,\n `Expected self-closing element <${node.tagName}/> instead of omitted end-tag <${node.tagName}>`\n );\n }\n reportError(node, message) {\n const context = {\n style: this.style,\n tagName: node.tagName\n };\n super.report(node, message, null, context);\n }\n}\nfunction parseStyle(name) {\n switch (name) {\n case \"omit\":\n return 1 /* AlwaysOmit */;\n case \"selfclose\":\n case \"selfclosing\":\n return 2 /* AlwaysSelfclose */;\n /* istanbul ignore next: covered by schema validation */\n default:\n throw new Error(`Invalid style \"${name}\" for \"void-style\" rule`);\n }\n}\nfunction styleDescription(style) {\n switch (style) {\n case 1 /* AlwaysOmit */:\n return [\"omit end tag\", \"\"];\n case 2 /* AlwaysSelfclose */:\n return [\"be self-closed\", \"/\"];\n // istanbul ignore next: will only happen if new styles are added, otherwise this isn't reached\n default:\n throw new Error(`Unknown style`);\n }\n}\n\nclass H30 extends Rule {\n documentation() {\n return {\n description: \"WCAG 2.1 requires each `<a href>` anchor link to have a text describing the purpose of the link using either plain text or an `<img>` with the `alt` attribute set.\",\n url: \"https://html-validate.org/rules/wcag/h30.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const links = event.document.getElementsByTagName(\"a\");\n for (const link of links) {\n if (!link.hasAttribute(\"href\")) {\n continue;\n }\n if (!inAccessibilityTree(link)) {\n continue;\n }\n const textClassification = classifyNodeText(link, { ignoreHiddenRoot: true });\n if (textClassification !== TextClassification.EMPTY_TEXT) {\n continue;\n }\n const images = link.querySelectorAll(\"img\");\n if (images.some((image) => hasAltText(image))) {\n continue;\n }\n const labels = link.querySelectorAll(\"[aria-label]\");\n if (hasAriaLabel(link) || labels.some((cur) => hasAriaLabel(cur))) {\n continue;\n }\n this.report(link, \"Anchor link must have a text describing its purpose\");\n }\n });\n }\n}\n\nclass H32 extends Rule {\n documentation() {\n return {\n description: \"WCAG 2.1 requires each `<form>` element to have at least one submit button.\",\n url: \"https://html-validate.org/rules/wcag/h32.html\"\n };\n }\n setup() {\n const formTags = this.getTagsWithProperty(\"form\");\n const formSelector = formTags.join(\",\");\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const forms = document.querySelectorAll(formSelector);\n for (const form of forms) {\n if (hasNestedSubmit(form)) {\n continue;\n }\n if (hasAssociatedSubmit(document, form)) {\n continue;\n }\n this.report(form, `<${form.tagName}> element must have a submit button`);\n }\n });\n }\n}\nfunction isSubmit(node) {\n const type = node.getAttribute(\"type\");\n return Boolean(!type || type.valueMatches(/submit|image/));\n}\nfunction isAssociated(id, node) {\n const form = node.getAttribute(\"form\");\n return Boolean(form?.valueMatches(id, true));\n}\nfunction hasNestedSubmit(form) {\n const matches = form.querySelectorAll(\"button,input\").filter(isSubmit).filter((node) => !node.hasAttribute(\"form\"));\n return matches.length > 0;\n}\nfunction hasAssociatedSubmit(document, form) {\n const { id } = form;\n if (!id) {\n return false;\n }\n const matches = document.querySelectorAll(\"button[form],input[form]\").filter(isSubmit).filter((node) => isAssociated(id, node));\n return matches.length > 0;\n}\n\nclass H36 extends Rule {\n documentation() {\n return {\n description: [\n \"WCAG 2.1 requires all images used as submit buttons to have a non-empty textual description using the `alt` attribute.\",\n 'The alt text cannot be empty (`alt=\"\"`).'\n ].join(\"\\n\"),\n url: \"https://html-validate.org/rules/wcag/h36.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.previous;\n if (node.tagName !== \"input\") return;\n if (node.getAttributeValue(\"type\") !== \"image\") {\n return;\n }\n if (!inAccessibilityTree(node)) {\n return;\n }\n if (!hasAltText(node)) {\n const message = \"image used as submit button must have non-empty alt text\";\n const alt = node.getAttribute(\"alt\");\n this.report({\n node,\n message,\n location: alt ? alt.keyLocation : node.location\n });\n }\n });\n }\n}\n\nconst defaults$2 = {\n allowEmpty: true,\n alias: []\n};\nclass H37 extends Rule {\n constructor(options) {\n super({ ...defaults$2, ...options });\n if (!Array.isArray(this.options.alias)) {\n this.options.alias = [this.options.alias];\n }\n }\n static schema() {\n return {\n alias: {\n anyOf: [\n {\n items: {\n type: \"string\"\n },\n type: \"array\"\n },\n {\n type: \"string\"\n }\n ]\n },\n allowEmpty: {\n type: \"boolean\"\n }\n };\n }\n documentation() {\n return {\n description: \"Both HTML5 and WCAG 2.0 requires images to have a alternative text for each image.\",\n url: \"https://html-validate.org/rules/wcag/h37.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const nodes = document.querySelectorAll(\"img\");\n for (const node of nodes) {\n this.validateNode(node);\n }\n });\n }\n validateNode(node) {\n if (!inAccessibilityTree(node)) {\n return;\n }\n if (Boolean(node.getAttributeValue(\"alt\")) || Boolean(node.hasAttribute(\"alt\") && this.options.allowEmpty)) {\n return;\n }\n for (const attr of this.options.alias) {\n if (node.getAttribute(attr)) {\n return;\n }\n }\n const tag = node.annotatedName;\n if (node.hasAttribute(\"alt\")) {\n const attr = node.getAttribute(\"alt\");\n this.report(node, `${tag} cannot have empty \"alt\" attribute`, attr.keyLocation);\n } else {\n this.report(node, `${tag} is missing required \"alt\" attribute`, node.location);\n }\n }\n}\n\nconst defaults$1 = {\n strict: false\n};\nconst { enum: validScopes } = html5.th.attributes?.scope;\nconst joinedScopes = naturalJoin(validScopes);\nconst td = 0;\nconst th = 1;\nfunction getShape(cells) {\n const rows = cells.length;\n const cols = cells[0].length;\n return { rows, cols };\n}\nfunction isSimpleTable(table) {\n const haveHeadersAttr = table.querySelector(\"> tr > [headers], > tbody > tr > [headers]\");\n if (haveHeadersAttr) {\n return false;\n }\n const rows = table.querySelectorAll(\"> tr, > thead > tr, > tbody > tr\");\n if (rows.length === 0) {\n return false;\n }\n const cells = rows.map((tr) => tr.querySelectorAll(\"> *\").map((el) => el.is(\"th\") ? th : td));\n if (cells[0].length === 0) {\n return false;\n }\n const numColumns = cells[0].length;\n if (!cells.every((row) => row.length === numColumns)) {\n return false;\n }\n const shape = getShape(cells);\n const headersPerRow = cells.map((row) => row.reduce((sum, cell) => sum + cell, 0));\n const headersPerColumn = Array(shape.cols).fill(0).map((_, index) => {\n return cells.reduce((sum, it) => sum + it[index], 0);\n });\n const [firstRow, ...otherRows] = headersPerRow;\n if (firstRow === shape.cols && otherRows.every((row) => row === 0)) {\n return true;\n }\n const [firstCol, ...otherCols] = headersPerColumn;\n const haveThead = Boolean(table.querySelector(\"> thead\"));\n if (firstCol === shape.rows && otherCols.every((col) => col === 0) && !haveThead) {\n return true;\n }\n return false;\n}\nclass H63 extends Rule {\n constructor(options) {\n super({ ...defaults$1, ...options });\n }\n static schema() {\n return {\n strict: {\n type: \"boolean\"\n }\n };\n }\n documentation() {\n return {\n description: \"H63: Using the scope attribute to associate header cells and data cells in data tables\",\n url: \"https://html-validate.org/rules/wcag/h63.html\"\n };\n }\n setup() {\n const { strict } = this.options;\n this.on(\"element:ready\", (event) => {\n const node = event.target;\n if (!node.is(\"table\")) {\n return;\n }\n if (strict || !isSimpleTable(node)) {\n this.validateTable(node);\n }\n });\n }\n validateTable(node) {\n for (const th2 of node.querySelectorAll(\"th\")) {\n const scope = th2.getAttribute(\"scope\");\n const value = scope?.value;\n if (value instanceof DynamicValue) {\n continue;\n }\n if (value && validScopes.includes(value)) {\n continue;\n }\n const message = `<th> element must have a valid scope attribute: ${joinedScopes}`;\n const location = scope?.valueLocation ?? scope?.keyLocation ?? th2.location;\n this.report(th2, message, location);\n }\n }\n}\n\nclass H67 extends Rule {\n documentation() {\n return {\n description: \"A decorative image cannot have a title attribute. Either remove `title` or add a descriptive `alt` text.\",\n url: \"https://html-validate.org/rules/wcag/h67.html\"\n };\n }\n setup() {\n this.on(\"tag:end\", (event) => {\n const node = event.target;\n if (!node || node.tagName !== \"img\") {\n return;\n }\n const title = node.getAttribute(\"title\");\n if (!title || title.value === \"\") {\n return;\n }\n const alt = node.getAttributeValue(\"alt\");\n if (alt && alt !== \"\") {\n return;\n }\n this.report(node, \"<img> with empty alt text cannot have title attribute\", title.keyLocation);\n });\n }\n}\n\nclass H71 extends Rule {\n documentation() {\n return {\n description: \"H71: Providing a description for groups of form controls using fieldset and legend elements\",\n url: \"https://html-validate.org/rules/wcag/h71.html\"\n };\n }\n setup() {\n this.on(\"dom:ready\", (event) => {\n const { document } = event;\n const fieldsets = document.querySelectorAll(this.selector);\n for (const fieldset of fieldsets) {\n this.validate(fieldset);\n }\n });\n }\n validate(fieldset) {\n const legend = fieldset.querySelectorAll(\"> legend\");\n if (legend.length === 0) {\n this.reportNode(fieldset);\n }\n }\n reportNode(node) {\n super.report(node, `${node.annotatedName} must have a <legend> as the first child`);\n }\n get selector() {\n return this.getTagsDerivedFrom(\"fieldset\").join(\",\");\n }\n}\n\nconst bundledRules$1 = {\n \"wcag/h30\": H30,\n \"wcag/h32\": H32,\n \"wcag/h36\": H36,\n \"wcag/h37\": H37,\n \"wcag/h63\": H63,\n \"wcag/h67\": H67,\n \"wcag/h71\": H71\n};\n\nconst bundledRules = {\n \"allowed-links\": AllowedLinks,\n \"area-alt\": AreaAlt,\n \"aria-hidden-body\": AriaHiddenBody,\n \"aria-label-misuse\": AriaLabelMisuse,\n \"attr-case\": AttrCase,\n \"attr-delimiter\": AttrDelimiter,\n \"attr-pattern\": AttrPattern,\n \"attr-quotes\": AttrQuotes,\n \"attr-spacing\": AttrSpacing,\n \"attribute-allowed-values\": AttributeAllowedValues,\n \"attribute-boolean-style\": AttributeBooleanStyle,\n \"attribute-empty-style\": AttributeEmptyStyle,\n \"attribute-misuse\": AttributeMisuse,\n \"class-pattern\": ClassPattern,\n \"close-attr\": CloseAttr,\n \"close-order\": CloseOrder,\n deprecated: Deprecated,\n \"deprecated-rule\": DeprecatedRule,\n \"doctype-html\": NoStyleTag$1,\n \"doctype-style\": DoctypeStyle,\n \"element-case\": ElementCase,\n \"element-name\": ElementName,\n \"element-permitted-content\": ElementPermittedContent,\n \"element-permitted-occurrences\": ElementPermittedOccurrences,\n \"element-permitted-order\": ElementPermittedOrder,\n \"element-permitted-parent\": ElementPermittedParent,\n \"element-required-ancestor\": ElementRequiredAncestor,\n \"element-required-attributes\": ElementRequiredAttributes,\n \"element-required-content\": ElementRequiredContent,\n \"empty-heading\": EmptyHeading,\n \"empty-title\": EmptyTitle,\n \"form-dup-name\": FormDupName,\n \"heading-level\": HeadingLevel,\n \"hidden-focusable\": HiddenFocusable,\n \"id-pattern\": IdPattern,\n \"input-attributes\": InputAttributes,\n \"input-missing-label\": InputMissingLabel,\n \"long-title\": LongTitle,\n \"map-dup-name\": MapDupName,\n \"map-id-name\": MapIdName,\n \"meta-refresh\": MetaRefresh,\n \"missing-doctype\": MissingDoctype,\n \"multiple-labeled-controls\": MultipleLabeledControls,\n \"name-pattern\": NamePattern,\n \"no-abstract-role\": NoAbstractRole,\n \"no-autoplay\": NoAutoplay,\n \"no-conditional-comment\": NoConditionalComment,\n \"no-deprecated-attr\": NoDeprecatedAttr,\n \"no-dup-attr\": NoDupAttr,\n \"no-dup-class\": NoDupClass,\n \"no-dup-id\": NoDupID,\n \"no-implicit-button-type\": NoImplicitButtonType,\n \"no-implicit-input-type\": NoImplicitInputType,\n \"no-implicit-close\": NoImplicitClose,\n \"no-inline-style\": NoInlineStyle,\n \"no-missing-references\": NoMissingReferences,\n \"no-multiple-main\": NoMultipleMain,\n \"no-raw-characters\": NoRawCharacters,\n \"no-redundant-aria-label\": NoRedundantAriaLabel,\n \"no-redundant-for\": NoRedundantFor,\n \"no-redundant-role\": NoRedundantRole,\n \"no-self-closing\": NoSelfClosing,\n \"no-style-tag\": NoStyleTag,\n \"no-trailing-whitespace\": NoTrailingWhitespace,\n \"no-unknown-elements\": NoUnknownElements,\n \"no-unused-disable\": NoUnusedDisable,\n \"no-utf8-bom\": NoUtf8Bom,\n \"prefer-button\": PreferButton,\n \"prefer-native-element\": PreferNativeElement,\n \"prefer-tbody\": PreferTbody,\n \"require-csp-nonce\": RequireCSPNonce,\n \"require-sri\": RequireSri,\n \"script-element\": ScriptElement,\n \"script-type\": ScriptType,\n \"svg-focusable\": SvgFocusable,\n \"tel-non-breaking\": TelNonBreaking,\n \"text-content\": TextContent,\n \"unique-landmark\": UniqueLandmark,\n \"unrecognized-char-ref\": UnknownCharReference,\n \"valid-autocomplete\": ValidAutocomplete,\n \"valid-id\": ValidID,\n \"void-content\": VoidContent,\n \"void-style\": VoidStyle,\n ...bundledRules$1\n};\n\nfunction dumpTree(root) {\n const lines = [];\n function decoration(node) {\n let output = \"\";\n if (node.id) {\n output += `#${node.id}`;\n }\n if (node.hasAttribute(\"class\")) {\n output += `.${node.classList.join(\".\")}`;\n }\n return output;\n }\n function writeNode(node, level, indent, sibling) {\n const numSiblings = node.parent ? node.parent.childElements.length : 0;\n const lastSibling = sibling === numSiblings - 1;\n if (node.parent) {\n const b = lastSibling ? \"\\u2514\" : \"\\u251C\";\n lines.push(`${indent}${b}\\u2500\\u2500 ${node.tagName}${decoration(node)}`);\n } else {\n lines.push(\"(root)\");\n }\n node.childElements.forEach((child, index) => {\n const s = lastSibling ? \" \" : \"\\u2502\";\n const i = level > 0 ? `${indent}${s} ` : \"\";\n writeNode(child, level + 1, i, index);\n });\n }\n writeNode(root, 0, \"\", 0);\n return lines;\n}\n\nfunction isThenable(value) {\n return value && typeof value === \"object\" && \"then\" in value && typeof value.then === \"function\";\n}\n\nconst ruleIds = new Set(Object.keys(bundledRules));\nfunction ruleExists(ruleId) {\n return ruleIds.has(ruleId);\n}\n\nvar defaultConfig = {};\n\nconst config$5 = {\n rules: {\n \"area-alt\": [\"error\", { accessible: true }],\n \"aria-hidden-body\": \"error\",\n \"aria-label-misuse\": [\"error\", { allowAnyNamable: false }],\n \"deprecated-rule\": \"warn\",\n \"empty-heading\": \"error\",\n \"empty-title\": \"error\",\n \"hidden-focusable\": \"error\",\n \"meta-refresh\": \"error\",\n \"multiple-labeled-controls\": \"error\",\n \"no-abstract-role\": \"error\",\n \"no-autoplay\": [\"error\", { include: [\"audio\", \"video\"] }],\n \"no-dup-id\": \"error\",\n \"no-implicit-button-type\": \"error\",\n \"no-redundant-aria-label\": \"error\",\n \"no-redundant-for\": \"error\",\n \"no-redundant-role\": \"error\",\n \"prefer-native-element\": \"error\",\n \"svg-focusable\": \"off\",\n \"text-content\": \"error\",\n \"unique-landmark\": \"error\",\n \"valid-autocomplete\": \"error\",\n \"wcag/h30\": \"error\",\n \"wcag/h32\": \"error\",\n \"wcag/h36\": \"error\",\n \"wcag/h37\": \"error\",\n \"wcag/h63\": \"error\",\n \"wcag/h67\": \"error\",\n \"wcag/h71\": \"error\"\n }\n};\n\nconst config$4 = {\n rules: {\n /* doctype is usually not included when fetching source code from browser */\n \"missing-doctype\": \"off\",\n /* some frameworks (such as jQuery) often uses inline style, e.g. for\n * showing/hiding elements so it is counter-productive to check for inline\n * style. If anything it should be used on original sorce code only. */\n \"no-inline-style\": \"off\",\n /* scripts will often add markup with trailing whitespace */\n \"no-trailing-whitespace\": \"off\",\n /* browser normalizes boolean attributes */\n \"attribute-boolean-style\": \"off\",\n \"attribute-empty-style\": \"off\",\n /* the browser will often do what it wants, out of users control */\n \"void-style\": \"off\",\n \"no-self-closing\": \"off\"\n }\n};\n\nconst config$3 = {\n rules: {\n \"input-missing-label\": \"error\",\n \"heading-level\": \"error\",\n \"missing-doctype\": \"error\",\n \"no-missing-references\": \"error\",\n \"require-sri\": \"error\"\n }\n};\n\nconst config$2 = {\n rules: {\n \"attr-quotes\": \"off\",\n \"doctype-style\": \"off\",\n \"void-style\": \"off\"\n }\n};\n\nconst config$1 = {\n rules: {\n \"area-alt\": [\"error\", { accessible: true }],\n \"aria-hidden-body\": \"error\",\n \"aria-label-misuse\": [\"error\", { allowAnyNamable: false }],\n \"attr-case\": \"error\",\n \"attr-delimiter\": \"error\",\n \"attr-quotes\": \"error\",\n \"attr-spacing\": \"error\",\n \"attribute-allowed-values\": \"error\",\n \"attribute-boolean-style\": \"error\",\n \"attribute-empty-style\": \"error\",\n \"attribute-misuse\": \"error\",\n \"close-attr\": \"error\",\n \"close-order\": \"error\",\n deprecated: \"error\",\n \"deprecated-rule\": \"warn\",\n \"doctype-html\": \"error\",\n \"doctype-style\": \"error\",\n \"element-case\": \"error\",\n \"element-name\": \"error\",\n \"element-permitted-content\": \"error\",\n \"element-permitted-occurrences\": \"error\",\n \"element-permitted-order\": \"error\",\n \"element-permitted-parent\": \"error\",\n \"element-required-ancestor\": \"error\",\n \"element-required-attributes\": \"error\",\n \"element-required-content\": \"error\",\n \"empty-heading\": \"error\",\n \"empty-title\": \"error\",\n \"form-dup-name\": \"error\",\n \"hidden-focusable\": \"error\",\n \"input-attributes\": \"error\",\n \"long-title\": \"error\",\n \"map-dup-name\": \"error\",\n \"map-id-name\": \"error\",\n \"meta-refresh\": \"error\",\n \"multiple-labeled-controls\": \"error\",\n \"no-abstract-role\": \"error\",\n \"no-autoplay\": [\"error\", { include: [\"audio\", \"video\"] }],\n \"no-conditional-comment\": \"error\",\n \"no-deprecated-attr\": \"error\",\n \"no-dup-attr\": \"error\",\n \"no-dup-class\": \"error\",\n \"no-dup-id\": \"error\",\n \"no-implicit-button-type\": \"error\",\n \"no-implicit-input-type\": \"error\",\n \"no-implicit-close\": \"error\",\n \"no-inline-style\": \"error\",\n \"no-multiple-main\": \"error\",\n \"no-raw-characters\": \"error\",\n \"no-redundant-aria-label\": \"error\",\n \"no-redundant-for\": \"error\",\n \"no-redundant-role\": \"error\",\n \"no-self-closing\": \"error\",\n \"no-trailing-whitespace\": \"error\",\n \"no-utf8-bom\": \"error\",\n \"no-unused-disable\": \"error\",\n \"prefer-button\": \"error\",\n \"prefer-native-element\": \"error\",\n \"prefer-tbody\": \"error\",\n \"script-element\": \"error\",\n \"script-type\": \"error\",\n \"svg-focusable\": \"off\",\n \"tel-non-breaking\": \"error\",\n \"text-content\": \"error\",\n \"unique-landmark\": \"error\",\n \"unrecognized-char-ref\": \"error\",\n \"valid-autocomplete\": \"error\",\n \"valid-id\": [\"error\", { relaxed: false }],\n void: \"off\",\n \"void-content\": \"error\",\n \"void-style\": \"error\",\n \"wcag/h30\": \"error\",\n \"wcag/h32\": \"error\",\n \"wcag/h36\": \"error\",\n \"wcag/h37\": \"error\",\n \"wcag/h63\": \"error\",\n \"wcag/h67\": \"error\",\n \"wcag/h71\": \"error\"\n }\n};\n\nconst config = {\n rules: {\n \"area-alt\": [\"error\", { accessible: false }],\n \"aria-label-misuse\": [\"error\", { allowAnyNamable: true }],\n \"attr-spacing\": \"error\",\n \"attribute-allowed-values\": \"error\",\n \"attribute-misuse\": \"error\",\n \"close-attr\": \"error\",\n \"close-order\": \"error\",\n deprecated: \"error\",\n \"deprecated-rule\": \"warn\",\n \"doctype-html\": \"error\",\n \"element-name\": \"error\",\n \"element-permitted-content\": \"error\",\n \"element-permitted-occurrences\": \"error\",\n \"element-permitted-order\": \"error\",\n \"element-permitted-parent\": \"error\",\n \"element-required-ancestor\": \"error\",\n \"element-required-attributes\": \"error\",\n \"element-required-content\": \"error\",\n \"map-dup-name\": \"error\",\n \"map-id-name\": \"error\",\n \"multiple-labeled-controls\": \"error\",\n \"no-abstract-role\": \"error\",\n \"no-deprecated-attr\": \"error\",\n \"no-dup-attr\": \"error\",\n \"no-dup-id\": \"error\",\n \"no-multiple-main\": \"error\",\n \"no-raw-characters\": [\"error\", { relaxed: true }],\n \"no-unused-disable\": \"error\",\n \"script-element\": \"error\",\n \"unrecognized-char-ref\": \"error\",\n \"valid-autocomplete\": \"error\",\n \"valid-id\": [\"error\", { relaxed: true }],\n \"void-content\": \"error\"\n }\n};\n\nconst presets = {\n \"html-validate:a11y\": config$5,\n \"html-validate:browser\": config$4,\n \"html-validate:document\": config$3,\n \"html-validate:prettier\": config$2,\n \"html-validate:recommended\": config$1,\n \"html-validate:standard\": config\n};\n\nclass ResolvedConfig {\n metaTable;\n plugins;\n rules;\n transformers;\n /** The original data this resolved configuration was created from */\n original;\n /**\n * @internal\n */\n cache;\n /**\n * @internal\n */\n constructor({ metaTable, plugins, rules, transformers }, original) {\n this.metaTable = metaTable;\n this.plugins = plugins;\n this.rules = rules;\n this.transformers = transformers;\n this.cache = /* @__PURE__ */ new Map();\n this.original = original;\n }\n /**\n * Returns the (merged) configuration data used to create this resolved\n * configuration.\n */\n getConfigData() {\n return this.original;\n }\n getMetaTable() {\n return this.metaTable;\n }\n getPlugins() {\n return this.plugins;\n }\n getRules() {\n return this.rules;\n }\n /**\n * Returns true if a transformer matches given filename.\n *\n * @public\n */\n canTransform(filename) {\n return Boolean(this.findTransformer(filename));\n }\n /**\n * @internal\n */\n findTransformer(filename) {\n const match = this.transformers.find((entry) => entry.pattern.test(filename));\n return match ?? null;\n }\n}\n\nfunction haveResolver(key, value) {\n return key in value;\n}\nfunction haveConfigResolver(value) {\n return haveResolver(\"resolveConfig\", value);\n}\nfunction haveElementsResolver(value) {\n return haveResolver(\"resolveElements\", value);\n}\nfunction havePluginResolver(value) {\n return haveResolver(\"resolvePlugin\", value);\n}\nfunction haveTransformerResolver(value) {\n return haveResolver(\"resolveTransformer\", value);\n}\nfunction resolveConfig(resolvers, id, options) {\n for (const resolver of resolvers.filter(haveConfigResolver)) {\n const config = resolver.resolveConfig(id, options);\n if (isThenable(config)) {\n return resolveConfigAsync(resolvers, id, options);\n }\n if (config) {\n return config;\n }\n }\n throw new UserError(`Failed to load configuration from \"${id}\"`);\n}\nasync function resolveConfigAsync(resolvers, id, options) {\n for (const resolver of resolvers.filter(haveConfigResolver)) {\n const config = await resolver.resolveConfig(id, options);\n if (config) {\n return config;\n }\n }\n throw new UserError(`Failed to load configuration from \"${id}\"`);\n}\nfunction resolveElements(resolvers, id, options) {\n for (const resolver of resolvers.filter(haveElementsResolver)) {\n const elements = resolver.resolveElements(id, options);\n if (isThenable(elements)) {\n return resolveElementsAsync(resolvers, id, options);\n }\n if (elements) {\n return elements;\n }\n }\n throw new UserError(`Failed to load elements from \"${id}\"`);\n}\nasync function resolveElementsAsync(resolvers, id, options) {\n for (const resolver of resolvers.filter(haveElementsResolver)) {\n const elements = await resolver.resolveElements(id, options);\n if (elements) {\n return elements;\n }\n }\n throw new UserError(`Failed to load elements from \"${id}\"`);\n}\nfunction resolvePlugin(resolvers, id, options) {\n for (const resolver of resolvers.filter(havePluginResolver)) {\n const plugin = resolver.resolvePlugin(id, options);\n if (isThenable(plugin)) {\n return resolvePluginAsync(resolvers, id, options);\n }\n if (plugin) {\n return plugin;\n }\n }\n throw new UserError(`Failed to load plugin from \"${id}\"`);\n}\nasync function resolvePluginAsync(resolvers, id, options) {\n for (const resolver of resolvers.filter(havePluginResolver)) {\n const plugin = await resolver.resolvePlugin(id, options);\n if (plugin) {\n return plugin;\n }\n }\n throw new UserError(`Failed to load plugin from \"${id}\"`);\n}\nfunction resolveTransformer(resolvers, id, options) {\n for (const resolver of resolvers.filter(haveTransformerResolver)) {\n const transformer = resolver.resolveTransformer(id, options);\n if (isThenable(transformer)) {\n return resolveTransformerAsync(resolvers, id, options);\n }\n if (transformer) {\n return transformer;\n }\n }\n throw new UserError(`Failed to load transformer from \"${id}\"`);\n}\nasync function resolveTransformerAsync(resolvers, id, options) {\n for (const resolver of resolvers.filter(haveTransformerResolver)) {\n const transformer = await resolver.resolveTransformer(id, options);\n if (transformer) {\n return transformer;\n }\n }\n throw new UserError(`Failed to load transformer from \"${id}\"`);\n}\n\nfunction staticResolver(map = {}) {\n const { elements = {}, configs = {}, plugins = {}, transformers = {} } = map;\n return {\n name: \"static-resolver\",\n addElements(id, value) {\n elements[id] = value;\n },\n addConfig(id, value) {\n configs[id] = value;\n },\n addPlugin(id, value) {\n plugins[id] = value;\n },\n addTransformer(id, value) {\n transformers[id] = value;\n },\n resolveElements(id) {\n return elements[id] ?? null;\n },\n resolveConfig(id) {\n return configs[id] ?? null;\n },\n resolvePlugin(id) {\n return plugins[id] ?? null;\n },\n resolveTransformer(id) {\n return transformers[id] ?? null;\n }\n };\n}\n\nconst ajv = new Ajv({ strict: true, strictTuples: true, strictTypes: true });\najv.addMetaSchema(ajvSchemaDraft);\najv.addKeyword(ajvFunctionKeyword);\nconst validator = ajv.compile(configurationSchema);\nfunction overwriteMerge(_a, b) {\n return b;\n}\nfunction mergeInternal(base, rhs) {\n const dst = deepmerge(base, { ...rhs, rules: {} });\n if (rhs.rules) {\n dst.rules = deepmerge(dst.rules, rhs.rules, { arrayMerge: overwriteMerge });\n }\n const root = Boolean(base.root) || Boolean(rhs.root);\n if (root) {\n dst.root = root;\n }\n return dst;\n}\nfunction toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else {\n return [value];\n }\n}\nfunction transformerEntries(transform) {\n return Object.entries(transform).map(([pattern, value]) => {\n const regex = new RegExp(pattern);\n if (typeof value === \"string\") {\n return { kind: \"import\", pattern: regex, name: value };\n } else {\n return { kind: \"function\", pattern: regex, function: value };\n }\n });\n}\nclass Config {\n config;\n configurations;\n resolvers;\n metaTable;\n plugins;\n transformers = [];\n /**\n * Create a new blank configuration. See also `Config.defaultConfig()`.\n */\n static empty() {\n return new Config([], {\n extends: [],\n rules: {},\n plugins: [],\n transform: {}\n });\n }\n /**\n * Create configuration from object.\n */\n static fromObject(resolvers, options, filename = null) {\n Config.validate(options, filename);\n return Config.create(resolvers, options);\n }\n /**\n * Read configuration from filename.\n *\n * Note: this reads configuration data from a file. If you intent to load\n * configuration for a file to validate use `ConfigLoader.fromTarget()`.\n *\n * @internal\n * @param filename - The file to read from\n */\n static fromFile(resolvers, filename) {\n const configData = resolveConfig(toArray$1(resolvers), filename, { cache: false });\n if (isThenable(configData)) {\n return configData.then((configData2) => Config.fromObject(resolvers, configData2, filename));\n } else {\n return Config.fromObject(resolvers, configData, filename);\n }\n }\n /**\n * Validate configuration data.\n *\n * Throws SchemaValidationError if invalid.\n *\n * @internal\n */\n static validate(configData, filename = null) {\n const valid = validator(configData);\n if (!valid) {\n throw new SchemaValidationError(\n filename,\n `Invalid configuration`,\n configData,\n configurationSchema,\n /* istanbul ignore next: will be set when a validation error has occurred */\n validator.errors ?? []\n );\n }\n if (configData.rules) {\n const normalizedRules = Config.getRulesObject(configData.rules);\n for (const [ruleId, [, ruleOptions]] of normalizedRules.entries()) {\n const cls = bundledRules[ruleId];\n const path = `/rules/${ruleId}/1`;\n Rule.validateOptions(cls, ruleId, path, ruleOptions, filename, configData);\n }\n }\n }\n /**\n * Load a default configuration object.\n */\n static defaultConfig() {\n return new Config([], defaultConfig);\n }\n /**\n * @internal\n */\n static create(resolvers, options) {\n const instance = new Config(resolvers, options);\n const plugins = instance.loadPlugins(instance.config.plugins ?? []);\n if (isThenable(plugins)) {\n return plugins.then((plugins2) => {\n return instance.init(options, plugins2);\n });\n } else {\n return instance.init(options, plugins);\n }\n }\n init(options, plugins) {\n this.plugins = plugins;\n this.configurations = this.loadConfigurations(this.plugins);\n this.extendMeta(this.plugins);\n const update = (extendedConfig2) => {\n this.config = extendedConfig2;\n this.config.extends = [];\n if (options.rules) {\n this.config = mergeInternal(this.config, { rules: options.rules });\n }\n return this;\n };\n const extendedConfig = this.extendConfig(this.config.extends ?? []);\n if (isThenable(extendedConfig)) {\n return extendedConfig.then((extended) => update(extended));\n } else {\n return update(extendedConfig);\n }\n }\n /**\n * @internal\n */\n constructor(resolvers, options) {\n const initial = {\n extends: [],\n plugins: [],\n rules: {},\n transform: {}\n };\n this.config = mergeInternal(initial, options);\n this.configurations = /* @__PURE__ */ new Map();\n this.resolvers = toArray$1(resolvers);\n this.metaTable = null;\n this.plugins = [];\n this.transformers = transformerEntries(this.config.transform ?? {});\n }\n /**\n * Returns true if this configuration is marked as \"root\".\n */\n isRootFound() {\n return Boolean(this.config.root);\n }\n /**\n * Returns a new configuration as a merge of the two. Entries from the passed\n * object takes priority over this object.\n *\n * @public\n * @param rhs - Configuration to merge with this one.\n */\n merge(resolvers, rhs) {\n const instance = new Config(resolvers, mergeInternal(this.config, rhs.config));\n const plugins = instance.loadPlugins(instance.config.plugins ?? []);\n if (isThenable(plugins)) {\n return plugins.then((plugins2) => {\n instance.plugins = plugins2;\n instance.configurations = instance.loadConfigurations(instance.plugins);\n instance.extendMeta(instance.plugins);\n return instance;\n });\n } else {\n instance.plugins = plugins;\n instance.configurations = instance.loadConfigurations(instance.plugins);\n instance.extendMeta(instance.plugins);\n return instance;\n }\n }\n extendConfig(entries) {\n if (entries.length === 0) {\n return this.config;\n }\n let base = {};\n for (const entry of entries) {\n let extended;\n if (this.configurations.has(entry)) {\n extended = this.configurations.get(entry);\n } else {\n const loadedConfig = Config.fromFile(this.resolvers, entry);\n if (isThenable(loadedConfig)) {\n return this.extendConfigAsync(entries);\n }\n extended = loadedConfig.config;\n }\n base = mergeInternal(base, extended);\n }\n return mergeInternal(base, this.config);\n }\n async extendConfigAsync(entries) {\n let base = {};\n for (const entry of entries) {\n let extended;\n if (this.configurations.has(entry)) {\n extended = this.configurations.get(entry);\n } else {\n const loadedConfig = await Config.fromFile(this.resolvers, entry);\n extended = loadedConfig.config;\n }\n base = mergeInternal(base, extended);\n }\n return mergeInternal(base, this.config);\n }\n /**\n * Get element metadata.\n *\n * @internal\n */\n getMetaTable() {\n if (this.metaTable) {\n return this.metaTable;\n }\n const metaTable = new MetaTable();\n for (const plugin of this.getPlugins()) {\n if (plugin.elementSchema) {\n metaTable.extendValidationSchema(plugin.elementSchema);\n }\n }\n const source = Array.from(this.config.elements ?? [\"html5\"]);\n const loadEntry = (entry) => {\n const result = this.getElementsFromEntry(entry);\n if (isThenable(result)) {\n return result.then((result2) => {\n const [obj, filename] = result2;\n metaTable.loadFromObject(obj, filename);\n const next2 = source.shift();\n if (next2) {\n return loadEntry(next2);\n }\n });\n } else {\n const [obj, filename] = result;\n metaTable.loadFromObject(obj, filename);\n const next2 = source.shift();\n if (next2) {\n return loadEntry(next2);\n }\n }\n };\n const next = source.shift();\n if (next) {\n const result = loadEntry(next);\n if (isThenable(result)) {\n return result.then(() => {\n metaTable.init();\n return this.metaTable = metaTable;\n });\n }\n }\n metaTable.init();\n return this.metaTable = metaTable;\n }\n getElementsFromEntry(entry) {\n if (typeof entry !== \"string\") {\n return [entry, null];\n }\n const bundled = bundledElements[entry];\n if (bundled) {\n return [bundled, null];\n }\n try {\n const obj = resolveElements(this.resolvers, entry, { cache: false });\n if (isThenable(obj)) {\n return obj.then((obj2) => {\n return [obj2, entry];\n });\n } else {\n return [obj, entry];\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new ConfigError(\n `Failed to load elements from \"${entry}\": ${message}`,\n ensureError(err)\n );\n }\n }\n /**\n * Get a copy of internal configuration data.\n *\n * @internal primary purpose is unittests\n */\n /* istanbul ignore next: used for testing only */\n get() {\n return { ...this.config };\n }\n /**\n * Get all configured rules, their severity and options.\n *\n * @internal\n */\n getRules() {\n return Config.getRulesObject(this.config.rules ?? {});\n }\n static getRulesObject(src) {\n const rules = /* @__PURE__ */ new Map();\n for (const [ruleId, data] of Object.entries(src)) {\n let options = data;\n if (!Array.isArray(options)) {\n options = [options, {}];\n } else if (options.length === 1) {\n options = [options[0], {}];\n }\n const severity = parseSeverity(options[0]);\n rules.set(ruleId, [severity, options[1]]);\n }\n return rules;\n }\n /**\n * Get all configured plugins.\n *\n * @internal\n */\n getPlugins() {\n return this.plugins;\n }\n /**\n * Get all configured transformers.\n *\n * @internal\n */\n getTransformers() {\n return this.transformers;\n }\n loadPlugins(plugins) {\n const loaded = [];\n const loading = Array.from(plugins);\n const loadPlugin = (entry, index) => {\n if (typeof entry !== \"string\") {\n const plugin = entry;\n plugin.name = plugin.name || `:unnamedPlugin@${String(index + 1)}`;\n plugin.originalName = `:unnamedPlugin@${String(index + 1)}`;\n loaded.push(plugin);\n const next2 = loading.shift();\n if (next2) {\n return loadPlugin(next2, index + 1);\n }\n } else {\n try {\n const plugin = resolvePlugin(this.resolvers, entry, { cache: true });\n if (isThenable(plugin)) {\n return plugin.then((plugin2) => {\n plugin2.name = plugin2.name || entry;\n plugin2.originalName = entry;\n loaded.push(plugin2);\n const next2 = loading.shift();\n if (next2) {\n return loadPlugin(next2, index + 1);\n }\n });\n } else {\n plugin.name = plugin.name || entry;\n plugin.originalName = entry;\n loaded.push(plugin);\n const next2 = loading.shift();\n if (next2) {\n return loadPlugin(next2, index + 1);\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new ConfigError(`Failed to load plugin \"${entry}\": ${message}`, ensureError(err));\n }\n }\n };\n const next = loading.shift();\n if (next) {\n const result = loadPlugin(next, 0);\n if (isThenable(result)) {\n return result.then(() => {\n return loaded;\n });\n }\n }\n return loaded;\n }\n loadConfigurations(plugins) {\n const configs = /* @__PURE__ */ new Map();\n for (const [name, config] of Object.entries(presets)) {\n Config.validate(config, name);\n configs.set(name, config);\n }\n for (const plugin of plugins) {\n for (const [name, config] of Object.entries(plugin.configs ?? {})) {\n if (!config) continue;\n Config.validate(config, name);\n configs.set(`${plugin.name}:${name}`, config);\n if (plugin.name !== plugin.originalName) {\n configs.set(`${plugin.originalName}:${name}`, config);\n }\n }\n }\n return configs;\n }\n extendMeta(plugins) {\n for (const plugin of plugins) {\n if (!plugin.elementSchema) {\n continue;\n }\n const { properties } = plugin.elementSchema;\n if (!properties) {\n continue;\n }\n for (const [raw, schema2] of Object.entries(properties)) {\n const key = raw;\n if (schema2.copyable && !MetaCopyableProperty.includes(key)) {\n MetaCopyableProperty.push(key);\n }\n }\n }\n }\n /**\n * Resolve all configuration and return a [[ResolvedConfig]] instance.\n *\n * A resolved configuration will merge all extended configs and load all\n * plugins and transformers, and normalize the rest of the configuration.\n *\n * @public\n */\n resolve() {\n const resolveData = this.resolveData();\n if (isThenable(resolveData)) {\n return resolveData.then((resolveData2) => {\n return new ResolvedConfig(resolveData2, this.get());\n });\n } else {\n return new ResolvedConfig(resolveData, this.get());\n }\n }\n /**\n * Same as [[resolve]] but returns the raw configuration data instead of\n * [[ResolvedConfig]] instance. Mainly used for testing.\n *\n * @internal\n */\n resolveData() {\n const metaTable = this.getMetaTable();\n if (isThenable(metaTable)) {\n return metaTable.then((metaTable2) => {\n return {\n metaTable: metaTable2,\n plugins: this.getPlugins(),\n rules: this.getRules(),\n transformers: this.transformers\n };\n });\n } else {\n return {\n metaTable,\n plugins: this.getPlugins(),\n rules: this.getRules(),\n transformers: this.transformers\n };\n }\n }\n}\n\nclass ConfigLoader {\n _globalConfig;\n _configData;\n resolvers;\n /**\n * Create a new ConfigLoader.\n *\n * @param resolvers - Sorted list of resolvers to use (in order).\n * @param configData - Default configuration (which all configurations will inherit from).\n */\n constructor(resolvers, configData) {\n this.resolvers = resolvers;\n this._configData = configData;\n this._globalConfig = null;\n }\n /**\n * Set a new default configuration on this loader. Resets cached global\n * configuration.\n *\n * @internal\n */\n setConfigData(configData) {\n this._configData = configData;\n this._globalConfig = null;\n }\n /**\n * Get the global configuration.\n *\n * @returns A promise resolving to the global configuration.\n */\n getGlobalConfig() {\n if (this._globalConfig) {\n return this._globalConfig;\n }\n const config = this._configData ? this.loadFromObject(this._configData) : this.defaultConfig();\n if (isThenable(config)) {\n return config.then((config2) => {\n this._globalConfig = config2;\n return this._globalConfig;\n });\n } else {\n this._globalConfig = config;\n return this._globalConfig;\n }\n }\n /**\n * Get the global configuration.\n *\n * The synchronous version does not support async resolvers.\n *\n * @returns The global configuration.\n */\n getGlobalConfigSync() {\n if (this._globalConfig) {\n return this._globalConfig;\n }\n const config = this._configData ? this.loadFromObject(this._configData) : this.defaultConfig();\n if (isThenable(config)) {\n throw new UserError(\"Cannot load async config from sync function\");\n }\n this._globalConfig = config;\n return this._globalConfig;\n }\n /**\n * @internal\n */\n getResolvers() {\n return this.resolvers;\n }\n /**\n * @internal For testing only\n */\n async _getGlobalConfig() {\n const config = await this.getGlobalConfig();\n return config.get();\n }\n empty() {\n return Config.empty();\n }\n /**\n * Load configuration from object.\n */\n loadFromObject(options, filename) {\n return Config.fromObject(this.resolvers, options, filename);\n }\n /**\n * Load configuration from filename.\n */\n loadFromFile(filename) {\n return Config.fromFile(this.resolvers, filename);\n }\n}\n\nfunction defineConfig(config) {\n return config;\n}\n\nconst defaultResolvers = [];\nfunction hasResolver(value) {\n return Array.isArray(value[0]);\n}\nclass StaticConfigLoader extends ConfigLoader {\n constructor(...args) {\n if (hasResolver(args)) {\n const [resolvers, config] = args;\n super(resolvers, config);\n } else {\n const [config] = args;\n super(defaultResolvers, config);\n }\n }\n /**\n * Set a new configuration for this loader.\n *\n * @public\n * @since 8.20.0\n * @param config - New configuration to use.\n */\n setConfig(config) {\n this.setConfigData(config);\n }\n getConfigFor(_handle, configOverride) {\n const override = this.loadFromObject(configOverride ?? {});\n if (isThenable(override)) {\n return override.then((override2) => this._resolveConfig(override2));\n } else {\n return this._resolveConfig(override);\n }\n }\n flushCache() {\n }\n defaultConfig() {\n return this.loadFromObject({\n extends: [\"html-validate:recommended\"],\n elements: [\"html5\"]\n });\n }\n _resolveConfig(override) {\n if (override.isRootFound()) {\n return override.resolve();\n }\n const globalConfig = this.getGlobalConfig();\n if (isThenable(globalConfig)) {\n return globalConfig.then((globalConfig2) => {\n const merged = globalConfig2.merge(this.resolvers, override);\n if (isThenable(merged)) {\n return merged.then((merged2) => {\n return merged2.resolve();\n });\n } else {\n return merged.resolve();\n }\n });\n } else {\n const merged = globalConfig.merge(this.resolvers, override);\n if (isThenable(merged)) {\n return merged.then((merged2) => {\n return merged2.resolve();\n });\n } else {\n return merged.resolve();\n }\n }\n }\n}\n\nclass EventHandler {\n listeners;\n constructor() {\n this.listeners = {};\n }\n /**\n * Add an event listener.\n *\n * @param event - Event names (comma separated) or '*' for any event.\n * @param callback - Called any time even triggers.\n * @returns Unregistration function.\n */\n on(event, callback) {\n const { listeners } = this;\n const names = event.split(\",\").map((it) => it.trim());\n for (const name of names) {\n const list = listeners[name] ?? [];\n listeners[name] = list;\n list.push(callback);\n }\n return () => {\n for (const name of names) {\n const list = listeners[name];\n this.listeners[name] = list.filter((fn) => fn !== callback);\n }\n };\n }\n /**\n * Add a onetime event listener. The listener will automatically be removed\n * after being triggered once.\n *\n * @param event - Event names (comma separated) or '*' for any event.\n * @param callback - Called any time even triggers.\n * @returns Unregistration function.\n */\n once(event, callback) {\n const deregister = this.on(event, (event2, data) => {\n callback(event2, data);\n deregister();\n });\n return deregister;\n }\n /**\n * Trigger event causing all listeners to be called.\n *\n * @param event - Event name.\n * @param data - Event data.\n */\n trigger(event, data) {\n for (const listener of this.getCallbacks(event)) {\n listener.call(null, event, data);\n }\n }\n getCallbacks(event) {\n const { listeners } = this;\n const callbacks = listeners[event] ?? [];\n const global = listeners[\"*\"] ?? [];\n return [...callbacks, ...global];\n }\n}\n\nconst name = \"html-validate\";\nconst version = \"9.7.1\";\nconst bugs = \"https://gitlab.com/html-validate/html-validate/issues/new\";\n\nfunction freeze(src) {\n return {\n ...src,\n selector: src.selector()\n };\n}\nfunction isThenableArray(value) {\n if (value.length === 0) {\n return false;\n }\n return isThenable(value[0]);\n}\nclass Reporter {\n result;\n constructor() {\n this.result = {};\n }\n static merge(reports) {\n if (isThenable(reports)) {\n return reports.then((reports2) => this.merge(reports2));\n }\n if (isThenableArray(reports)) {\n return Promise.all(reports).then((reports2) => this.merge(reports2));\n }\n const valid = reports.every((report) => report.valid);\n const merged = {};\n reports.forEach((report) => {\n report.results.forEach((result) => {\n const key = result.filePath;\n if (key in merged) {\n merged[key].messages = [...merged[key].messages, ...result.messages];\n } else {\n merged[key] = { ...result };\n }\n });\n });\n const results = Object.values(merged).map((result) => {\n result.errorCount = countErrors(result.messages);\n result.warningCount = countWarnings(result.messages);\n return result;\n });\n return {\n valid,\n results,\n errorCount: sumErrors(results),\n warningCount: sumWarnings(results)\n };\n }\n add(rule, message, severity, node, location, context) {\n if (!(location.filename in this.result)) {\n this.result[location.filename] = [];\n }\n const ruleUrl = rule.documentation(context)?.url;\n const entry = {\n ruleId: rule.name,\n severity,\n message,\n offset: location.offset,\n line: location.line,\n column: location.column,\n size: location.size || 0,\n selector() {\n return node ? node.generateSelector() : null;\n }\n };\n if (ruleUrl) {\n entry.ruleUrl = ruleUrl;\n }\n if (context) {\n entry.context = context;\n }\n this.result[location.filename].push(entry);\n }\n addManual(filename, message) {\n if (!(filename in this.result)) {\n this.result[filename] = [];\n }\n this.result[filename].push(message);\n }\n save(sources) {\n const report = {\n valid: this.isValid(),\n results: Object.keys(this.result).map((filePath) => {\n const messages = Array.from(this.result[filePath], freeze).sort(messageSort);\n const source = (sources ?? []).find((source2) => filePath === source2.filename);\n return {\n filePath,\n messages,\n errorCount: countErrors(messages),\n warningCount: countWarnings(messages),\n source: source ? source.originalData ?? source.data : null\n };\n }),\n errorCount: 0,\n warningCount: 0\n };\n report.errorCount = sumErrors(report.results);\n report.warningCount = sumWarnings(report.results);\n return report;\n }\n isValid() {\n const numErrors = Object.values(this.result).reduce((sum, messages) => {\n return sum + countErrors(messages);\n }, 0);\n return numErrors === 0;\n }\n}\nfunction countErrors(messages) {\n return messages.filter((m) => m.severity === Number(Severity.ERROR)).length;\n}\nfunction countWarnings(messages) {\n return messages.filter((m) => m.severity === Number(Severity.WARN)).length;\n}\nfunction sumErrors(results) {\n return results.reduce((sum, result) => {\n return sum + result.errorCount;\n }, 0);\n}\nfunction sumWarnings(results) {\n return results.reduce((sum, result) => {\n return sum + result.warningCount;\n }, 0);\n}\nfunction messageSort(a, b) {\n if (a.line < b.line) {\n return -1;\n }\n if (a.line > b.line) {\n return 1;\n }\n if (a.column < b.column) {\n return -1;\n }\n if (a.column > b.column) {\n return 1;\n }\n return 0;\n}\n\nfunction definePlugin(plugin) {\n return plugin;\n}\n\nconst regexp = /<!(?:--)?\\[(.*?)\\](?:--)?>/g;\nfunction* parseConditionalComment(comment, commentLocation) {\n let match;\n while ((match = regexp.exec(comment)) !== null) {\n const expression = match[1];\n const begin = match.index;\n const end = begin + match[0].length;\n const location = sliceLocation(commentLocation, begin, end, comment);\n yield {\n expression,\n location\n };\n }\n}\n\nclass ParserError extends Error {\n location;\n constructor(location, message) {\n super(message);\n this.location = location;\n }\n}\n\nfunction isAttrValueToken(token) {\n return Boolean(token && token.type === TokenType.ATTR_VALUE);\n}\nfunction svgShouldRetainTag(foreignTagName, tagName) {\n return foreignTagName === \"svg\" && [\"title\", \"desc\"].includes(tagName);\n}\nfunction isValidDirective(action) {\n const validActions = [\"enable\", \"disable\", \"disable-block\", \"disable-next\"];\n return validActions.includes(action);\n}\nclass Parser {\n event;\n metaTable;\n currentNamespace = \"\";\n dom;\n /**\n * Create a new parser instance.\n *\n * @public\n * @param config - Configuration\n */\n constructor(config) {\n this.event = new EventHandler();\n this.dom = null;\n this.metaTable = config.getMetaTable();\n }\n /**\n * Parse HTML markup.\n *\n * @public\n * @param source - HTML markup.\n * @returns DOM tree representing the HTML markup.\n */\n parseHtml(source) {\n if (typeof source === \"string\") {\n source = {\n data: source,\n filename: \"inline\",\n line: 1,\n column: 1,\n offset: 0\n };\n }\n this.trigger(\"parse:begin\", {\n location: null\n });\n this.dom = new DOMTree({\n filename: source.filename,\n offset: source.offset,\n line: source.line,\n column: source.column,\n size: 0\n });\n this.trigger(\"dom:load\", {\n source,\n location: null\n });\n const lexer = new Lexer();\n const tokenStream = lexer.tokenize(source);\n let it = this.next(tokenStream);\n while (!it.done) {\n const token = it.value;\n this.consume(source, token, tokenStream);\n it = this.next(tokenStream);\n }\n this.dom.resolveMeta(this.metaTable);\n this.dom.root.cacheEnable();\n this.trigger(\"dom:ready\", {\n document: this.dom,\n source,\n /* disable location for this event so rules can use implicit node location\n * instead */\n location: null\n });\n this.trigger(\"parse:end\", {\n location: null\n });\n return this.dom.root;\n }\n /**\n * Detect optional end tag.\n *\n * Some tags have optional end tags (e.g. <ul><li>foo<li>bar</ul> is\n * valid). The parser handles this by checking if the element on top of the\n * stack when is allowed to omit.\n */\n closeOptional(token) {\n const active = this.dom.getActive();\n if (!active.meta?.implicitClosed) {\n return false;\n }\n const tagName = token.data[2];\n const open = !token.data[1];\n const meta = active.meta.implicitClosed;\n if (open) {\n return meta.includes(tagName);\n } else {\n if (active.is(tagName)) {\n return false;\n }\n return Boolean(active.parent && active.parent.is(tagName) && meta.includes(active.tagName));\n }\n }\n /**\n * @internal\n */\n /* eslint-disable-next-line complexity -- there isn't really a good other way to structure this method (that is still readable) */\n consume(source, token, tokenStream) {\n switch (token.type) {\n case TokenType.UNICODE_BOM:\n break;\n case TokenType.TAG_OPEN:\n this.consumeTag(source, token, tokenStream);\n break;\n case TokenType.WHITESPACE:\n this.trigger(\"whitespace\", {\n text: token.data[0],\n location: token.location\n });\n this.appendText(token.data[0], token.location);\n break;\n case TokenType.DIRECTIVE:\n this.consumeDirective(token);\n break;\n case TokenType.CONDITIONAL:\n this.consumeConditional(token);\n break;\n case TokenType.COMMENT:\n this.consumeComment(token);\n break;\n case TokenType.DOCTYPE_OPEN:\n this.consumeDoctype(token, tokenStream);\n break;\n case TokenType.TEXT:\n case TokenType.TEMPLATING:\n this.appendText(token.data[0], token.location);\n break;\n case TokenType.EOF:\n this.closeTree(source, token.location);\n break;\n }\n }\n /**\n * @internal\n */\n /* eslint-disable-next-line complexity -- technical debt, chould be refactored a bit */\n consumeTag(source, startToken, tokenStream) {\n const tokens = Array.from(\n this.consumeUntil(tokenStream, TokenType.TAG_CLOSE, startToken.location)\n );\n const endToken = tokens.slice(-1)[0];\n const closeOptional = this.closeOptional(startToken);\n const parent = closeOptional ? this.dom.getActive().parent : this.dom.getActive();\n const node = HtmlElement.fromTokens(\n startToken,\n endToken,\n parent,\n this.metaTable,\n this.currentNamespace\n );\n const isStartTag = !startToken.data[1];\n const isClosing = !isStartTag || node.closed !== NodeClosed.Open;\n const isForeign = node.meta?.foreign;\n if (closeOptional) {\n const active = this.dom.getActive();\n active.closed = NodeClosed.ImplicitClosed;\n this.closeElement(source, node, active, startToken.location);\n this.dom.popActive();\n }\n if (isStartTag) {\n this.dom.pushActive(node);\n this.trigger(\"tag:start\", {\n target: node,\n location: startToken.location\n });\n }\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n switch (token.type) {\n case TokenType.WHITESPACE:\n break;\n case TokenType.ATTR_NAME:\n this.consumeAttribute(source, node, token, tokens[i + 1]);\n break;\n }\n }\n if (isStartTag) {\n this.trigger(\"tag:ready\", {\n target: node,\n location: endToken.location\n });\n }\n if (isClosing) {\n const active = this.dom.getActive();\n if (!isStartTag) {\n node.closed = NodeClosed.EndTag;\n }\n this.closeElement(source, node, active, endToken.location);\n const mismatched = node.tagName !== active.tagName;\n const voidClosed = !isStartTag && node.voidElement;\n if (!voidClosed && !mismatched) {\n this.dom.popActive();\n }\n } else if (isForeign) {\n this.discardForeignBody(source, node.tagName, tokenStream, startToken.location);\n }\n }\n /**\n * @internal\n */\n closeElement(source, node, active, location) {\n this.processElement(active, source);\n const event = {\n target: node,\n previous: active,\n location\n };\n this.trigger(\"tag:end\", event);\n if (node && node.tagName !== active.tagName && active.closed !== NodeClosed.ImplicitClosed) {\n return;\n }\n if (!active.isRootElement()) {\n this.trigger(\"element:ready\", {\n target: active,\n location: active.location\n });\n }\n }\n processElement(node, source) {\n node.cacheEnable();\n if (source.hooks?.processElement) {\n const processElement = source.hooks.processElement;\n const metaTable = this.metaTable;\n const context = {\n getMetaFor(tagName) {\n return metaTable.getMetaFor(tagName);\n }\n };\n processElement.call(context, node);\n }\n }\n /**\n * Discard tokens until the end tag for the foreign element is found.\n *\n * @internal\n */\n discardForeignBody(source, foreignTagName, tokenStream, errorLocation) {\n let nested = 1;\n let startToken;\n let endToken;\n do {\n const tokens = Array.from(this.consumeUntil(tokenStream, TokenType.TAG_OPEN, errorLocation));\n const [last] = tokens.slice(-1);\n const [, tagClosed, tagName] = last.data;\n if (!tagClosed && svgShouldRetainTag(foreignTagName, tagName)) {\n const oldNamespace = this.currentNamespace;\n this.currentNamespace = \"svg\";\n this.consumeTag(source, last, tokenStream);\n this.consumeUntilMatchingTag(source, tokenStream, tagName);\n this.currentNamespace = oldNamespace;\n continue;\n }\n if (tagName !== foreignTagName) {\n continue;\n }\n const endTokens = Array.from(\n this.consumeUntil(tokenStream, TokenType.TAG_CLOSE, last.location)\n );\n endToken = endTokens.slice(-1)[0];\n const selfClosed = endToken.data[0] === \"/>\";\n if (tagClosed) {\n startToken = last;\n nested--;\n } else if (!selfClosed) {\n nested++;\n }\n } while (nested > 0);\n if (!startToken || !endToken) {\n return;\n }\n const active = this.dom.getActive();\n const node = HtmlElement.fromTokens(startToken, endToken, active, this.metaTable);\n this.closeElement(source, node, active, endToken.location);\n this.dom.popActive();\n }\n /**\n * @internal\n */\n consumeAttribute(source, node, token, next) {\n const { meta } = node;\n const keyLocation = this.getAttributeKeyLocation(token);\n const valueLocation = this.getAttributeValueLocation(next);\n const location = this.getAttributeLocation(token, next);\n const haveValue = isAttrValueToken(next);\n const attrData = {\n key: token.data[1],\n value: null,\n quote: null\n };\n if (haveValue) {\n const [, , value, quote] = next.data;\n attrData.value = value;\n attrData.quote = quote ?? null;\n }\n let processAttribute = (attr) => [attr];\n if (source.hooks?.processAttribute) {\n processAttribute = source.hooks.processAttribute;\n }\n let iterator;\n const legacy = processAttribute.call({}, attrData);\n if (typeof legacy[Symbol.iterator] !== \"function\") {\n iterator = [attrData];\n } else {\n iterator = legacy;\n }\n for (const attr of iterator) {\n const event = {\n target: node,\n key: attr.key,\n value: attr.value,\n quote: attr.quote,\n originalAttribute: attr.originalAttribute,\n location,\n keyLocation,\n valueLocation,\n meta: meta?.attributes[attr.key] ?? null\n };\n this.trigger(\"attr\", event);\n node.setAttribute(attr.key, attr.value, keyLocation, valueLocation, attr.originalAttribute);\n }\n }\n /**\n * Takes attribute key token an returns location.\n */\n getAttributeKeyLocation(token) {\n return token.location;\n }\n /**\n * Take attribute value token and return a new location referring to only the\n * value.\n *\n * foo=\"bar\" foo='bar' foo=bar foo foo=\"\"\n * ^^^ ^^^ ^^^ (null) (null)\n */\n getAttributeValueLocation(token) {\n if (!token || token.type !== TokenType.ATTR_VALUE || token.data[2] === \"\") {\n return null;\n }\n const quote = token.data[3];\n if (quote) {\n return sliceLocation(token.location, 2, -1);\n } else {\n return sliceLocation(token.location, 1);\n }\n }\n /**\n * Take attribute key and value token an returns a new location referring to\n * an aggregate location covering key, quotes if present and value.\n */\n getAttributeLocation(key, value) {\n const begin = key.location;\n const end = value && value.type === TokenType.ATTR_VALUE ? value.location : void 0;\n return {\n filename: begin.filename,\n line: begin.line,\n column: begin.column,\n size: begin.size + (end?.size ?? 0),\n offset: begin.offset\n };\n }\n /**\n * @internal\n */\n consumeDirective(token) {\n const [text, preamble, action, separator1, directive, postamble] = token.data;\n if (!postamble.startsWith(\"]\")) {\n throw new ParserError(token.location, `Missing end bracket \"]\" on directive \"${text}\"`);\n }\n const match = /^(.*?)(?:(\\s*(?:--|:)\\s*)(.*))?$/.exec(directive);\n if (!match) {\n throw new Error(`Failed to parse directive \"${text}\"`);\n }\n if (!isValidDirective(action)) {\n throw new ParserError(token.location, `Unknown directive \"${action}\"`);\n }\n const [, data, separator2, comment] = match;\n const prefix = \"html-validate-\";\n const actionOffset = preamble.length;\n const optionsOffset = actionOffset + action.length + separator1.length;\n const commentOffset = optionsOffset + data.length + (separator2 || \"\").length;\n const location = sliceLocation(\n token.location,\n preamble.length - prefix.length - 1,\n -postamble.length + 1\n );\n const actionLocation = sliceLocation(\n token.location,\n actionOffset,\n actionOffset + action.length\n );\n const optionsLocation = data ? sliceLocation(token.location, optionsOffset, optionsOffset + data.length) : void 0;\n const commentLocation = comment ? sliceLocation(token.location, commentOffset, commentOffset + comment.length) : void 0;\n this.trigger(\"directive\", {\n action,\n data,\n comment: comment || \"\",\n location,\n actionLocation,\n optionsLocation,\n commentLocation\n });\n }\n /**\n * Consumes conditional comment in tag form.\n *\n * See also the related [[consumeCommend]] method.\n *\n * @internal\n */\n consumeConditional(token) {\n const element = this.dom.getActive();\n this.trigger(\"conditional\", {\n condition: token.data[1],\n location: token.location,\n parent: element\n });\n }\n /**\n * Consumes comment token.\n *\n * Tries to find IE conditional comments and emits conditional token if\n * found. See also the related [[consumeConditional]] method.\n *\n * @internal\n */\n consumeComment(token) {\n const comment = token.data[0];\n const element = this.dom.getActive();\n for (const conditional of parseConditionalComment(comment, token.location)) {\n this.trigger(\"conditional\", {\n condition: conditional.expression,\n location: conditional.location,\n parent: element\n });\n }\n }\n /**\n * Consumes doctype tokens. Emits doctype event.\n *\n * @internal\n */\n consumeDoctype(startToken, tokenStream) {\n const tokens = Array.from(\n this.consumeUntil(tokenStream, TokenType.DOCTYPE_CLOSE, startToken.location)\n );\n const doctype = tokens[0];\n const value = doctype.data[0];\n this.dom.doctype = value;\n this.trigger(\"doctype\", {\n tag: startToken.data[1],\n value,\n valueLocation: tokens[0].location,\n location: startToken.location\n });\n }\n /**\n * Return a list of tokens found until the expected token was found.\n *\n * @internal\n * @param errorLocation - What location to use if an error occurs\n */\n *consumeUntil(tokenStream, search, errorLocation) {\n let it = this.next(tokenStream);\n while (!it.done) {\n const token = it.value;\n yield token;\n if (token.type === search) return;\n it = this.next(tokenStream);\n }\n throw new ParserError(\n errorLocation,\n `stream ended before ${TokenType[search]} token was found`\n );\n }\n /**\n * Consumes tokens until a matching close-tag is found. Tags are appended to\n * the document.\n *\n * @internal\n */\n consumeUntilMatchingTag(source, tokenStream, searchTag) {\n let numOpen = 1;\n let it = this.next(tokenStream);\n while (!it.done) {\n const token = it.value;\n this.consume(source, token, tokenStream);\n if (token.type === TokenType.TAG_OPEN) {\n const [, close, tagName] = token.data;\n if (tagName === searchTag) {\n if (close) {\n numOpen--;\n } else {\n numOpen++;\n }\n if (numOpen === 0) {\n return;\n }\n }\n }\n it = this.next(tokenStream);\n }\n }\n next(tokenStream) {\n const it = tokenStream.next();\n if (!it.done) {\n const token = it.value;\n this.trigger(\"token\", {\n location: token.location,\n type: token.type,\n data: Array.from(token.data),\n token\n });\n }\n return it;\n }\n on(event, listener) {\n return this.event.on(event, listener);\n }\n once(event, listener) {\n return this.event.once(event, listener);\n }\n /**\n * Defer execution. Will call function sometime later.\n *\n * @internal\n * @param cb - Callback to execute later.\n */\n defer(cb) {\n this.event.once(\"*\", cb);\n }\n trigger(event, data) {\n if (typeof data.location === \"undefined\") {\n throw new Error(\"Triggered event must contain location\");\n }\n this.event.trigger(event, data);\n }\n /**\n * @internal\n */\n getEventHandler() {\n return this.event;\n }\n /**\n * Appends a text node to the current element on the stack.\n */\n appendText(text, location) {\n this.dom.getActive().appendText(text, location);\n }\n /**\n * Trigger close events for any still open elements.\n */\n closeTree(source, location) {\n let active;\n const documentElement = this.dom.root;\n while ((active = this.dom.getActive()) && !active.isRootElement()) {\n if (active.meta?.implicitClosed) {\n active.closed = NodeClosed.ImplicitClosed;\n this.closeElement(source, documentElement, active, location);\n } else {\n this.closeElement(source, null, active, location);\n }\n this.dom.popActive();\n }\n }\n}\n\nlet blockerCounter = 1;\nfunction createBlocker() {\n const id = blockerCounter++;\n return id;\n}\n\nclass Engine {\n report;\n config;\n ParserClass;\n availableRules;\n constructor(config, ParserClass) {\n this.report = new Reporter();\n this.config = config;\n this.ParserClass = ParserClass;\n const result = this.initPlugins(this.config);\n this.availableRules = {\n ...bundledRules,\n ...result.availableRules\n };\n }\n /**\n * Lint sources and return report\n *\n * @param sources - Sources to lint.\n * @returns Report output.\n */\n lint(sources) {\n for (const source of sources) {\n const parser = this.instantiateParser();\n const { rules } = this.setupPlugins(source, this.config, parser);\n const noUnusedDisable = rules[\"no-unused-disable\"];\n const directiveContext = {\n rules,\n reportUnused(rules2, unused, options, location2) {\n if (!rules2.has(noUnusedDisable.name)) {\n noUnusedDisable.reportUnused(unused, options, location2);\n }\n }\n };\n const location = {\n filename: source.filename,\n line: 1,\n column: 1,\n offset: 0,\n size: 1\n };\n const configEvent = {\n location,\n config: this.config,\n rules\n };\n parser.trigger(\"config:ready\", configEvent);\n const { hooks: _, ...sourceData } = source;\n const sourceEvent = {\n location,\n source: sourceData\n };\n parser.trigger(\"source:ready\", sourceEvent);\n parser.on(\"directive\", (_2, event) => {\n this.processDirective(event, parser, directiveContext);\n });\n try {\n parser.parseHtml(source);\n } catch (e) {\n if (e instanceof InvalidTokenError || e instanceof ParserError) {\n this.reportError(\"parser-error\", e.message, e.location);\n } else {\n throw e;\n }\n }\n }\n return this.report.save(sources);\n }\n /**\n * Returns a list of all events generated while parsing the source.\n *\n * For verbosity, token events are ignored (use [[dumpTokens]] to inspect\n * token stream).\n */\n dumpEvents(source) {\n const parser = this.instantiateParser();\n const lines = [];\n parser.on(\"*\", (event, data) => {\n if (event === \"token\") {\n return;\n }\n lines.push({ event, data });\n });\n source.forEach((src) => parser.parseHtml(src));\n return lines;\n }\n dumpTokens(source) {\n const lexer = new Lexer();\n const lines = [];\n for (const src of source) {\n for (const token of lexer.tokenize(src)) {\n const data = token.data[0] ?? \"\";\n const filename = token.location.filename;\n const line = String(token.location.line);\n const column = String(token.location.column);\n lines.push({\n token: TokenType[token.type],\n data,\n location: `${filename}:${line}:${column}`\n });\n }\n }\n return lines;\n }\n dumpTree(source) {\n const parser = this.instantiateParser();\n const root = parser.parseHtml(source[0]);\n return dumpTree(root);\n }\n /**\n * Get rule documentation.\n */\n getRuleDocumentation({\n ruleId,\n context\n }) {\n const rules = this.config.getRules();\n const ruleData = rules.get(ruleId);\n if (ruleData) {\n const [, options] = ruleData;\n const rule = this.instantiateRule(ruleId, options);\n return rule.documentation(context);\n } else {\n return null;\n }\n }\n /**\n * Create a new parser instance with the current configuration.\n *\n * @internal\n */\n instantiateParser() {\n return new this.ParserClass(this.config);\n }\n processDirective(event, parser, context) {\n const rules = event.data.split(\",\").map((name) => name.trim()).map((name) => context.rules[name]).filter((rule) => {\n return Boolean(rule);\n });\n const location = event.optionsLocation ?? event.location;\n switch (event.action) {\n case \"enable\":\n this.processEnableDirective(rules, parser);\n break;\n case \"disable\":\n this.processDisableDirective(rules, parser);\n break;\n case \"disable-block\":\n this.processDisableBlockDirective(context, rules, parser, event.data, location);\n break;\n case \"disable-next\":\n this.processDisableNextDirective(context, rules, parser, event.data, location);\n break;\n }\n }\n processEnableDirective(rules, parser) {\n for (const rule of rules) {\n rule.setEnabled(true);\n if (rule.getSeverity() === Severity.DISABLED) {\n rule.setServerity(Severity.ERROR);\n }\n }\n parser.on(\"tag:start\", (_event, data) => {\n data.target.enableRules(rules.map((rule) => rule.name));\n });\n }\n processDisableDirective(rules, parser) {\n for (const rule of rules) {\n rule.setEnabled(false);\n }\n parser.on(\"tag:start\", (_event, data) => {\n data.target.disableRules(rules.map((rule) => rule.name));\n });\n }\n processDisableBlockDirective(context, rules, parser, options, location) {\n const ruleIds = new Set(rules.map((it) => it.name));\n const unused = new Set(ruleIds);\n const blocker = createBlocker();\n let directiveBlock = null;\n for (const rule of rules) {\n rule.block(blocker);\n }\n const unregisterOpen = parser.on(\"tag:start\", (_event, data) => {\n directiveBlock ??= data.target.parent?.unique ?? null;\n data.target.blockRules(ruleIds, blocker);\n });\n const unregisterClose = parser.on(\"tag:end\", (_event, data) => {\n const lastNode = directiveBlock === null;\n const parentClosed = directiveBlock === data.previous.unique;\n if (lastNode || parentClosed) {\n unregisterClose();\n unregisterOpen();\n for (const rule of rules) {\n rule.unblock(blocker);\n }\n }\n });\n parser.on(\"rule:error\", (_event, data) => {\n if (data.blockers.includes(blocker)) {\n unused.delete(data.ruleId);\n }\n });\n parser.on(\"parse:end\", () => {\n context.reportUnused(ruleIds, unused, options, location);\n });\n }\n processDisableNextDirective(context, rules, parser, options, location) {\n const ruleIds = new Set(rules.map((it) => it.name));\n const unused = new Set(ruleIds);\n const blocker = createBlocker();\n for (const rule of rules) {\n rule.block(blocker);\n }\n const unregister = parser.on(\"tag:start\", (_event, data) => {\n data.target.blockRules(ruleIds, blocker);\n });\n parser.on(\"rule:error\", (_event, data) => {\n if (data.blockers.includes(blocker)) {\n unused.delete(data.ruleId);\n }\n });\n parser.on(\"parse:end\", () => {\n context.reportUnused(ruleIds, unused, options, location);\n });\n parser.once(\"tag:ready, tag:end, attr\", () => {\n unregister();\n parser.defer(() => {\n for (const rule of rules) {\n rule.unblock(blocker);\n }\n });\n });\n }\n /*\n * Initialize all plugins. This should only be done once for all sessions.\n */\n initPlugins(config) {\n for (const plugin of config.getPlugins()) {\n if (plugin.init) {\n plugin.init();\n }\n }\n return {\n availableRules: this.initRules(config)\n };\n }\n /**\n * Initializes all rules from plugins and returns an object with a mapping\n * between rule name and its constructor.\n */\n initRules(config) {\n const availableRules = {};\n for (const plugin of config.getPlugins()) {\n for (const [name, rule] of Object.entries(plugin.rules ?? {})) {\n if (!rule) continue;\n availableRules[name] = rule;\n }\n }\n return availableRules;\n }\n /**\n * Setup all plugins for this session.\n */\n setupPlugins(source, config, parser) {\n const eventHandler = parser.getEventHandler();\n for (const plugin of config.getPlugins()) {\n if (plugin.setup) {\n plugin.setup(source, eventHandler);\n }\n }\n return {\n rules: this.setupRules(config, parser)\n };\n }\n /**\n * Load and setup all rules for current configuration.\n */\n setupRules(config, parser) {\n const rules = {};\n for (const [ruleId, [severity, options]] of config.getRules().entries()) {\n rules[ruleId] = this.loadRule(ruleId, config, severity, options, parser, this.report);\n }\n return rules;\n }\n /**\n * Load and setup a rule using current config.\n */\n loadRule(ruleId, config, severity, options, parser, report) {\n const meta = config.getMetaTable();\n const rule = this.instantiateRule(ruleId, options);\n rule.name = ruleId;\n rule.init(parser, report, severity, meta);\n if (rule.setup) {\n rule.setup();\n }\n return rule;\n }\n instantiateRule(name, options) {\n if (this.availableRules[name]) {\n const RuleConstructor = this.availableRules[name];\n return new RuleConstructor(options);\n } else {\n return this.missingRule(name);\n }\n }\n missingRule(name) {\n return new class MissingRule extends Rule {\n setup() {\n this.on(\"dom:load\", () => {\n this.report(null, `Definition for rule '${name}' was not found`);\n });\n }\n }();\n }\n reportError(ruleId, message, location) {\n this.report.addManual(location.filename, {\n ruleId,\n severity: Severity.ERROR,\n message,\n offset: location.offset,\n line: location.line,\n column: location.column,\n size: location.size,\n selector: () => null\n });\n }\n}\n\nfunction getNamedTransformerFromPlugin(name, plugins, pluginName, key) {\n const plugin = plugins.find((cur) => cur.name === pluginName);\n if (!plugin) {\n throw new ConfigError(`No plugin named \"${pluginName}\" has been loaded`);\n }\n if (!plugin.transformer) {\n throw new ConfigError(`Plugin does not expose any transformers`);\n }\n if (typeof plugin.transformer === \"function\") {\n throw new ConfigError(\n `Transformer \"${name}\" refers to named transformer but plugin exposes only unnamed, use \"${pluginName}\" instead.`\n );\n }\n const transformer = plugin.transformer[key];\n if (!transformer) {\n throw new ConfigError(`Plugin \"${pluginName}\" does not expose a transformer named \"${key}\".`);\n }\n return transformer;\n}\n\nfunction getTransformerFromModule(resolvers, name) {\n return resolveTransformer(resolvers, name, { cache: true });\n}\n\nfunction getUnnamedTransformerFromPlugin(name, plugin) {\n if (!plugin.transformer) {\n throw new ConfigError(`Plugin does not expose any transformers`);\n }\n if (typeof plugin.transformer !== \"function\") {\n if (plugin.transformer.default) {\n return plugin.transformer.default;\n }\n throw new ConfigError(\n `Transformer \"${name}\" refers to unnamed transformer but plugin exposes only named.`\n );\n }\n return plugin.transformer;\n}\n\nconst TRANSFORMER_API = {\n VERSION: 1\n};\n\nfunction validateTransformer(transformer) {\n const version = transformer.api ?? 0;\n if (version !== TRANSFORMER_API.VERSION) {\n throw new ConfigError(\n `Transformer uses API version ${String(version)} but only version ${String(TRANSFORMER_API.VERSION)} is supported`\n );\n }\n}\nfunction loadTransformerFunction(resolvers, name, plugins) {\n const match = /(.*):(.*)/.exec(name);\n if (match) {\n const [, pluginName, key] = match;\n return getNamedTransformerFromPlugin(name, plugins, pluginName, key);\n }\n const plugin = plugins.find((cur) => cur.name === name);\n if (plugin) {\n return getUnnamedTransformerFromPlugin(name, plugin);\n }\n return getTransformerFromModule(resolvers, name);\n}\nfunction getTransformerFunction(resolvers, name, plugins) {\n try {\n const transformer = loadTransformerFunction(resolvers, name, plugins);\n if (isThenable(transformer)) {\n return transformer.then((transformer2) => {\n validateTransformer(transformer2);\n return transformer2;\n });\n } else {\n validateTransformer(transformer);\n return transformer;\n }\n } catch (err) {\n if (err instanceof ConfigError) {\n throw new ConfigError(`Failed to load transformer \"${name}\": ${err.message}`, err);\n } else {\n throw new ConfigError(`Failed to load transformer \"${name}\"`, ensureError(err));\n }\n }\n}\nfunction getCachedTransformerFunction(cache, resolvers, name, plugins) {\n const cached = cache.get(name);\n if (cached) {\n return cached;\n } else {\n const transformer = getTransformerFunction(resolvers, name, plugins);\n if (isThenable(transformer)) {\n return transformer.then((transformer2) => {\n cache.set(name, transformer2);\n return transformer2;\n });\n } else {\n cache.set(name, transformer);\n return transformer;\n }\n }\n}\n\nfunction isIterable(value) {\n return Boolean(value && typeof value === \"object\" && Symbol.iterator in value);\n}\nfunction toArray(value) {\n return isIterable(value) ? Array.from(value) : [value];\n}\nfunction isNonThenableArray(value) {\n return !value.some(isThenable);\n}\nconst asyncInSyncTransformError = \"Cannot use async transformer from sync function\";\nasync function transformSource(resolvers, config, source, filename) {\n const { cache } = config;\n const transformer = config.findTransformer(filename ?? source.filename);\n const context = {\n hasChain(filename2) {\n return config.canTransform(filename2);\n },\n chain(source2, filename2) {\n return transformSource(resolvers, config, source2, filename2);\n }\n };\n if (!transformer) {\n return Promise.resolve([source]);\n }\n const fn = transformer.kind === \"import\" ? await getCachedTransformerFunction(cache, resolvers, transformer.name, config.getPlugins()) : transformer.function;\n const name = transformer.kind === \"import\" ? transformer.name : transformer.function.name;\n try {\n const result = await fn.call(context, source);\n const transformedSources = await Promise.all(toArray(result));\n for (const source2 of transformedSources) {\n source2.transformedBy ??= [];\n source2.transformedBy.push(name);\n }\n return transformedSources;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new NestedError(`When transforming \"${source.filename}\": ${message}`, ensureError(err));\n }\n}\nfunction transformSourceSync(resolvers, config, source, filename) {\n const { cache } = config;\n const transformer = config.findTransformer(filename ?? source.filename);\n const context = {\n hasChain(filename2) {\n return config.canTransform(filename2);\n },\n chain(source2, filename2) {\n return transformSourceSync(resolvers, config, source2, filename2);\n }\n };\n if (!transformer) {\n return [source];\n }\n const fn = transformer.kind === \"import\" ? getCachedTransformerFunction(cache, resolvers, transformer.name, config.getPlugins()) : transformer.function;\n const name = transformer.kind === \"import\" ? transformer.name : transformer.function.name;\n if (isThenable(fn)) {\n throw new UserError(asyncInSyncTransformError);\n }\n try {\n const result = fn.call(context, source);\n if (isThenable(result)) {\n throw new UserError(asyncInSyncTransformError);\n }\n const transformedSources = toArray(result);\n if (!isNonThenableArray(transformedSources)) {\n throw new UserError(asyncInSyncTransformError);\n }\n for (const source2 of transformedSources) {\n source2.transformedBy ??= [];\n source2.transformedBy.push(name);\n }\n return transformedSources;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new NestedError(`When transforming \"${source.filename}\": ${message}`, ensureError(err));\n }\n}\n\nfunction transformFilename(resolvers, config, filename, fs) {\n const stdin = 0;\n const src = filename !== \"/dev/stdin\" ? filename : stdin;\n const output = fs.readFileSync(src, { encoding: \"utf8\" });\n const data = typeof output === \"string\" ? output : output.toString(\"utf8\");\n const source = {\n data,\n filename,\n line: 1,\n column: 1,\n offset: 0,\n originalData: data\n };\n return transformSource(resolvers, config, source, filename);\n}\nfunction transformFilenameSync(resolvers, config, filename, fs) {\n const stdin = 0;\n const src = filename !== \"/dev/stdin\" ? filename : stdin;\n const output = fs.readFileSync(src, { encoding: \"utf8\" });\n const data = typeof output === \"string\" ? output : output.toString(\"utf8\");\n const source = {\n data,\n filename,\n line: 1,\n column: 1,\n offset: 0,\n originalData: data\n };\n return transformSourceSync(resolvers, config, source, filename);\n}\n\nconst entities = {\n \">\": \">\",\n \"<\": \"<\",\n \"'\": \"'\",\n '\"': \""\",\n \"&\": \"&\"\n};\nfunction xmlescape(src) {\n return src.toString().replace(/[><'\"&]/g, (match) => {\n return entities[match];\n });\n}\nfunction getMessageType(message) {\n switch (message.severity) {\n case 2:\n return \"error\";\n case 1:\n return \"warning\";\n default:\n return \"error\";\n }\n}\nfunction checkstyleFormatter(results) {\n let output = \"\";\n output += `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n`;\n output += `<checkstyle version=\"4.3\">\n`;\n results.forEach((result) => {\n const messages = result.messages;\n output += ` <file name=\"${xmlescape(result.filePath)}\">\n`;\n messages.forEach((message) => {\n const ruleId = xmlescape(`htmlvalidate.rules.${message.ruleId}`);\n output += \" \";\n output += [\n `<error line=\"${xmlescape(message.line)}\"`,\n `column=\"${xmlescape(message.column)}\"`,\n `severity=\"${xmlescape(getMessageType(message))}\"`,\n `message=\"${xmlescape(message.message)} (${message.ruleId})\"`,\n `source=\"${ruleId}\" />`\n ].join(\" \");\n output += \"\\n\";\n });\n output += \" </file>\\n\";\n });\n output += \"</checkstyle>\\n\";\n return output;\n}\nconst formatter$3 = checkstyleFormatter;\n\nconst defaults = {\n showLink: true,\n showSummary: true,\n showSelector: false\n};\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source) {\n const startLoc = {\n ...loc.start\n };\n const endLoc = {\n ...startLoc,\n ...loc.end\n };\n const linesAbove = 2;\n const linesBelow = 3;\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n const start = Math.max(startLine - (linesAbove + 1), 0);\n const end = Math.min(source.length, endLine + linesBelow);\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n return { start, end, markerLines };\n}\nfunction codeFrameColumns(rawLines, loc) {\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines);\n const numberMaxWidth = String(end).length;\n return rawLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${String(number)}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\n \"\\n \",\n gutter.replace(/\\d/g, \" \"),\n \" \",\n markerSpacing,\n \"^\".repeat(numberOfMarkers)\n ].join(\"\");\n }\n return [\">\", gutter, line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return [\" \", gutter, line.length > 0 ? ` ${line}` : \"\"].join(\"\");\n }\n }).join(\"\\n\");\n}\nfunction pluralize(word, count) {\n return count === 1 ? word : `${word}s`;\n}\nfunction formatFilePath(filePath, line, column) {\n if (line && column) {\n filePath += `:${String(line)}:${String(column)}`;\n }\n return kleur.green(filePath);\n}\nfunction getStartLocation(message) {\n return {\n line: message.line,\n column: message.column\n };\n}\nfunction getEndLocation(message, source) {\n let line = message.line;\n let column = message.column;\n for (let i = 0; i < message.size; i++) {\n if (source.charAt(message.offset + i) === \"\\n\") {\n line++;\n column = 0;\n } else {\n column++;\n }\n }\n return { line, column };\n}\nfunction formatMessage(message, parentResult, options) {\n const type = message.severity === 2 ? kleur.red(\"error\") : kleur.yellow(\"warning\");\n const msg = kleur.bold(message.message.replace(/([^ ])\\.$/, \"$1\"));\n const ruleId = kleur.dim(`(${message.ruleId})`);\n const filePath = formatFilePath(parentResult.filePath, message.line, message.column);\n const sourceCode = parentResult.source;\n const firstLine = [\n `${type}:`,\n msg,\n ruleId ? ruleId : \"\",\n sourceCode ? `at ${filePath}:` : `at ${filePath}`\n ].filter(String).join(\" \");\n const result = [firstLine];\n if (sourceCode) {\n const output = codeFrameColumns(sourceCode, {\n start: getStartLocation(message),\n end: getEndLocation(message, sourceCode)\n });\n result.push(output);\n }\n if (options.showSelector) {\n result.push(`${kleur.bold(\"Selector:\")} ${message.selector ?? \"-\"}`);\n }\n if (options.showLink && message.ruleUrl) {\n result.push(`${kleur.bold(\"Details:\")} ${message.ruleUrl}`);\n }\n return result.join(\"\\n\");\n}\nfunction formatSummary(errors, warnings) {\n const summaryColor = errors > 0 ? \"red\" : \"yellow\";\n const summary = [];\n if (errors > 0) {\n summary.push(`${String(errors)} ${pluralize(\"error\", errors)}`);\n }\n if (warnings > 0) {\n summary.push(`${String(warnings)} ${pluralize(\"warning\", warnings)}`);\n }\n return kleur[summaryColor]().bold(`${summary.join(\" and \")} found.`);\n}\nfunction codeframe(results, options) {\n const merged = { ...defaults, ...options };\n let errors = 0;\n let warnings = 0;\n const resultsWithMessages = results.filter((result) => result.messages.length > 0);\n let output = resultsWithMessages.reduce((resultsOutput, result) => {\n const messages = result.messages.map((message) => {\n return `${formatMessage(message, result, merged)}\n\n`;\n });\n errors += result.errorCount;\n warnings += result.warningCount;\n return resultsOutput.concat(messages);\n }, []).join(\"\\n\");\n if (merged.showSummary) {\n output += \"\\n\";\n output += formatSummary(errors, warnings);\n output += \"\\n\";\n }\n return errors + warnings > 0 ? output : \"\";\n}\n\nfunction jsonFormatter(results) {\n return JSON.stringify(results);\n}\nconst formatter$2 = jsonFormatter;\n\nfunction linkSummary(results) {\n const urls = results.reduce((result, it) => {\n const urls2 = it.messages.map((error) => error.ruleUrl).filter((error) => Boolean(error));\n return [...result, ...urls2];\n }, []);\n const unique = Array.from(new Set(urls));\n if (unique.length === 0) {\n return \"\";\n }\n const lines = unique.map((url) => ` ${url}\n`);\n return `\n${kleur.bold(\"More information\")}:\n${lines.join(\"\")}\n`;\n}\nfunction stylish(results) {\n const errors = stylish$1(\n results.map((it) => ({\n ...it,\n fixableErrorCount: 0,\n fixableWarningCount: 0\n }))\n );\n const links = linkSummary(results);\n return `${errors}${links}`;\n}\nconst formatter$1 = stylish;\n\nfunction textFormatter(results) {\n let output = \"\";\n let total = 0;\n results.forEach((result) => {\n const messages = result.messages;\n if (messages.length === 0) {\n return;\n }\n total += messages.length;\n output += messages.map((message) => {\n let messageType;\n if (message.severity === 2) {\n messageType = \"error\";\n } else {\n messageType = \"warning\";\n }\n const line = String(message.line);\n const column = String(message.column);\n const location = `${result.filePath}:${line}:${column}`;\n return `${location}: ${messageType} [${message.ruleId}] ${message.message}\n`;\n }).join(\"\");\n });\n return total > 0 ? output : \"\";\n}\nconst formatter = textFormatter;\n\nconst availableFormatters = {\n checkstyle: formatter$3,\n codeframe,\n json: formatter$2,\n stylish: formatter$1,\n text: formatter\n};\nfunction getFormatter(name) {\n return availableFormatters[name] ?? null;\n}\n\nfunction compatibilityCheckImpl(name, declared, options) {\n const { silent, version: current, logger } = options;\n const valid = semver.satisfies(current, declared);\n if (valid || silent) {\n return valid;\n }\n const text = [\n \"-----------------------------------------------------------------------------------------------------\",\n `${name} requires html-validate version \"${declared}\" but current installed version is ${current}`,\n \"This is not a supported configuration. Please install a supported version before reporting bugs.\",\n \"-----------------------------------------------------------------------------------------------------\"\n ].join(\"\\n\");\n logger(text);\n return false;\n}\n\nvar ignore$1 = {exports: {}};\n\nvar hasRequiredIgnore;\n\nfunction requireIgnore () {\n\tif (hasRequiredIgnore) return ignore$1.exports;\n\thasRequiredIgnore = 1;\n\t(function (module) {\n\t\t// A simple implementation of make-array\n\t\tfunction makeArray (subject) {\n\t\t return Array.isArray(subject)\n\t\t ? subject\n\t\t : [subject]\n\t\t}\n\n\t\tconst UNDEFINED = undefined;\n\t\tconst EMPTY = '';\n\t\tconst SPACE = ' ';\n\t\tconst ESCAPE = '\\\\';\n\t\tconst REGEX_TEST_BLANK_LINE = /^\\s+$/;\n\t\tconst REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\\\]|^)\\\\$/;\n\t\tconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/;\n\t\tconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/;\n\t\tconst REGEX_SPLITALL_CRLF = /\\r?\\n/g;\n\n\t\t// Invalid:\n\t\t// - /foo,\n\t\t// - ./foo,\n\t\t// - ../foo,\n\t\t// - .\n\t\t// - ..\n\t\t// Valid:\n\t\t// - .foo\n\t\tconst REGEX_TEST_INVALID_PATH = /^\\.{0,2}\\/|^\\.{1,2}$/;\n\n\t\tconst REGEX_TEST_TRAILING_SLASH = /\\/$/;\n\n\t\tconst SLASH = '/';\n\n\t\t// Do not use ternary expression here, since \"istanbul ignore next\" is buggy\n\t\tlet TMP_KEY_IGNORE = 'node-ignore';\n\t\t/* istanbul ignore else */\n\t\tif (typeof Symbol !== 'undefined') {\n\t\t TMP_KEY_IGNORE = Symbol.for('node-ignore');\n\t\t}\n\t\tconst KEY_IGNORE = TMP_KEY_IGNORE;\n\n\t\tconst define = (object, key, value) => {\n\t\t Object.defineProperty(object, key, {value});\n\t\t return value\n\t\t};\n\n\t\tconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;\n\n\t\tconst RETURN_FALSE = () => false;\n\n\t\t// Sanitize the range of a regular expression\n\t\t// The cases are complicated, see test cases for details\n\t\tconst sanitizeRange = range => range.replace(\n\t\t REGEX_REGEXP_RANGE,\n\t\t (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n\t\t ? match\n\t\t // Invalid range (out of order) which is ok for gitignore rules but\n\t\t // fatal for JavaScript regular expression, so eliminate it.\n\t\t : EMPTY\n\t\t);\n\n\t\t// See fixtures #59\n\t\tconst cleanRangeBackSlash = slashes => {\n\t\t const {length} = slashes;\n\t\t return slashes.slice(0, length - length % 2)\n\t\t};\n\n\t\t// > If the pattern ends with a slash,\n\t\t// > it is removed for the purpose of the following description,\n\t\t// > but it would only find a match with a directory.\n\t\t// > In other words, foo/ will match a directory foo and paths underneath it,\n\t\t// > but will not match a regular file or a symbolic link foo\n\t\t// > (this is consistent with the way how pathspec works in general in Git).\n\t\t// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n\t\t// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n\t\t// you could use option `mark: true` with `glob`\n\n\t\t// '`foo/`' should not continue with the '`..`'\n\t\tconst REPLACERS = [\n\n\t\t [\n\t\t // Remove BOM\n\t\t // TODO:\n\t\t // Other similar zero-width characters?\n\t\t /^\\uFEFF/,\n\t\t () => EMPTY\n\t\t ],\n\n\t\t // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n\t\t [\n\t\t // (a\\ ) -> (a )\n\t\t // (a ) -> (a)\n\t\t // (a ) -> (a)\n\t\t // (a \\ ) -> (a )\n\t\t /((?:\\\\\\\\)*?)(\\\\?\\s+)$/,\n\t\t (_, m1, m2) => m1 + (\n\t\t m2.indexOf('\\\\') === 0\n\t\t ? SPACE\n\t\t : EMPTY\n\t\t )\n\t\t ],\n\n\t\t // Replace (\\ ) with ' '\n\t\t // (\\ ) -> ' '\n\t\t // (\\\\ ) -> '\\\\ '\n\t\t // (\\\\\\ ) -> '\\\\ '\n\t\t [\n\t\t /(\\\\+?)\\s/g,\n\t\t (_, m1) => {\n\t\t const {length} = m1;\n\t\t return m1.slice(0, length - length % 2) + SPACE\n\t\t }\n\t\t ],\n\n\t\t // Escape metacharacters\n\t\t // which is written down by users but means special for regular expressions.\n\n\t\t // > There are 12 characters with special meanings:\n\t\t // > - the backslash \\,\n\t\t // > - the caret ^,\n\t\t // > - the dollar sign $,\n\t\t // > - the period or dot .,\n\t\t // > - the vertical bar or pipe symbol |,\n\t\t // > - the question mark ?,\n\t\t // > - the asterisk or star *,\n\t\t // > - the plus sign +,\n\t\t // > - the opening parenthesis (,\n\t\t // > - the closing parenthesis ),\n\t\t // > - and the opening square bracket [,\n\t\t // > - the opening curly brace {,\n\t\t // > These special characters are often called \"metacharacters\".\n\t\t [\n\t\t /[\\\\$.|*+(){^]/g,\n\t\t match => `\\\\${match}`\n\t\t ],\n\n\t\t [\n\t\t // > a question mark (?) matches a single character\n\t\t /(?!\\\\)\\?/g,\n\t\t () => '[^/]'\n\t\t ],\n\n\t\t // leading slash\n\t\t [\n\n\t\t // > A leading slash matches the beginning of the pathname.\n\t\t // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n\t\t // A leading slash matches the beginning of the pathname\n\t\t /^\\//,\n\t\t () => '^'\n\t\t ],\n\n\t\t // replace special metacharacter slash after the leading slash\n\t\t [\n\t\t /\\//g,\n\t\t () => '\\\\/'\n\t\t ],\n\n\t\t [\n\t\t // > A leading \"**\" followed by a slash means match in all directories.\n\t\t // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n\t\t // > the same as pattern \"foo\".\n\t\t // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n\t\t // > under directory \"foo\".\n\t\t // Notice that the '*'s have been replaced as '\\\\*'\n\t\t /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n\t\t // '**/foo' <-> 'foo'\n\t\t () => '^(?:.*\\\\/)?'\n\t\t ],\n\n\t\t // starting\n\t\t [\n\t\t // there will be no leading '/'\n\t\t // (which has been replaced by section \"leading slash\")\n\t\t // If starts with '**', adding a '^' to the regular expression also works\n\t\t /^(?=[^^])/,\n\t\t function startingReplacer () {\n\t\t // If has a slash `/` at the beginning or middle\n\t\t return !/\\/(?!$)/.test(this)\n\t\t // > Prior to 2.22.1\n\t\t // > If the pattern does not contain a slash /,\n\t\t // > Git treats it as a shell glob pattern\n\t\t // Actually, if there is only a trailing slash,\n\t\t // git also treats it as a shell glob pattern\n\n\t\t // After 2.22.1 (compatible but clearer)\n\t\t // > If there is a separator at the beginning or middle (or both)\n\t\t // > of the pattern, then the pattern is relative to the directory\n\t\t // > level of the particular .gitignore file itself.\n\t\t // > Otherwise the pattern may also match at any level below\n\t\t // > the .gitignore level.\n\t\t ? '(?:^|\\\\/)'\n\n\t\t // > Otherwise, Git treats the pattern as a shell glob suitable for\n\t\t // > consumption by fnmatch(3)\n\t\t : '^'\n\t\t }\n\t\t ],\n\n\t\t // two globstars\n\t\t [\n\t\t // Use lookahead assertions so that we could match more than one `'/**'`\n\t\t /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n\t\t // Zero, one or several directories\n\t\t // should not use '*', or it will be replaced by the next replacer\n\n\t\t // Check if it is not the last `'/**'`\n\t\t (_, index, str) => index + 6 < str.length\n\n\t\t // case: /**/\n\t\t // > A slash followed by two consecutive asterisks then a slash matches\n\t\t // > zero or more directories.\n\t\t // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n\t\t // '/**/'\n\t\t ? '(?:\\\\/[^\\\\/]+)*'\n\n\t\t // case: /**\n\t\t // > A trailing `\"/**\"` matches everything inside.\n\n\t\t // #21: everything inside but it should not include the current folder\n\t\t : '\\\\/.+'\n\t\t ],\n\n\t\t // normal intermediate wildcards\n\t\t [\n\t\t // Never replace escaped '*'\n\t\t // ignore rule '\\*' will match the path '*'\n\n\t\t // 'abc.*/' -> go\n\t\t // 'abc.*' -> skip this rule,\n\t\t // coz trailing single wildcard will be handed by [trailing wildcard]\n\t\t /(^|[^\\\\]+)(\\\\\\*)+(?=.+)/g,\n\n\t\t // '*.js' matches '.js'\n\t\t // '*.js' doesn't match 'abc'\n\t\t (_, p1, p2) => {\n\t\t // 1.\n\t\t // > An asterisk \"*\" matches anything except a slash.\n\t\t // 2.\n\t\t // > Other consecutive asterisks are considered regular asterisks\n\t\t // > and will match according to the previous rules.\n\t\t const unescaped = p2.replace(/\\\\\\*/g, '[^\\\\/]*');\n\t\t return p1 + unescaped\n\t\t }\n\t\t ],\n\n\t\t [\n\t\t // unescape, revert step 3 except for back slash\n\t\t // For example, if a user escape a '\\\\*',\n\t\t // after step 3, the result will be '\\\\\\\\\\\\*'\n\t\t /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n\t\t () => ESCAPE\n\t\t ],\n\n\t\t [\n\t\t // '\\\\\\\\' -> '\\\\'\n\t\t /\\\\\\\\/g,\n\t\t () => ESCAPE\n\t\t ],\n\n\t\t [\n\t\t // > The range notation, e.g. [a-zA-Z],\n\t\t // > can be used to match one of the characters in a range.\n\n\t\t // `\\` is escaped by step 3\n\t\t /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n\t\t (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n\t\t // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n\t\t ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n\t\t : close === ']'\n\t\t ? endEscape.length % 2 === 0\n\t\t // A normal case, and it is a range notation\n\t\t // '[bar]'\n\t\t // '[bar\\\\\\\\]'\n\t\t ? `[${sanitizeRange(range)}${endEscape}]`\n\t\t // Invalid range notaton\n\t\t // '[bar\\\\]' -> '[bar\\\\\\\\]'\n\t\t : '[]'\n\t\t : '[]'\n\t\t ],\n\n\t\t // ending\n\t\t [\n\t\t // 'js' will not match 'js.'\n\t\t // 'ab' will not match 'abc'\n\t\t /(?:[^*])$/,\n\n\t\t // WTF!\n\t\t // https://git-scm.com/docs/gitignore\n\t\t // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n\t\t // which re-fixes #24, #38\n\n\t\t // > If there is a separator at the end of the pattern then the pattern\n\t\t // > will only match directories, otherwise the pattern can match both\n\t\t // > files and directories.\n\n\t\t // 'js*' will not match 'a.js'\n\t\t // 'js/' will not match 'a.js'\n\t\t // 'js' will match 'a.js' and 'a.js/'\n\t\t match => /\\/$/.test(match)\n\t\t // foo/ will not match 'foo'\n\t\t ? `${match}$`\n\t\t // foo matches 'foo' and 'foo/'\n\t\t : `${match}(?=$|\\\\/$)`\n\t\t ]\n\t\t];\n\n\t\tconst REGEX_REPLACE_TRAILING_WILDCARD = /(^|\\\\\\/)?\\\\\\*$/;\n\t\tconst MODE_IGNORE = 'regex';\n\t\tconst MODE_CHECK_IGNORE = 'checkRegex';\n\t\tconst UNDERSCORE = '_';\n\n\t\tconst TRAILING_WILD_CARD_REPLACERS = {\n\t\t [MODE_IGNORE] (_, p1) {\n\t\t const prefix = p1\n\t\t // '\\^':\n\t\t // '/*' does not match EMPTY\n\t\t // '/*' does not match everything\n\n\t\t // '\\\\\\/':\n\t\t // 'abc/*' does not match 'abc/'\n\t\t ? `${p1}[^/]+`\n\n\t\t // 'a*' matches 'a'\n\t\t // 'a*' matches 'aa'\n\t\t : '[^/]*';\n\n\t\t return `${prefix}(?=$|\\\\/$)`\n\t\t },\n\n\t\t [MODE_CHECK_IGNORE] (_, p1) {\n\t\t // When doing `git check-ignore`\n\t\t const prefix = p1\n\t\t // '\\\\\\/':\n\t\t // 'abc/*' DOES match 'abc/' !\n\t\t ? `${p1}[^/]*`\n\n\t\t // 'a*' matches 'a'\n\t\t // 'a*' matches 'aa'\n\t\t : '[^/]*';\n\n\t\t return `${prefix}(?=$|\\\\/$)`\n\t\t }\n\t\t};\n\n\t\t// @param {pattern}\n\t\tconst makeRegexPrefix = pattern => REPLACERS.reduce(\n\t\t (prev, [matcher, replacer]) =>\n\t\t prev.replace(matcher, replacer.bind(pattern)),\n\t\t pattern\n\t\t);\n\n\t\tconst isString = subject => typeof subject === 'string';\n\n\t\t// > A blank line matches no files, so it can serve as a separator for readability.\n\t\tconst checkPattern = pattern => pattern\n\t\t && isString(pattern)\n\t\t && !REGEX_TEST_BLANK_LINE.test(pattern)\n\t\t && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)\n\n\t\t // > A line starting with # serves as a comment.\n\t\t && pattern.indexOf('#') !== 0;\n\n\t\tconst splitPattern = pattern => pattern\n\t\t.split(REGEX_SPLITALL_CRLF)\n\t\t.filter(Boolean);\n\n\t\tclass IgnoreRule {\n\t\t constructor (\n\t\t pattern,\n\t\t mark,\n\t\t body,\n\t\t ignoreCase,\n\t\t negative,\n\t\t prefix\n\t\t ) {\n\t\t this.pattern = pattern;\n\t\t this.mark = mark;\n\t\t this.negative = negative;\n\n\t\t define(this, 'body', body);\n\t\t define(this, 'ignoreCase', ignoreCase);\n\t\t define(this, 'regexPrefix', prefix);\n\t\t }\n\n\t\t get regex () {\n\t\t const key = UNDERSCORE + MODE_IGNORE;\n\n\t\t if (this[key]) {\n\t\t return this[key]\n\t\t }\n\n\t\t return this._make(MODE_IGNORE, key)\n\t\t }\n\n\t\t get checkRegex () {\n\t\t const key = UNDERSCORE + MODE_CHECK_IGNORE;\n\n\t\t if (this[key]) {\n\t\t return this[key]\n\t\t }\n\n\t\t return this._make(MODE_CHECK_IGNORE, key)\n\t\t }\n\n\t\t _make (mode, key) {\n\t\t const str = this.regexPrefix.replace(\n\t\t REGEX_REPLACE_TRAILING_WILDCARD,\n\n\t\t // It does not need to bind pattern\n\t\t TRAILING_WILD_CARD_REPLACERS[mode]\n\t\t );\n\n\t\t const regex = this.ignoreCase\n\t\t ? new RegExp(str, 'i')\n\t\t : new RegExp(str);\n\n\t\t return define(this, key, regex)\n\t\t }\n\t\t}\n\n\t\tconst createRule = ({\n\t\t pattern,\n\t\t mark\n\t\t}, ignoreCase) => {\n\t\t let negative = false;\n\t\t let body = pattern;\n\n\t\t // > An optional prefix \"!\" which negates the pattern;\n\t\t if (body.indexOf('!') === 0) {\n\t\t negative = true;\n\t\t body = body.substr(1);\n\t\t }\n\n\t\t body = body\n\t\t // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n\t\t // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n\t\t .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n\t\t // > Put a backslash (\"\\\") in front of the first hash for patterns that\n\t\t // > begin with a hash.\n\t\t .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#');\n\n\t\t const regexPrefix = makeRegexPrefix(body);\n\n\t\t return new IgnoreRule(\n\t\t pattern,\n\t\t mark,\n\t\t body,\n\t\t ignoreCase,\n\t\t negative,\n\t\t regexPrefix\n\t\t )\n\t\t};\n\n\t\tclass RuleManager {\n\t\t constructor (ignoreCase) {\n\t\t this._ignoreCase = ignoreCase;\n\t\t this._rules = [];\n\t\t }\n\n\t\t _add (pattern) {\n\t\t // #32\n\t\t if (pattern && pattern[KEY_IGNORE]) {\n\t\t this._rules = this._rules.concat(pattern._rules._rules);\n\t\t this._added = true;\n\t\t return\n\t\t }\n\n\t\t if (isString(pattern)) {\n\t\t pattern = {\n\t\t pattern\n\t\t };\n\t\t }\n\n\t\t if (checkPattern(pattern.pattern)) {\n\t\t const rule = createRule(pattern, this._ignoreCase);\n\t\t this._added = true;\n\t\t this._rules.push(rule);\n\t\t }\n\t\t }\n\n\t\t // @param {Array<string> | string | Ignore} pattern\n\t\t add (pattern) {\n\t\t this._added = false;\n\n\t\t makeArray(\n\t\t isString(pattern)\n\t\t ? splitPattern(pattern)\n\t\t : pattern\n\t\t ).forEach(this._add, this);\n\n\t\t return this._added\n\t\t }\n\n\t\t // Test one single path without recursively checking parent directories\n\t\t //\n\t\t // - checkUnignored `boolean` whether should check if the path is unignored,\n\t\t // setting `checkUnignored` to `false` could reduce additional\n\t\t // path matching.\n\t\t // - check `string` either `MODE_IGNORE` or `MODE_CHECK_IGNORE`\n\n\t\t // @returns {TestResult} true if a file is ignored\n\t\t test (path, checkUnignored, mode) {\n\t\t let ignored = false;\n\t\t let unignored = false;\n\t\t let matchedRule;\n\n\t\t this._rules.forEach(rule => {\n\t\t const {negative} = rule;\n\n\t\t // | ignored : unignored\n\t\t // -------- | ---------------------------------------\n\t\t // negative | 0:0 | 0:1 | 1:0 | 1:1\n\t\t // -------- | ------- | ------- | ------- | --------\n\t\t // 0 | TEST | TEST | SKIP | X\n\t\t // 1 | TESTIF | SKIP | TEST | X\n\n\t\t // - SKIP: always skip\n\t\t // - TEST: always test\n\t\t // - TESTIF: only test if checkUnignored\n\t\t // - X: that never happen\n\t\t if (\n\t\t unignored === negative && ignored !== unignored\n\t\t || negative && !ignored && !unignored && !checkUnignored\n\t\t ) {\n\t\t return\n\t\t }\n\n\t\t const matched = rule[mode].test(path);\n\n\t\t if (!matched) {\n\t\t return\n\t\t }\n\n\t\t ignored = !negative;\n\t\t unignored = negative;\n\n\t\t matchedRule = negative\n\t\t ? UNDEFINED\n\t\t : rule;\n\t\t });\n\n\t\t const ret = {\n\t\t ignored,\n\t\t unignored\n\t\t };\n\n\t\t if (matchedRule) {\n\t\t ret.rule = matchedRule;\n\t\t }\n\n\t\t return ret\n\t\t }\n\t\t}\n\n\t\tconst throwError = (message, Ctor) => {\n\t\t throw new Ctor(message)\n\t\t};\n\n\t\tconst checkPath = (path, originalPath, doThrow) => {\n\t\t if (!isString(path)) {\n\t\t return doThrow(\n\t\t `path must be a string, but got \\`${originalPath}\\``,\n\t\t TypeError\n\t\t )\n\t\t }\n\n\t\t // We don't know if we should ignore EMPTY, so throw\n\t\t if (!path) {\n\t\t return doThrow(`path must not be empty`, TypeError)\n\t\t }\n\n\t\t // Check if it is a relative path\n\t\t if (checkPath.isNotRelative(path)) {\n\t\t const r = '`path.relative()`d';\n\t\t return doThrow(\n\t\t `path should be a ${r} string, but got \"${originalPath}\"`,\n\t\t RangeError\n\t\t )\n\t\t }\n\n\t\t return true\n\t\t};\n\n\t\tconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path);\n\n\t\tcheckPath.isNotRelative = isNotRelative;\n\n\t\t// On windows, the following function will be replaced\n\t\t/* istanbul ignore next */\n\t\tcheckPath.convert = p => p;\n\n\n\t\tclass Ignore {\n\t\t constructor ({\n\t\t ignorecase = true,\n\t\t ignoreCase = ignorecase,\n\t\t allowRelativePaths = false\n\t\t } = {}) {\n\t\t define(this, KEY_IGNORE, true);\n\n\t\t this._rules = new RuleManager(ignoreCase);\n\t\t this._strictPathCheck = !allowRelativePaths;\n\t\t this._initCache();\n\t\t }\n\n\t\t _initCache () {\n\t\t // A cache for the result of `.ignores()`\n\t\t this._ignoreCache = Object.create(null);\n\n\t\t // A cache for the result of `.test()`\n\t\t this._testCache = Object.create(null);\n\t\t }\n\n\t\t add (pattern) {\n\t\t if (this._rules.add(pattern)) {\n\t\t // Some rules have just added to the ignore,\n\t\t // making the behavior changed,\n\t\t // so we need to re-initialize the result cache\n\t\t this._initCache();\n\t\t }\n\n\t\t return this\n\t\t }\n\n\t\t // legacy\n\t\t addPattern (pattern) {\n\t\t return this.add(pattern)\n\t\t }\n\n\t\t // @returns {TestResult}\n\t\t _test (originalPath, cache, checkUnignored, slices) {\n\t\t const path = originalPath\n\t\t // Supports nullable path\n\t\t && checkPath.convert(originalPath);\n\n\t\t checkPath(\n\t\t path,\n\t\t originalPath,\n\t\t this._strictPathCheck\n\t\t ? throwError\n\t\t : RETURN_FALSE\n\t\t );\n\n\t\t return this._t(path, cache, checkUnignored, slices)\n\t\t }\n\n\t\t checkIgnore (path) {\n\t\t // If the path doest not end with a slash, `.ignores()` is much equivalent\n\t\t // to `git check-ignore`\n\t\t if (!REGEX_TEST_TRAILING_SLASH.test(path)) {\n\t\t return this.test(path)\n\t\t }\n\n\t\t const slices = path.split(SLASH).filter(Boolean);\n\t\t slices.pop();\n\n\t\t if (slices.length) {\n\t\t const parent = this._t(\n\t\t slices.join(SLASH) + SLASH,\n\t\t this._testCache,\n\t\t true,\n\t\t slices\n\t\t );\n\n\t\t if (parent.ignored) {\n\t\t return parent\n\t\t }\n\t\t }\n\n\t\t return this._rules.test(path, false, MODE_CHECK_IGNORE)\n\t\t }\n\n\t\t _t (\n\t\t // The path to be tested\n\t\t path,\n\n\t\t // The cache for the result of a certain checking\n\t\t cache,\n\n\t\t // Whether should check if the path is unignored\n\t\t checkUnignored,\n\n\t\t // The path slices\n\t\t slices\n\t\t ) {\n\t\t if (path in cache) {\n\t\t return cache[path]\n\t\t }\n\n\t\t if (!slices) {\n\t\t // path/to/a.js\n\t\t // ['path', 'to', 'a.js']\n\t\t slices = path.split(SLASH).filter(Boolean);\n\t\t }\n\n\t\t slices.pop();\n\n\t\t // If the path has no parent directory, just test it\n\t\t if (!slices.length) {\n\t\t return cache[path] = this._rules.test(path, checkUnignored, MODE_IGNORE)\n\t\t }\n\n\t\t const parent = this._t(\n\t\t slices.join(SLASH) + SLASH,\n\t\t cache,\n\t\t checkUnignored,\n\t\t slices\n\t\t );\n\n\t\t // If the path contains a parent directory, check the parent first\n\t\t return cache[path] = parent.ignored\n\t\t // > It is not possible to re-include a file if a parent directory of\n\t\t // > that file is excluded.\n\t\t ? parent\n\t\t : this._rules.test(path, checkUnignored, MODE_IGNORE)\n\t\t }\n\n\t\t ignores (path) {\n\t\t return this._test(path, this._ignoreCache, false).ignored\n\t\t }\n\n\t\t createFilter () {\n\t\t return path => !this.ignores(path)\n\t\t }\n\n\t\t filter (paths) {\n\t\t return makeArray(paths).filter(this.createFilter())\n\t\t }\n\n\t\t // @returns {TestResult}\n\t\t test (path) {\n\t\t return this._test(path, this._testCache, true)\n\t\t }\n\t\t}\n\n\t\tconst factory = options => new Ignore(options);\n\n\t\tconst isPathValid = path =>\n\t\t checkPath(path && checkPath.convert(path), path, RETURN_FALSE);\n\n\t\t/* istanbul ignore next */\n\t\tconst setupWindows = () => {\n\t\t /* eslint no-control-regex: \"off\" */\n\t\t const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n\t\t || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n\t\t ? str\n\t\t : str.replace(/\\\\/g, '/');\n\n\t\t checkPath.convert = makePosix;\n\n\t\t // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n\t\t // 'd:\\\\foo'\n\t\t const REGEX_TEST_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i;\n\t\t checkPath.isNotRelative = path =>\n\t\t REGEX_TEST_WINDOWS_PATH_ABSOLUTE.test(path)\n\t\t || isNotRelative(path);\n\t\t};\n\n\n\t\t// Windows\n\t\t// --------------------------------------------------------------\n\t\t/* istanbul ignore next */\n\t\tif (\n\t\t // Detect `process` so that it can run in browsers.\n\t\t typeof process !== 'undefined'\n\t\t && process.platform === 'win32'\n\t\t) {\n\t\t setupWindows();\n\t\t}\n\n\t\t// COMMONJS_EXPORTS ////////////////////////////////////////////////////////////\n\n\t\tmodule.exports = factory;\n\n\t\t// Although it is an anti-pattern,\n\t\t// it is still widely misused by a lot of libraries in github\n\t\t// Ref: https://github.com/search?q=ignore.default%28%29&type=code\n\t\tfactory.default = factory;\n\n\t\tmodule.exports.isPathValid = isPathValid;\n\n\t\t// For testing purposes\n\t\tdefine(module.exports, Symbol.for('setupWindows'), setupWindows); \n\t} (ignore$1));\n\treturn ignore$1.exports;\n}\n\nvar ignoreExports = /*@__PURE__*/ requireIgnore();\nvar ignore = /*@__PURE__*/getDefaultExportFromCjs(ignoreExports);\n\nconst engines = {\n\tnode: \"^18.19.0 || >= 20.6.0\"\n};\n\nvar workerPath = \"./jest-worker.js\";\n\nexport { compatibilityCheckImpl as $, Attribute as A, Reporter as B, Config as C, DOMNode as D, definePlugin as E, ruleExists as F, walk as G, HtmlElement as H, EventHandler as I, engines as J, normalizeSource as K, transformSource as L, MetaCopyableProperty as M, NodeClosed as N, Engine as O, Parser as P, transformSourceSync as Q, ResolvedConfig as R, Severity as S, TextNode as T, UserError as U, Validator as V, WrappedError as W, transformFilename as X, transformFilenameSync as Y, configurationSchema as Z, isThenable as _, ConfigError as a, workerPath as a0, codeframe as a1, name as a2, bugs as a3, ConfigLoader as b, defineConfig as c, deepmerge as d, ensureError as e, StaticConfigLoader as f, getFormatter as g, DOMTokenList as h, ignore as i, DOMTree as j, DynamicValue as k, NodeType as l, NestedError as m, SchemaValidationError as n, isUserError as o, presets as p, MetaTable as q, TextContent$1 as r, staticResolver as s, Rule as t, ariaNaming as u, version as v, TextClassification as w, classifyNodeText as x, keywordPatternMatcher as y, sliceLocation as z };\n//# sourceMappingURL=core.js.map\n","import { f as StaticConfigLoader, K as normalizeSource, L as transformSource, O as Engine, P as Parser, Q as transformSourceSync, X as transformFilename, Y as transformFilenameSync, B as Reporter, Z as configurationSchema, _ as isThenable, U as UserError, b as ConfigLoader, $ as compatibilityCheckImpl, v as version } from './core.js';\n\nfunction isSourceHooks(value) {\n if (!value || typeof value === \"string\") {\n return false;\n }\n return Boolean(value.processAttribute ?? value.processElement);\n}\nfunction isConfigData(value) {\n if (!value || typeof value === \"string\") {\n return false;\n }\n return !(value.processAttribute ?? value.processElement);\n}\nclass HtmlValidate {\n configLoader;\n constructor(arg) {\n const [loader, config] = arg instanceof ConfigLoader ? [arg, void 0] : [void 0, arg];\n this.configLoader = loader ?? new StaticConfigLoader(config);\n }\n /* eslint-enable @typescript-eslint/unified-signatures */\n validateString(str, arg1, arg2, arg3) {\n const filename = typeof arg1 === \"string\" ? arg1 : \"inline\";\n const options = isConfigData(arg1) ? arg1 : isConfigData(arg2) ? arg2 : void 0;\n const hooks = isSourceHooks(arg1) ? arg1 : isSourceHooks(arg2) ? arg2 : arg3;\n const source = {\n data: str,\n filename,\n line: 1,\n column: 1,\n offset: 0,\n hooks\n };\n return this.validateSource(source, options);\n }\n /* eslint-enable @typescript-eslint/unified-signatures */\n validateStringSync(str, arg1, arg2, arg3) {\n const filename = typeof arg1 === \"string\" ? arg1 : \"inline\";\n const options = isConfigData(arg1) ? arg1 : isConfigData(arg2) ? arg2 : void 0;\n const hooks = isSourceHooks(arg1) ? arg1 : isSourceHooks(arg2) ? arg2 : arg3;\n const source = {\n data: str,\n filename,\n line: 1,\n column: 1,\n offset: 0,\n hooks\n };\n return this.validateSourceSync(source, options);\n }\n /**\n * Parse and validate HTML from [[Source]].\n *\n * @public\n * @param input - Source to parse.\n * @returns Report output.\n */\n async validateSource(input, configOverride) {\n const source = normalizeSource(input);\n const config = await this.getConfigFor(source.filename, configOverride);\n const resolvers = this.configLoader.getResolvers();\n const transformedSource = await transformSource(resolvers, config, source);\n const engine = new Engine(config, Parser);\n return engine.lint(transformedSource);\n }\n /**\n * Parse and validate HTML from [[Source]].\n *\n * @public\n * @param input - Source to parse.\n * @returns Report output.\n */\n validateSourceSync(input, configOverride) {\n const source = normalizeSource(input);\n const config = this.getConfigForSync(source.filename, configOverride);\n const resolvers = this.configLoader.getResolvers();\n const transformedSource = transformSourceSync(resolvers, config, source);\n const engine = new Engine(config, Parser);\n return engine.lint(transformedSource);\n }\n /**\n * Parse and validate HTML from file.\n *\n * @public\n * @param filename - Filename to read and parse.\n * @returns Report output.\n */\n async validateFile(filename, fs) {\n const config = await this.getConfigFor(filename);\n const resolvers = this.configLoader.getResolvers();\n const source = await transformFilename(resolvers, config, filename, fs);\n const engine = new Engine(config, Parser);\n return Promise.resolve(engine.lint(source));\n }\n /**\n * Parse and validate HTML from file.\n *\n * @public\n * @param filename - Filename to read and parse.\n * @returns Report output.\n */\n validateFileSync(filename, fs) {\n const config = this.getConfigForSync(filename);\n const resolvers = this.configLoader.getResolvers();\n const source = transformFilenameSync(resolvers, config, filename, fs);\n const engine = new Engine(config, Parser);\n return engine.lint(source);\n }\n /**\n * Parse and validate HTML from multiple files. Result is merged together to a\n * single report.\n *\n * @param filenames - Filenames to read and parse.\n * @returns Report output.\n */\n async validateMultipleFiles(filenames, fs) {\n return Reporter.merge(filenames.map((filename) => this.validateFile(filename, fs)));\n }\n /**\n * Parse and validate HTML from multiple files. Result is merged together to a\n * single report.\n *\n * @param filenames - Filenames to read and parse.\n * @returns Report output.\n */\n validateMultipleFilesSync(filenames, fs) {\n return Reporter.merge(filenames.map((filename) => this.validateFileSync(filename, fs)));\n }\n /**\n * Returns true if the given filename can be validated.\n *\n * A file is considered to be validatable if the extension is `.html` or if a\n * transformer matches the filename.\n *\n * This is mostly useful for tooling to determine whenever to validate the\n * file or not. CLI tools will run on all the given files anyway.\n */\n async canValidate(filename) {\n if (filename.toLowerCase().endsWith(\".html\")) {\n return true;\n }\n const config = await this.getConfigFor(filename);\n return config.canTransform(filename);\n }\n /**\n * Returns true if the given filename can be validated.\n *\n * A file is considered to be validatable if the extension is `.html` or if a\n * transformer matches the filename.\n *\n * This is mostly useful for tooling to determine whenever to validate the\n * file or not. CLI tools will run on all the given files anyway.\n */\n canValidateSync(filename) {\n if (filename.toLowerCase().endsWith(\".html\")) {\n return true;\n }\n const config = this.getConfigForSync(filename);\n return config.canTransform(filename);\n }\n /**\n * Tokenize filename and output all tokens.\n *\n * Using CLI this is enabled with `--dump-tokens`. Mostly useful for\n * debugging.\n *\n * @internal\n * @param filename - Filename to tokenize.\n */\n async dumpTokens(filename, fs) {\n const config = await this.getConfigFor(filename);\n const resolvers = this.configLoader.getResolvers();\n const source = await transformFilename(resolvers, config, filename, fs);\n const engine = new Engine(config, Parser);\n return engine.dumpTokens(source);\n }\n /**\n * Parse filename and output all events.\n *\n * Using CLI this is enabled with `--dump-events`. Mostly useful for\n * debugging.\n *\n * @internal\n * @param filename - Filename to dump events from.\n */\n async dumpEvents(filename, fs) {\n const config = await this.getConfigFor(filename);\n const resolvers = this.configLoader.getResolvers();\n const source = await transformFilename(resolvers, config, filename, fs);\n const engine = new Engine(config, Parser);\n return engine.dumpEvents(source);\n }\n /**\n * Parse filename and output DOM tree.\n *\n * Using CLI this is enabled with `--dump-tree`. Mostly useful for\n * debugging.\n *\n * @internal\n * @param filename - Filename to dump DOM tree from.\n */\n async dumpTree(filename, fs) {\n const config = await this.getConfigFor(filename);\n const resolvers = this.configLoader.getResolvers();\n const source = await transformFilename(resolvers, config, filename, fs);\n const engine = new Engine(config, Parser);\n return engine.dumpTree(source);\n }\n /**\n * Transform filename and output source data.\n *\n * Using CLI this is enabled with `--dump-source`. Mostly useful for\n * debugging.\n *\n * @internal\n * @param filename - Filename to dump source from.\n */\n async dumpSource(filename, fs) {\n const config = await this.getConfigFor(filename);\n const resolvers = this.configLoader.getResolvers();\n const sources = await transformFilename(resolvers, config, filename, fs);\n return sources.reduce((result, source) => {\n const line = String(source.line);\n const column = String(source.column);\n const offset = String(source.offset);\n result.push(`Source ${source.filename}@${line}:${column} (offset: ${offset})`);\n if (source.transformedBy) {\n result.push(\"Transformed by:\");\n result = result.concat(source.transformedBy.reverse().map((name) => ` - ${name}`));\n }\n if (source.hooks && Object.keys(source.hooks).length > 0) {\n result.push(\"Hooks\");\n for (const [key, present] of Object.entries(source.hooks)) {\n if (present) {\n result.push(` - ${key}`);\n }\n }\n }\n result.push(\"---\");\n result = result.concat(source.data.split(\"\\n\"));\n result.push(\"---\");\n return result;\n }, []);\n }\n /**\n * Get effective configuration schema.\n */\n getConfigurationSchema() {\n return Promise.resolve(configurationSchema);\n }\n /**\n * Get effective metadata element schema.\n *\n * If a filename is given the configured plugins can extend the\n * schema. Filename must not be an existing file or a filetype normally\n * handled by html-validate but the path will be used when resolving\n * configuration. As a rule-of-thumb, set it to the elements json file.\n */\n async getElementsSchema(filename) {\n const config = await this.getConfigFor(filename ?? \"inline\");\n const metaTable = config.getMetaTable();\n return metaTable.getJSONSchema();\n }\n /**\n * Get effective metadata element schema.\n *\n * If a filename is given the configured plugins can extend the\n * schema. Filename must not be an existing file or a filetype normally\n * handled by html-validate but the path will be used when resolving\n * configuration. As a rule-of-thumb, set it to the elements json file.\n */\n getElementsSchemaSync(filename) {\n const config = this.getConfigForSync(filename ?? \"inline\");\n const metaTable = config.getMetaTable();\n return metaTable.getJSONSchema();\n }\n async getContextualDocumentation(message, filenameOrConfig = \"inline\") {\n const config = typeof filenameOrConfig === \"string\" ? await this.getConfigFor(filenameOrConfig) : await filenameOrConfig;\n const engine = new Engine(config, Parser);\n return engine.getRuleDocumentation(message);\n }\n getContextualDocumentationSync(message, filenameOrConfig = \"inline\") {\n const config = typeof filenameOrConfig === \"string\" ? this.getConfigForSync(filenameOrConfig) : filenameOrConfig;\n const engine = new Engine(config, Parser);\n return engine.getRuleDocumentation(message);\n }\n /**\n * Get contextual documentation for the given rule.\n *\n * Typical usage:\n *\n * ```js\n * const report = await htmlvalidate.validateFile(\"my-file.html\");\n * for (const result of report.results){\n * const config = await htmlvalidate.getConfigFor(result.filePath);\n * for (const message of result.messages){\n * const documentation = await htmlvalidate.getRuleDocumentation(message.ruleId, config, message.context);\n * // do something with documentation\n * }\n * }\n * ```\n *\n * @public\n * @deprecated Deprecated since 8.0.0, use [[getContextualDocumentation]] instead.\n * @param ruleId - Rule to get documentation for.\n * @param config - If set it provides more accurate description by using the\n * correct configuration for the file.\n * @param context - If set to `Message.context` some rules can provide\n * contextual details and suggestions.\n */\n async getRuleDocumentation(ruleId, config = null, context = null) {\n const c = config ?? this.getConfigFor(\"inline\");\n const engine = new Engine(await c, Parser);\n return engine.getRuleDocumentation({ ruleId, context });\n }\n /**\n * Get contextual documentation for the given rule.\n *\n * Typical usage:\n *\n * ```js\n * const report = htmlvalidate.validateFileSync(\"my-file.html\");\n * for (const result of report.results){\n * const config = htmlvalidate.getConfigForSync(result.filePath);\n * for (const message of result.messages){\n * const documentation = htmlvalidate.getRuleDocumentationSync(message.ruleId, config, message.context);\n * // do something with documentation\n * }\n * }\n * ```\n *\n * @public\n * @deprecated Deprecated since 8.0.0, use [[getContextualDocumentationSync]] instead.\n * @param ruleId - Rule to get documentation for.\n * @param config - If set it provides more accurate description by using the\n * correct configuration for the file.\n * @param context - If set to `Message.context` some rules can provide\n * contextual details and suggestions.\n */\n getRuleDocumentationSync(ruleId, config = null, context = null) {\n const c = config ?? this.getConfigForSync(\"inline\");\n const engine = new Engine(c, Parser);\n return engine.getRuleDocumentation({ ruleId, context });\n }\n /**\n * Create a parser configured for given filename.\n *\n * @internal\n * @param source - Source to use.\n */\n async getParserFor(source) {\n const config = await this.getConfigFor(source.filename);\n return new Parser(config);\n }\n /**\n * Get configuration for given filename.\n *\n * See [[FileSystemConfigLoader]] for details.\n *\n * @public\n * @param filename - Filename to get configuration for.\n * @param configOverride - Configuration to apply last.\n */\n getConfigFor(filename, configOverride) {\n const config = this.configLoader.getConfigFor(filename, configOverride);\n return Promise.resolve(config);\n }\n /**\n * Get configuration for given filename.\n *\n * See [[FileSystemConfigLoader]] for details.\n *\n * @public\n * @param filename - Filename to get configuration for.\n * @param configOverride - Configuration to apply last.\n */\n getConfigForSync(filename, configOverride) {\n const config = this.configLoader.getConfigFor(filename, configOverride);\n if (isThenable(config)) {\n throw new UserError(\"Cannot use asynchronous config loader with synchronous api\");\n }\n return config;\n }\n /**\n * Get current configuration loader.\n *\n * @public\n * @since %version%\n * @returns Current configuration loader.\n */\n /* istanbul ignore next -- not testing setters/getters */\n getConfigLoader() {\n return this.configLoader;\n }\n /**\n * Set configuration loader.\n *\n * @public\n * @since %version%\n * @param loader - New configuration loader to use.\n */\n /* istanbul ignore next -- not testing setters/getters */\n setConfigLoader(loader) {\n this.configLoader = loader;\n }\n /**\n * Flush configuration cache. Clears full cache unless a filename is given.\n *\n * See [[FileSystemConfigLoader]] for details.\n *\n * @public\n * @param filename - If set, only flush cache for given filename.\n */\n flushConfigCache(filename) {\n this.configLoader.flushCache(filename);\n }\n}\n\nfunction importFunction(id) {\n return import(id);\n}\n\nasync function internalImport(id) {\n const { default: defaultImport } = await importFunction(id);\n if (!defaultImport) {\n throw new UserError(`\"${id}\" does not have a default export`);\n }\n return defaultImport;\n}\nfunction esmResolver() {\n return {\n name: \"esm-resolver\",\n resolveElements(id) {\n return internalImport(id);\n },\n resolveConfig(id) {\n return internalImport(id);\n },\n resolvePlugin(id) {\n return internalImport(id);\n },\n async resolveTransformer(id) {\n return internalImport(id);\n }\n };\n}\n\nconst defaults = {\n silent: false,\n version,\n logger(text) {\n console.error(text);\n }\n};\nfunction compatibilityCheck(name, declared, options) {\n return compatibilityCheckImpl(name, declared, {\n ...defaults,\n ...options\n });\n}\n\nexport { HtmlValidate as H, compatibilityCheck as c, esmResolver as e };\n//# sourceMappingURL=core-browser.js.map\n","import type { editor as Editor } from 'monaco-editor';\nimport { HtmlValidate } from 'html-validate/browser';\n\nconst htmlValidate = new HtmlValidate({\n extends: ['html-validate:standard'],\n rules: {\n 'element-required-ancestor': 'off',\n 'element-permitted-parent': 'off',\n 'element-permitted-content': 'off',\n },\n});\n\nconst htmlValidator = async (\n editor: Editor.IStandaloneCodeEditor,\n monaco: typeof import('monaco-editor/esm/vs/editor/editor.api')\n) => {\n const { valid, results } = await htmlValidate.validateString(editor.getValue());\n const model = editor.getModel();\n\n if (!model) {\n return {\n valid,\n results: [],\n };\n }\n\n if (!valid) {\n const errors: Editor.IMarkerData[] = (results[0]?.messages || []).map(error => ({\n startLineNumber: error.line,\n endLineNumber: error.line,\n startColumn: error.column,\n endColumn: error.column,\n message: error.message,\n severity: monaco.MarkerSeverity.Error,\n }));\n\n monaco.editor.setModelMarkers(model, 'owner', errors);\n\n return {\n valid,\n results: errors,\n };\n }\n\n monaco.editor.setModelMarkers(model, 'owner', []);\n\n return {\n valid,\n results: [],\n };\n};\n\nexport default htmlValidator;\n"],"names":["exports","_CodeOrName","Name","s","_Code","code","item","_a","c","names","_","strs","args","i","addCodeArg","plus","str","expr","safeStringify","optimize","arg","interpolate","res","mergeExprItems","a","b","strConcat","c1","c2","x","stringify","getProperty","key","getEsmExportName","regexpCode","rx","code_1","require$$0","ValueError","name","UsedValueState","Scope","prefixes","parent","nameOrPrefix","prefix","ng","_b","ValueScopeName","nameStr","value","property","itemIndex","line","ValueScope","opts","valueKey","vs","_name","keyOrRef","scopeName","values","usedValues","getCode","valueCode","nameSet","def","scope_1","require$$1","code_2","scope_2","Node","_names","_constants","Def","varKind","rhs","es5","_n","constants","optimizeExpr","Assign","lhs","sideEffects","addExprNames","AssignOp","op","Label","label","Break","Throw","error","AnyCode","ParentNode","nodes","n","subtractNames","addNames","BlockNode","Root","Else","If","condition","cond","e","ns","not","For","ForLoop","iteration","ForRange","from","to","ForIter","loop","iterable","Func","async","Return","Try","Catch","Finally","CodeGen","extScope","prefixOrName","constant","_constant","keyValues","thenBody","elseBody","node","forBody","arr","obj","tryBody","catchCode","finallyCode","body","nodeCount","len","toClose","funcBody","N1","N2","replaceName","canOptimize","items","par","andCode","mappend","and","orCode","or","y","util","codegen_1","toHash","hash","alwaysValidSchema","it","schema","checkUnknownRules","schemaHasRules","self","rules","checkStrictMode","schemaHasRulesButRef","RULES","schemaRefOrVal","topSchemaRef","schemaPath","keyword","$data","unescapeFragment","unescapeJsonPointer","escapeFragment","escapeJsonPointer","eachItem","xs","f","makeMergeEvaluated","mergeNames","mergeToName","mergeValues","resultToName","gen","toName","setEvaluated","evaluatedPropsToName","ps","props","p","snippets","useFunc","Type","getErrorPath","dataProp","dataPropType","jsPropertySyntax","isNumber","msg","mode","names_1","util_1","require$$2","schemaType","reportError","cxt","errorPaths","overrideAllErrors","compositeRule","allErrors","errObj","errorObjectCode","addError","returnErrors","reportExtraError","resetErrorsCount","errsCount","extendErrors","schemaValue","data","err","errs","validateName","schemaEnv","E","createErrors","errorObject","errorInstancePath","errorSchemaPath","extraErrorProps","errorPath","instancePath","instPath","errSchemaPath","parentSchema","schPath","params","message","propertyName","boolSchema","errors_1","boolError","topBoolOrEmptySchema","falseSchemaError","boolOrEmptySchema","valid","_jsonTypes","jsonTypes","isJSONType","getRules","groups","applicability","schemaHasRulesForType","type","group","shouldUseGroup","rule","shouldUseRule","kwd","dataType","rules_1","applicability_1","require$$3","require$$4","DataType","getSchemaTypes","types","getJSONTypes","ts","coerceAndCheckDataType","coerceTo","coerceToTypes","checkTypes","wrongType","checkDataTypes","coerceData","reportTypeError","COERCIBLE","coerceTypes","t","coerced","coerceSpecificType","assignParentData","parentData","parentDataProperty","checkDataType","strictNums","correct","EQ","numCond","_cond","dataTypes","notObj","typeError","getTypeErrorContext","schemaCode","defaults","assignDefaults","ty","properties","assignDefault","sch","prop","defaultValue","childData","util_2","checkReportMissingProp","noPropertyInData","checkMissingProp","missing","reportMissingProp","hasPropFunc","isOwnProperty","propertyInData","ownProperties","allSchemaProperties","schemaMap","schemaProperties","callValidateCode","func","context","passSchema","dataAndSchema","valCxt","newRegExp","usePattern","pattern","u","regExp","validateArray","validArr","validateItems","notValid","validateUnion","schValid","_sch","schCxt","macroKeywordCode","macroSchema","schemaRef","useKeyword","funcKeywordCode","checkAsyncKeyword","validate","validateRef","validateKeyword","assignValid","modifyData","reportErrs","ruleErrs","validateAsync","validateSync","addErrs","validateErrs","_await","passCxt","errors","result","validSchemaType","allowUndefined","st","validateKeywordUsage","deps","subschema","getSubschema","schemaProp","extendSubschemaData","dpType","dataPathArr","nextData","dataContextProps","_nextData","extendSubschemaMode","jtdDiscriminator","jtdMetadata","fastDeepEqual","equal","length","keys","traverse","jsonSchemaTraverseModule","cb","pre","post","_traverse","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeJsonPtr","resolve","SIMPLE_INLINED","inlineRef","limit","hasRef","countKeys","REF_KEYWORDS","count","getFullPath","resolver","id","normalize","normalizeId","_getFullPath","TRAILING_SLASH_HASH","resolveUrl","baseId","ANCHOR","getSchemaRefs","schemaId","uriResolver","schId","baseIds","pathPrefix","localRefs","schemaRefs","fullPath","innerBaseId","addRef","addAnchor","ref","_resolve","ambiguos","schOrRef","checkAmbiguosRef","anchor","sch1","sch2","boolSchema_1","dataType_1","dataType_2","defaults_1","keyword_1","subschema_1","require$$5","require$$6","require$$7","resolve_1","require$$8","require$$9","require$$10","validateFunctionCode","isSchemaObj","checkKeywords","schemaCxtHasRules","topSchemaObjCode","validateFunction","funcSourceUrl","destructureValCxtES5","destructureValCxt","commentKeyword","checkNoDefault","resetEvaluated","typeAndKeywords","returnResults","subschemaCode","subSchemaObjCode","updateContext","checkAsyncSchema","checkRefsAndKeywords","schemaKeywords","checkedTypes","rootName","ValidationError","assignEvaluated","evaluated","typeErrors","keywordCode","checkStrictTypes","groupKeywords","iterateKeywords","useDefaults","checkContextTypes","checkMultipleTypes","checkKeywordTypes","includesType","strictTypesError","narrowSchemaTypes","hasApplicableType","schTs","kwdT","withTypes","KeywordCxt","getData","successAction","failAction","append","errorParams","assign","codeBlock","$dataValid","wrong$DataType","invalid$DataSchema","validateSchemaRef","appl","nextContext","schemaCxt","ruleType","JSON_POINTER","RELATIVE_JSON_POINTER","dataLevel","dataNames","jsonPointer","matches","up","errorMsg","segments","segment","pointerType","validation_error","ref_error","MissingRefError","compile","validation_error_1","validate_1","SchemaEnv","env","compileSchema","getCompilingSchema","rootId","lines","_ValidationError","sourceCode","validateCode","resolveRef","root","schOrFunc","inlineOrCompile","schEnv","sameSchemaEnv","s1","s2","resolveSchema","refPath","getJsonPointer","PREVENT_SCOPE_CHANGE","parsedRef","part","partSchema","$ref","isUUID","isIPv4","stringArrayToHexStripped","input","acc","nonSimpleDomain","consumeIsZone","buffer","consumeHextets","address","output","hex","getIPV6","tokenCount","endipv6Encountered","endIpv6","consume","cursor","normalizeIPv6","host","findToken","ipv6","newHost","escapedHost","token","ind","removeDotSegments","path","nextSlash","normalizeComponentEncoding","component","esc","recomposeAuthority","uriTokens","ipV6res","utils","URN_REG","supportedSchemeNames","isValidSchemeName","wsIsSecure","wsComponent","httpParse","httpSerialize","secure","wsParse","wsSerialize","query","urnParse","urnComponent","options","scheme","urnScheme","schemeHandler","getSchemeHandler","urnSerialize","nid","uriComponent","nss","urnuuidParse","uuidComponent","urnuuidSerialize","http","https","ws","wss","SCHEMES","schemes","uri","serialize","parse","baseURI","relativeURI","schemelessOptions","resolved","resolveComponent","base","relative","skipNormalization","target","uriA","uriB","cmpts","authority","URI_PARSE","parsed","isIP","ipv6result","fastUri","fastUriModule","uri_1","ref_error_1","compile_1","codegen_2","$dataRefSchema","defaultRegExp","flags","META_IGNORE_OPTIONS","EXT_SCOPE_NAMES","removedOptions","deprecatedOptions","MAX_EXPRESSION","requiredOptions","o","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_0","_optz","Ajv","getLogger","formatOpt","checkOptions","getMetaSchemaOptions","addInitialFormats","addInitialKeywords","addInitialSchemas","meta","_dataRefSchema","schemaKeyRef","v","_meta","loadSchema","runCompileAsync","_schema","loadMetaSchema","_compileAsync","checkLoaded","loadMissingSchema","missingRef","_loadSchema","_validateSchema","throwOrLogError","$schema","keyRef","getSchEnv","cacheKey","definitions","kwdOrDef","checkKeyword","addRule","keywordMetaschema","definition","k","format","separator","dataVar","text","metaSchema","keywordsJsonPointers","keywords","seg","schemaOrData","schemas","regex","validateSchema","addSchema","currentOpts","checkOpts","log","opt","optsSchemas","defs","metaOpts","noLogs","logger","KEYWORD_NAME","ruleGroup","addBeforeRule","before","_rule","$dataRef","callRootRef","schOrEnv","callValidate","inlineRefSchema","callRef","getValidate","schName","$async","callAsyncRef","callSyncRef","addEvaluatedFrom","addErrorsFrom","source","schEvaluated","core_1","id_1","ref_1","core","limitNumber","ops","KWDs","multipleOf","prec","invalid","ucs2length_1","ucs2length","pos","limitLength","comp","regExpCode","limitProperties","required","missingProperty","useLoop","allErrorsMode","exitOnErrorMode","definedProperties","requiredKey","loopAllRequired","loopUntilMissing","limitItems","equal_1","uniqueItems","j","itemTypes","validateUniqueItems","loopN","loopN2","indices","eql","outer","_const","_enum","getEql","loopEnum","vSchema","equalCode","validation_1","limitNumber_1","multipleOf_1","limitLength_1","pattern_1","limitProperties_1","required_1","limitItems_1","uniqueItems_1","const_1","enum_1","validation","additionalItems","validateAdditionalItems","validateTuple","extraItems","schArr","checkStrictTuple","l","fullTuple","prefixItems","items_1","items2020","additionalItems_1","contains","min","max","minContains","maxContains","validateItemsWithCount","checkLimits","_valid","block","depsCount","property_ies","propDeps","schDeps","splitDependencies","validatePropertyDeps","validateSchemaDeps","propertyDeps","schemaDeps","hasProperty","depProp","propertyNames","additionalProperties","patProps","checkAdditionalProperties","additionalPropertyCode","isAdditional","definedProp","propsSchema","deleteAdditional","applyAdditionalSchema","additionalProperties_1","allProps","hasDefault","applyPropertySchema","patternProperties","patterns","alwaysValidPatterns","checkProperties","validatePatternProperties","pat","checkMatchingProperties","validateProperties","alwaysValid","anyOf","oneOf","passing","validateOneOf","allOf","_if","hasThen","hasSchema","hasElse","validateIf","ifClause","validateClause","thenElse","applicator","prefixItems_1","items2020_1","contains_1","dependencies_1","propertyNames_1","properties_1","patternProperties_1","not_1","anyOf_1","require$$11","oneOf_1","require$$12","allOf_1","require$$13","if_1","require$$14","thenElse_1","require$$15","getApplicator","draft2020","validate$DataFormat","validateFormat","fmts","fDef","fType","unknownFmt","invalidFmt","callFormat","validData","formatDef","unknownFormat","fmtType","fmtRef","getFormat","validCondition","unknownMsg","fmtDef","fmt","format_2","metadata","draft7","applicator_1","format_1","metadata_1","draft7Vocabularies","DiscrError","discriminator","types_1","discrError","tagName","tag","validateMapping","mapping","getMapping","tagValue","applyTagSchema","oneOfMapping","topRequired","hasRequired","tagRequired","propSch","addMappings","addMapping","draft7_1","discriminator_1","draft7MetaSchema","META_SUPPORT_DATA","META_SCHEMA_ID","module","naturalJoin","conjunction","allowedIfAttributeIsPresent","attr","allowedIfAttributeIsAbsent","present","allowedIfAttributeHasValue","expectedValue","actualValue","expected","allowedIfParentIsPresent","tags","metadataHelper","validId","ReferrerPolicy","isInsideLandmark","selectors","linkBodyOk","rel","bodyOk","html5","disallowed","tokens","alt","ariaLabel","ariaLabelledBy","title","size","table","tableRole","bundledElements","entities","FORCE_COLOR","NODE_DISABLE_COLORS","NO_COLOR","TERM","isTTY","$","init","rgx","open","close","txt","bold","red","magenta","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJS","mod","__copyProps","except","desc","__toESM","isNodeMode","require_leven","array","charCodeCache","leven2","left","right","swap","leftLength","rightLength","start","bCharCode","temp","temp2","require_jsonpointer","hasExcape","escapeMatcher","escapeReplacer","m","untilde","setter","pointer2","hasNextPart","oldValue","compilePointer","get","set","compiled","object","CHAR_0","CHAR_1","CHAR_9","CHAR_BACKSLASH","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_LOWER_A","CHAR_LOWER_E","CHAR_LOWER_F","CHAR_LOWER_N","CHAR_LOWER_T","CHAR_LOWER_U","CHAR_LOWER_X","CHAR_LOWER_Z","CHAR_MINUS","CHAR_NEWLINE","CHAR_PLUS","CHAR_RETURN","CHAR_SINGLE_QUOTE","CHAR_SLASH","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_UPPER_A","CHAR_UPPER_E","CHAR_UPPER_F","CHAR_UPPER_N","CHAR_UPPER_X","CHAR_UPPER_Z","CHAR_LOWER_B","CHAR_LOWER_R","CHAR_LOWER_V","CHAR_LINE_SEPARATOR","CHAR_PARAGRAPH_SEPARATOR","CHAR_UPPER_I","CHAR_STAR","CHAR_VTAB","CHAR_FORM_FEED","CHAR_NBSP","CHAR_BOM","CHAR_NON_BREAKING_SPACE","CHAR_EN_QUAD","CHAR_EM_QUAD","CHAR_EN_SPACE","CHAR_EM_SPACE","CHAR_THREE_PER_EM_SPACE","CHAR_FOUR_PER_EM_SPACE","CHAR_SIX_PER_EM_SPACE","CHAR_FIGURE_SPACE","CHAR_PUNCTUATION_SPACE","CHAR_THIN_SPACE","CHAR_HAIR_SPACE","CHAR_NARROW_NO_BREAK_SPACE","CHAR_MEDIUM_MATHEMATICAL_SPACE","CHAR_IDEOGRAPHIC_SPACE","LBRACKET","RBRACKET","LBRACE","RBRACE","COLON","COMMA","TRUE","FALSE","NULL","NAN$1","INFINITY$1","QUOTE","escapeToChar","json5EscapeToChar","charToEscape","knownTokenTypes","knownJSON5TokenTypes","json5LineTerminators","ErrorWithLocation","column","offset","UnexpectedChar","unexpected","loc","UnexpectedIdentifier","UnexpectedToken","UnexpectedEOF","ID_Start","ID_Continue","CHAR_CR","CHAR_LF","CharCodeReader","__privateAdd","_CharCodeReader_instances","_text","_line","_column","_offset","_newLine","_last","_ended","__privateSet","__privateGet","__privateMethod","end_fn","__privateWrapper","charCode","fn","INFINITY","NAN","keywordStarts","whitespace","json5Whitespace","DEFAULT_OPTIONS$1","jsonKeywords","tt","isDigit","isHexDigit","isPositiveDigit","isKeywordStart","isNumberStart","isJSON5NumberStart","isStringStart","json5","isJSON5IdentifierStart","ct","isJSON5IdentifierPart","Tokenizer","_Tokenizer_instances","_options","_reader","_json5","_allowComments","_ranges","_token","_isEscapedCharacter","_isJSON5LineTerminator","_isJSON5HexEscape","_isWhitespace","createToken_fn","readIdentifier_fn","readNumber_fn","readString_fn","lastCharLoc","readComment_fn","unexpected_fn","unexpectedIdentifier_fn","identifier","unexpectedEOF_fn","tokenType","startLoc","endLoc","endOffset","range","readHexDigits_fn","hexDigits","delimiter","digitCount","parts","elements","members","sign","DEFAULT_OPTIONS","UNICODE_SEQUENCE","normalizeIdentifier","unicodeEscape","getStringValue","escapeIndex","lastIndex","escapeChar","escapeCharCode","hexCode","getLiteralValue","tokenizer","allowTrailingCommas","nextNoComments","nextType","nextSkipComments","next","assertTokenType","assertTokenTypes","types2","createRange","end","createLiteralNode","createJSON5IdentifierNode","createNullNode","parseProperty","parseValue","parseObject","firstTokenType","firstToken","lastToken","parseArray","tokenText","docBody","docParts","eq","getValues","notUndefined","isXError","isRequiredError","isAnyOfError","isEnumError","getErrors","getChildren","getSiblings","concatAll","ys","zs","z","NEWLINE","getMarkerLines","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","lineDiff","markerLines","lineNumber","sourceLength","codeFrameColumns","rawLines","numberMaxWidth","index","number","gutter","hasMarker","lastMarkerLine","markerLine","markerSpacing","numberOfMarkers","getPointers","dataPath","getMetaFromPath","jsonAst","includeIdentifierLocation","pointers","lastPointerIndex","idx","filtered","child","getDecoratedDataPath","decoratedPath","getTypeName","BaseValidationError","jsonRaw","isIdentifierLocation","isSkipEndLocation","REQUIRED","RequiredValidationError","ADDITIONAL_PROPERTY","bold2","AdditionalPropValidationError","red2","magenta2","import_leven","import_jsonpointer","ENUM","bold3","EnumValidationError","allowedValues","bestMatch","line1","red3","line2","magenta3","currentValue","DefaultValidationError","red4","bold4","magenta4","JSON_POINTERS_REGEX","makeTree","ajvErrors","ajvError","paths","filterRedundantErrors","key2","createErrorInstances","ret","helpers_default","tree","index_default","indent","json","customErrorToText","customErrorToStructure","customErrors","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","debug_1","debug","re","safeRe","src","safeSrc","R","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","createToken","isGlobal","safe","looseOption","emptyOpts","parseOptions_1","numeric","compareIdentifiers","anum","bnum","identifiers","parseOptions","SemVer","version","num","other","release","identifierBase","match","prerelease","semver","parse_1","throwErrors","er","valid_1","clean_1","inc_1","diff_1","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","major_1","loose","minor_1","patch_1","prerelease_1","compare_1","compare","rcompare_1","compareLoose_1","compareBuild_1","versionA","versionB","compareBuild","sort_1","list","rsort_1","gt_1","lt_1","eq_1","neq_1","gte_1","lte_1","neq","gt","gte","lt","lte","cmp_1","coerce_1","coerceRtlRegex","major","minor","patch","build","LRUCache","firstKey","lrucache","SPACE_CHARACTERS","Range","Comparator","r","first","isNullSet","isAny","comps","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","cache","hr","hyphenReplace","comparatorTrimReplace","tildeTrimReplace","caretTrimReplace","rangeList","parseComparator","replaceGTE0","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","LRU","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","M","pr","replaceCaret","replaceXRange","gtlt","xM","xm","xp","anyX","incPr","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","allowed","ANY","cmp","comparator","satisfies_1","toComparators_1","maxSatisfying_1","versions","maxSV","rangeObj","minSatisfying_1","minSV","minVersion_1","minver","setMin","compver","satisfies","outside_1","hilo","gtfn","ltefn","ltfn","ecomp","high","low","outside","gtr_1","ltr_1","intersects_1","r1","r2","simplify","prev","ranges","simplified","original","subset","sub","dom","sawNonNull","OUTER","simpleSub","simpleDom","isSub","simpleSubset","minimumVersionWithPreRelease","minimumVersion","eqSet","higherGT","lowerLT","gtltComp","higher","lower","hasDomLT","hasDomGT","needDomLTPre","needDomGTPre","subset_1","internalRe","clean","inc","diff","rcompare","compareLoose","require$$16","sort","require$$17","rsort","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","coerce","require$$26","require$$27","require$$28","require$$29","toComparators","require$$30","maxSatisfying","require$$31","minSatisfying","require$$32","minVersion","require$$33","validRange","require$$34","require$$35","gtr","require$$36","ltr","require$$37","intersects","require$$38","simplifyRange","require$$39","require$$40","$schema$2","$id$2","definitions$1","type$2","properties$2","ajvSchemaDraft","getDefaultExportFromCjs","cjs","hasRequiredCjs","requireCjs","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","element","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","deepmerge_1","cjsExports","WrappedError","ensureError","NestedError","nested","UserError","InheritError","inherit","__publicField","getSummary","betterAjvErrors","SchemaValidationError","filename","summary","cyrb53","h1","h2","ch","computeHash","$schema$1","$id$1","type$1","properties$1","ajvRegexpValidate","dataCxt","ajvRegexpKeyword","ajvFunctionValidate","ajvFunctionKeyword","TextContent$1","TextContent2","MetaCopyableProperty","setMetaProperty","dst","isSet","flag","stripUndefined","entries","migrateSingleAttribute","migrateAttributes","normalizeAriaImplicitRole","normalizeAriaNaming","migrateElement","implicitRole","dynamicKeys","schemaCache","clone","overwriteMerge$1","MetaTable","propName","entry","tagName2","expanded","expandRegex","ajv","global","merged","filteredAttrs","expandProperties","expandRegexValue","DynamicValue","isStaticAttribute","isDynamicAttribute","Attribute","keyLocation","valueLocation","originalAttribute","dynamicMatches","getCSSDeclarations","value2","parseCssDeclaration","pairs","sliceSize","begin","sliceLocation","location","wrap","sliced","col","State","State2","ContentModel","ContentModel2","Context","state","consumed","normalizeSource","NodeType","NodeType2","DOCUMENT_NODE_NAME","TEXT_CONTENT","counter","DOMNode","nodeType","nodeName","oldParent","reference","otherNode","ruleId","blocker","current","_node","baseLocation","locations","DOMTokenList","__super","normalized","Combinator","Combinator2","parseCombinator","combinator","firstChild","lastChild","getNthChild","cur","nthChild","scope$1","factory","stripslashes","Condition","ClassCondition","classname","IdCondition","AttributeCondition","PseudoClassCondition","pseudoclass","isDelimiter","isQuotationMark","isPseudoElement","splitCompound","quoted","Compound","ancestors$1","parent2","adjacentSibling","sibling","generalSibling","siblings","scope","candidatesFromCombinator","matchElement","compounds","last","remainder","candidates","candidate","escapedCodepoints","splitSelectorElements","selector","initialState","escapedState","whitespaceState","unescapeCodepoint","replacement","codepoint","escapeSelectorComponent","codepoints","generateIdSelector","escaped","Selector","level","adjacent","after","TEXT_NODE_NAME","isTextNode","TextNode","ROLE","TABINDEX","NodeClosed","NodeClosed2","isElementNode","isInvalidTagName","createAdapter","HtmlElement","details","closed","startToken","endToken","metaTable","namespace","isClosed","selectorList","role","aria","tabindex","all","classes","children","unique","callback","visit","isDOMTree","depthFirst","walk","DOMTree","allowedKeys","Validator","category","quantifier","parseQuantifier","old","empty","caseInsensitiveValue","isExclude","inner","validateKeys","defaultMatch","rawCategory","$id","configurationSchema","Severity","Severity2","parseSeverity","escape","quote","prohibitedRoles","byRole","byMeta","ariaNaming","patternCache","compileStringPattern","regexp","compileRegExpPattern","compilePattern","keywordPatternMatcher","isKeywordIgnored","matcher","include","exclude","ARIA_HIDDEN_CACHE","isAriaHidden","HTML_HIDDEN_CACHE","isHTMLHidden","INERT_CACHE","isInert","ROLE_PRESENTATION_CACHE","isPresentation","STYLE_HIDDEN_CACHE","isStyleHidden","inAccessibilityTree","isAriaHiddenImpl","getAriaHiddenAttr","node2","ariaHidden","isHTMLHiddenImpl","getHiddenAttr","hidden","isInertImpl","getInertAttr","inert","isStyleHiddenImpl","getStyleAttr","style","display","visibility","byParent","bySelf","cachePrefix","classifyNodeText","HTML_CACHE_KEY","A11Y_CACHE_KEY","IGNORE_HIDDEN_ROOT_HTML_CACHE_KEY","IGNORE_HIDDEN_ROOT_A11Y_CACHE_KEY","TextClassification","TextClassification2","getCachekey","accessible","ignoreHiddenRoot","isSpecialEmpty","findTextNodes","hasAltText","image","hasAriaLabel","partition","predicate","initial","accumulator","ajv$1","getSchemaValidator","isErrorDescriptor","unpackErrorDescriptor","Rule","severity","enabled","blocked","where","interpolated","event","filter","_event","parser","reporter","cls","jsonPath","config","isValid","mapped","defaults$y","description","parseAllow","matchList","AllowedLinks","booleanOrObject","link","allowAbsolute","allowExternal","allowRelative","allowBase","defaults$x","findByTarget","getAltText","getDescription$1","AreaAlt","area","href","AriaHiddenBody","defaults$w","whitelisted","isValidUsage","AriaLabelMisuse","document","ConfigError","CaseStyle","defaults$v","AttrCase","styleEnum","letters","TokenType","TokenType2","MATCH_UNICODE_BOM","MATCH_WHITESPACE","MATCH_DOCTYPE_OPEN","MATCH_DOCTYPE_VALUE","MATCH_DOCTYPE_CLOSE","MATCH_XML_TAG","MATCH_TAG_OPEN","MATCH_TAG_CLOSE","MATCH_TEXT","MATCH_TEMPLATING","MATCH_TAG_LOOKAHEAD","MATCH_ATTR_START","MATCH_ATTR_SINGLE","MATCH_ATTR_DOUBLE","MATCH_ATTR_UNQUOTED","MATCH_CDATA_BEGIN","MATCH_CDATA_END","MATCH_SCRIPT_DATA","MATCH_SCRIPT_END","MATCH_STYLE_DATA","MATCH_STYLE_END","MATCH_DIRECTIVE","MATCH_COMMENT","MATCH_CONDITIONAL","InvalidTokenError","Lexer","previousState","previousLength","truncated","nextState","tests","tagCloseToken","AttrDelimiter","DEFAULT_PATTERN","defaults$u","generateRegexp","generateMessage","generateDescription","AttrPattern","defaults$t","describeError","describeStyle","unquoted","AttrQuotes","parseStyle$3","AttrSpacing","previousToken","pick","AttributeAllowedValues","docs","attribute","allowedList","doc","defaults$s","AttributeBooleanStyle","parseStyle$2","reportMessage$1","defaults$r","AttributeEmptyStyle","parseStyle$1","allowsEmpty","isEmptyValue","reportMessage","ruleDescription","AttributeMisuse","parsePattern","modifier","toArray$2","BasePatternRule","defaults$q","ClassPattern","CloseAttr","ancestors","ancestor","findAncestor","CloseOrder","reported","active","defaults$p","Deprecated","prettySource","deprecated","notice","DeprecatedRule","NoStyleTag$1","defaults$o","DoctypeStyle","defaults$n","ElementCase","previous","targetLocation","defaults$m","ElementName","xmlns","isNativeTemplate","getTransparentChildren","transparent","getRuleDescription$2","ElementPermittedContent","ElementPermittedOccurrences","ElementPermittedOrder","isCategoryOrTag","isCategory$1","formatCategoryOrTag","isFormattable","getRuleDescription$1","preamble","formatMessage$1","parentName","ElementPermittedParent","isTagnameOnly","getRuleDescription","ElementRequiredAncestor","ElementRequiredAttributes","isCategory","ElementRequiredContent","hasImgAltText$1","EmptyHeading","headings","heading","images","EmptyTitle","defaults$l","UNIQUE_CACHE_KEY","SHARED_CACHE_KEY","haveName","allowSharedName","shared","isInputHidden","isInputCheckbox","isCheckboxWithDefault","control","allowCheckboxDefault","getDocumentation","trailer","FormDupName","controls","sharedControls","uniqueControls","allowArrayBrackets","isarray","basename","uniqueElements","sharedElements","existing","defaults$k","isRelevant$5","extractLevel","parseMaxInitial","HeadingLevel","modality","expectedTag","actualTag","prevRootExpected","FOCUSABLE_CACHE","isFocusable","isDisabled","isFocusableImpl","tabIndex","HiddenFocusable","defaults$j","IdPattern","restricted","isInput","InputAttributes","typeValue","validTypes","HAS_ACCESSIBLE_TEXT_CACHE","hasAccessibleName","isHidden","hasImgAltText","img","hasAccessibleNameImpl","hasLabel","isLabelledby","ariaLabelledby","isIgnored","InputMissingLabel","elem","findLabelById","findLabelByParent","labels","el","defaults$i","LongTitle","defaults$h","MetaRefresh","content","parseContent","delay","url","allowLongDelay","getName","MapDupName","maps","map","isRelevant$4","hasStaticValue","MapIdName","MissingDoctype","MultipleLabeledControls","defaults$g","NamePattern","abstractRoles","isRelevant$3","NoAbstractRole","roles","defaults$f","NoAutoplay","NoConditionalComment","NoDeprecatedAttr","metaAttribute","NoDupAttr","NoDupClass","CACHE_KEY","NoDupID","rootExisting","getExisting","useRootExisting","existing2","isRelevant$2","NoImplicitButtonType","isRelevant$1","NoImplicitInputType","NoImplicitClose","by","closedByParent","closedByDocument","sameTag","defaults$e","NoInlineStyle","allowProperties","declarations","ARIA","idMissing","NoMissingReferences","isList","NoMultipleMain","main","defaults$d","textRegexp","unquotedAttrRegexp","matchTemplate","replacementTable","NoRawCharacters","char","charLocation","selectors$1","NoRedundantAriaLabel","NoRedundantFor","NoRedundantRole","defaults$c","NoSelfClosing","isRelevant","NoStyleTag","NoTrailingWhitespace","defaults$b","NoUnknownElements","NoUnusedDisable","unused","tokenLocation","NoUtf8Bom","unregister","defaults$a","PreferButton","defaults$9","PreferNativeElement","PreferTbody","tr","defaults$8","RequireCSPNonce","nonce","defaults$7","crossorigin","supportSri","supportedRel","supportedPreload","linkSupportsSri","as","RequireSri","ScriptElement","javascript","ScriptType","mime","SvgFocusable","svg","defaults$6","constructRegex","characters","getText","leading","matchAll","copy","TelNonBreaking","replacements","ignoreClasses","classList","ignoreStyle","detected","hasNonEmptyAttribute","hasDefaultText","isNonEmptyText","haveAccessibleText","TextContent","textContent","getTextFromReference","groupBy","getTextEntryFromElement","isExcluded","UniqueLandmark","grouped","filteredEntries","dup","defaults$5","regexp$1","lowercaseEntities","entities$1","isNumerical","entity","getLocation","getDescription","UnknownCharReference","isAttribute","isQuerystring","foobar","requireSemicolon","raw","terminated","found","entityLocation2","message2","context2","entityLocation","terminator","expectedOrder","fieldNames1","fieldNames2","fieldNameGroup","disallowedInputTypes","matchSection","matchHint","matchFieldNames1","matchContact","matchFieldNames2","matchWebauthn","matchToken","getControlGroups","allGroups","isDisallowedType","getTerminalMessage","getMarkdownMessage","controlGroups","currentGroup","ValidAutocomplete","autocomplete","mantle","trimmed","order","fieldTokens","numFields","indicies","fieldIndex","fieldToken","fieldGroup","defaults$4","ValidID","relaxed","kind","relaxedDescription","VoidContent","defaults$3","VoidStyle","parseStyle","styleDescription","validateStyle","H30","links","H32","formSelector","forms","form","hasNestedSubmit","hasAssociatedSubmit","isSubmit","isAssociated","H36","defaults$2","H37","defaults$1","validScopes","joinedScopes","td","th","getShape","cells","rows","cols","isSimpleTable","numColumns","row","shape","headersPerRow","sum","cell","headersPerColumn","firstRow","otherRows","firstCol","otherCols","haveThead","H63","strict","th2","H67","H71","fieldsets","fieldset","bundledRules$1","bundledRules","dumpTree","decoration","writeNode","numSiblings","lastSibling","isThenable","defaultConfig","config$5","config$4","config$3","config$2","config$1","presets","ResolvedConfig","plugins","transformers","haveResolver","haveConfigResolver","haveElementsResolver","havePluginResolver","haveTransformerResolver","resolveConfig","resolvers","resolveConfigAsync","resolveElements","resolveElementsAsync","resolvePlugin","plugin","resolvePluginAsync","resolveTransformer","transformer","resolveTransformerAsync","validator","overwriteMerge","mergeInternal","toArray$1","transformerEntries","transform","Config","configData","configData2","normalizedRules","ruleOptions","instance","plugins2","update","extendedConfig2","extendedConfig","extended","loadedConfig","loadEntry","result2","next2","bundled","obj2","loaded","loading","loadPlugin","plugin2","configs","schema2","resolveData","resolveData2","metaTable2","ConfigLoader","config2","defaultResolvers","hasResolver","StaticConfigLoader","_handle","configOverride","override","override2","globalConfig","globalConfig2","merged2","EventHandler","listeners","deregister","event2","listener","callbacks","freeze","isThenableArray","Reporter","reports","reports2","report","results","countErrors","countWarnings","sumErrors","sumWarnings","ruleUrl","sources","filePath","messages","messageSort","source2","parseConditionalComment","comment","commentLocation","expression","ParserError","isAttrValueToken","svgShouldRetainTag","foreignTagName","isValidDirective","action","Parser","tokenStream","closeOptional","isStartTag","isClosing","isForeign","mismatched","processElement","errorLocation","tagClosed","oldNamespace","selfClosed","haveValue","attrData","processAttribute","iterator","legacy","separator1","directive","postamble","separator2","actionOffset","optionsOffset","commentOffset","actionLocation","optionsLocation","conditional","search","searchTag","numOpen","documentElement","blockerCounter","createBlocker","Engine","ParserClass","noUnusedDisable","directiveContext","rules2","location2","configEvent","sourceData","sourceEvent","_2","lexer","ruleData","ruleIds","directiveBlock","unregisterOpen","unregisterClose","lastNode","parentClosed","availableRules","eventHandler","RuleConstructor","getNamedTransformerFromPlugin","pluginName","getTransformerFromModule","getUnnamedTransformerFromPlugin","TRANSFORMER_API","validateTransformer","loadTransformerFunction","getTransformerFunction","transformer2","getCachedTransformerFunction","isIterable","toArray","isNonThenableArray","asyncInSyncTransformError","transformSource","filename2","transformedSources","transformSourceSync","transformFilename","fs","transformFilenameSync","isSourceHooks","isConfigData","HtmlValidate","loader","arg1","arg2","arg3","hooks","transformedSource","engine","filenames","filenameOrConfig","htmlValidate","htmlValidator","editor","monaco","model"],"mappings":"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B,OAAAV;AACF;AAEA,IAAIW,KAAW;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;A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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,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]}
|