{"version":3,"file":"scramjet.shared.js","sources":["webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/wasm.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/parse-domain.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Tokenizer.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/helpers.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/sanitize.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/set-cookie-parser@2.7.1/node_modules/set-cookie-parser/lib/set-cookie.js","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/js.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/url.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/css.ts","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Parser.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/encode.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/stringify.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/legacy.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/feeds.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/html.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/headers.ts","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/@mercuryworkshop+bare-mux@2.1.7/node_modules/@mercuryworkshop/bare-mux/dist/index.mjs","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/look-up.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/characters.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/ip-regex@5.0.0/node_modules/ip-regex/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/is-regexp@3.1.0/node_modules/is-regexp/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/clone-regexp@3.0.0/node_modules/clone-regexp/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/super-regex@0.2.0/node_modules/super-regex/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/function-timeout@0.1.1/node_modules/function-timeout/browser.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/is-ip@5.0.1/node_modules/is-ip/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/nodes.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/parse-trie.js","webpack://@mercuryworkshop/scramjet/./src/shared/index.ts","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/serialized-tries/icann.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/serialized-tries/private.js","webpack://@mercuryworkshop/scramjet/./src/shared/headers.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/worker.ts","webpack://@mercuryworkshop/scramjet/./src/shared/cookie.ts"],"sourcesContent":["import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js(js, url, script_url, scramjet) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * @param {Uint8Array} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js_from_arraybuffer(js, url, script_url, scramjet) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js_from_arraybuffer(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_call_3b770f0d6eb4720e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_500db948e69c7330 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_b0d8e36992d9900d = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_bbccf8970793c087 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_17f755666e48d1d8 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_254fa9eac11932ae = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_688846f374351c92 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_newwithbase_aa2c471fe3eacc2b = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new URL(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_now_62a101fe35b60230 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_scramtag_bd98edaa0eaec45e = function(arg0) {\n const ret = scramtag();\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_set_4e647025551483bd = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_1dc398a895c82351 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_toString_a491ccf7be1ca5c9 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_cbcf95f260c441ae = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_uint8_array_new = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n const ret = v0;\n return ret;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:18,maximum:16384,shared:true});\n}\n\nfunction __wbg_finalize_init(instance, module, thread_stack_size) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\n wasm.__wbindgen_start(thread_stack_size);\n return wasm;\n}\n\nfunction initSync(module, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module, memory, thread_stack_size} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports, memory);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nasync function __wbg_init(module_or_path, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path, memory, thread_stack_size} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_bg.wasm', \"\");\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports, memory);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import { icannTrie, privateTrie } from \"./serialized-tries.js\";\nimport { lookUpTldsInTrie } from \"./trie/look-up.js\";\nimport { sanitize, SanitizationResultType, } from \"./sanitize.js\";\nimport { parseTrie } from \"./trie/parse-trie.js\";\nexport const RESERVED_TOP_LEVEL_DOMAINS = [\n \"localhost\",\n \"local\",\n \"example\",\n \"invalid\",\n \"test\",\n];\nexport var ParseResultType;\n(function (ParseResultType) {\n /**\n * This parse result is returned in case the given hostname does not adhere to [RFC 1034](https://tools.ietf.org/html/rfc1034).\n */\n ParseResultType[\"Invalid\"] = \"INVALID\";\n /**\n * This parse result is returned if the given hostname was an IPv4 or IPv6.\n */\n ParseResultType[\"Ip\"] = \"IP\";\n /**\n * This parse result is returned when the given hostname\n * - is the root domain (the empty string `\"\"`)\n * - belongs to the top-level domain `localhost`, `local`, `example`, `invalid` or `test`\n */\n ParseResultType[\"Reserved\"] = \"RESERVED\";\n /**\n * This parse result is returned when the given hostname is valid and does not belong to a reserved top-level domain, but is not listed in the public suffix list.\n */\n ParseResultType[\"NotListed\"] = \"NOT_LISTED\";\n /**\n * This parse result is returned when the given hostname belongs to a top-level domain that is listed in the public suffix list.\n */\n ParseResultType[\"Listed\"] = \"LISTED\";\n})(ParseResultType || (ParseResultType = {}));\nconst getAtIndex = (array, index) => {\n return index >= 0 && index < array.length ? array[index] : undefined;\n};\nconst splitLabelsIntoDomains = (labels, index) => {\n return {\n subDomains: labels.slice(0, Math.max(0, index)),\n domain: getAtIndex(labels, index),\n topLevelDomains: labels.slice(index + 1),\n };\n};\nlet parsedIcannTrie;\nlet parsedPrivateTrie;\n/**\n * Splits the given hostname in topLevelDomains, a domain and subDomains.\n */\nexport const parseDomain = (hostname, options) => {\n const sanitizationResult = sanitize(hostname, options);\n if (sanitizationResult.type === SanitizationResultType.Error) {\n return {\n type: ParseResultType.Invalid,\n hostname,\n errors: sanitizationResult.errors,\n };\n }\n if (sanitizationResult.type === SanitizationResultType.ValidIp) {\n return {\n type: ParseResultType.Ip,\n hostname: sanitizationResult.ip,\n ipVersion: sanitizationResult.ipVersion,\n };\n }\n const { labels, domain } = sanitizationResult;\n if (hostname === \"\" ||\n RESERVED_TOP_LEVEL_DOMAINS.includes(labels[labels.length - 1])) {\n return {\n type: ParseResultType.Reserved,\n hostname: domain,\n labels,\n };\n }\n // Parse the serialized trie lazily\n parsedIcannTrie = parsedIcannTrie !== null && parsedIcannTrie !== void 0 ? parsedIcannTrie : parseTrie(icannTrie);\n parsedPrivateTrie = parsedPrivateTrie !== null && parsedPrivateTrie !== void 0 ? parsedPrivateTrie : parseTrie(privateTrie);\n const icannTlds = lookUpTldsInTrie(labels, parsedIcannTrie);\n const privateTlds = lookUpTldsInTrie(labels, parsedPrivateTrie);\n if (icannTlds.length === 0 && privateTlds.length === 0) {\n return {\n type: ParseResultType.NotListed,\n hostname: domain,\n labels,\n };\n }\n const indexOfPublicSuffixDomain = labels.length - Math.max(privateTlds.length, icannTlds.length) - 1;\n const indexOfIcannDomain = labels.length - icannTlds.length - 1;\n return Object.assign({ type: ParseResultType.Listed, hostname: domain, labels, icann: splitLabelsIntoDomains(labels, indexOfIcannDomain) }, splitLabelsIntoDomains(labels, indexOfPublicSuffixDomain));\n};\n//# sourceMappingURL=parse-domain.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // ` this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n }\n else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { ipVersion } from \"is-ip\";\n// See https://en.wikipedia.org/wiki/Domain_name\n// See https://tools.ietf.org/html/rfc1034\nconst LABEL_SEPARATOR = \".\";\nconst LABEL_LENGTH_MIN = 1;\nconst LABEL_LENGTH_MAX = 63;\n/**\n * 255 octets - 2 octets if you remove the last dot\n * @see https://devblogs.microsoft.com/oldnewthing/20120412-00/?p=7873\n */\nconst DOMAIN_LENGTH_MAX = 253;\nconst textEncoder = new TextEncoder();\nexport var Validation;\n(function (Validation) {\n /**\n * Allows any octets as labels\n * but still restricts the length of labels and the overall domain.\n *\n * @see https://www.rfc-editor.org/rfc/rfc2181#section-11\n **/\n Validation[\"Lax\"] = \"LAX\";\n /**\n * Only allows ASCII letters, digits and hyphens (aka LDH),\n * forbids hyphens at the beginning or end of a label\n * and requires top-level domain names not to be all-numeric.\n *\n * This is the default if no validation is configured.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3696#section-2\n */\n Validation[\"Strict\"] = \"STRICT\";\n})(Validation || (Validation = {}));\nexport var ValidationErrorType;\n(function (ValidationErrorType) {\n ValidationErrorType[\"NoHostname\"] = \"NO_HOSTNAME\";\n ValidationErrorType[\"DomainMaxLength\"] = \"DOMAIN_MAX_LENGTH\";\n ValidationErrorType[\"LabelMinLength\"] = \"LABEL_MIN_LENGTH\";\n ValidationErrorType[\"LabelMaxLength\"] = \"LABEL_MAX_LENGTH\";\n ValidationErrorType[\"LabelInvalidCharacter\"] = \"LABEL_INVALID_CHARACTER\";\n ValidationErrorType[\"LastLabelInvalid\"] = \"LAST_LABEL_INVALID\";\n})(ValidationErrorType || (ValidationErrorType = {}));\nexport var SanitizationResultType;\n(function (SanitizationResultType) {\n SanitizationResultType[\"ValidIp\"] = \"VALID_IP\";\n SanitizationResultType[\"ValidDomain\"] = \"VALID_DOMAIN\";\n SanitizationResultType[\"Error\"] = \"ERROR\";\n})(SanitizationResultType || (SanitizationResultType = {}));\nconst createNoHostnameError = (input) => {\n return {\n type: ValidationErrorType.NoHostname,\n message: `The given input ${String(input)} does not look like a hostname.`,\n column: 1,\n };\n};\nconst createDomainMaxLengthError = (domain, length) => {\n return {\n type: ValidationErrorType.DomainMaxLength,\n message: `Domain \"${domain}\" is too long. Domain is ${length} octets long but should not be longer than ${DOMAIN_LENGTH_MAX}.`,\n column: length,\n };\n};\nconst createLabelMinLengthError = (label, column) => {\n const length = label.length;\n return {\n type: ValidationErrorType.LabelMinLength,\n message: `Label \"${label}\" is too short. Label is ${length} octets long but should be at least ${LABEL_LENGTH_MIN}.`,\n column,\n };\n};\nconst createLabelMaxLengthError = (label, column) => {\n const length = label.length;\n return {\n type: ValidationErrorType.LabelMaxLength,\n message: `Label \"${label}\" is too long. Label is ${length} octets long but should not be longer than ${LABEL_LENGTH_MAX}.`,\n column,\n };\n};\nconst createLabelInvalidCharacterError = (label, invalidCharacter, column) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Label \"${label}\" contains invalid character \"${invalidCharacter}\" at column ${column}.`,\n column,\n };\n};\nconst createLastLabelInvalidError = (label, column) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Last label \"${label}\" must not be all-numeric.`,\n column,\n };\n};\nexport const sanitize = (input, options = {}) => {\n // Extra check for non-TypeScript users\n if (typeof input !== \"string\") {\n return {\n type: SanitizationResultType.Error,\n errors: [createNoHostnameError(input)],\n };\n }\n if (input === \"\") {\n return {\n type: SanitizationResultType.ValidDomain,\n domain: input,\n labels: [],\n };\n }\n // IPv6 addresses are surrounded by square brackets in URLs\n // See https://tools.ietf.org/html/rfc3986#section-3.2.2\n const inputTrimmedAsIp = input.replace(/^\\[|]$/g, \"\");\n const ipVersionOfInput = ipVersion(inputTrimmedAsIp);\n if (ipVersionOfInput !== undefined) {\n return {\n type: SanitizationResultType.ValidIp,\n ip: inputTrimmedAsIp,\n ipVersion: ipVersionOfInput,\n };\n }\n const lastChar = input.charAt(input.length - 1);\n const canonicalInput = lastChar === LABEL_SEPARATOR ? input.slice(0, -1) : input;\n const octets = new TextEncoder().encode(canonicalInput);\n if (octets.length > DOMAIN_LENGTH_MAX) {\n return {\n type: SanitizationResultType.Error,\n errors: [createDomainMaxLengthError(input, octets.length)],\n };\n }\n const labels = canonicalInput.split(LABEL_SEPARATOR);\n const { validation = Validation.Strict } = options;\n const labelValidationErrors = validateLabels[validation](labels);\n if (labelValidationErrors.length > 0) {\n return {\n type: SanitizationResultType.Error,\n errors: labelValidationErrors,\n };\n }\n return {\n type: SanitizationResultType.ValidDomain,\n domain: input,\n labels,\n };\n};\nconst validateLabels = {\n [Validation.Lax]: (labels) => {\n const labelValidationErrors = [];\n let column = 1;\n for (const label of labels) {\n const octets = textEncoder.encode(label);\n if (octets.length < LABEL_LENGTH_MIN) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n }\n else if (octets.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n column += label.length + LABEL_SEPARATOR.length;\n }\n return labelValidationErrors;\n },\n [Validation.Strict]: (labels) => {\n const labelValidationErrors = [];\n let column = 1;\n let lastLabel;\n for (const label of labels) {\n // According to https://tools.ietf.org/html/rfc6761 labels should\n // only contain ASCII letters, digits and hyphens (LDH).\n const invalidCharacter = /[^\\da-z-]/i.exec(label);\n if (invalidCharacter) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, invalidCharacter[0], invalidCharacter.index + 1));\n }\n if (label.startsWith(\"-\")) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, \"-\", column));\n }\n else if (label.endsWith(\"-\")) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, \"-\", column + label.length - 1));\n }\n if (\n // We can use .length here to check for the octet size because\n // label can only contain ASCII LDH characters at this point.\n label.length < LABEL_LENGTH_MIN) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n }\n else if (label.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n column += label.length + LABEL_SEPARATOR.length;\n lastLabel = label;\n }\n if (lastLabel !== undefined && /[a-z-]/iu.test(lastLabel) === false) {\n labelValidationErrors.push(createLastLabelInvalidError(lastLabel, column - lastLabel.length - LABEL_SEPARATOR.length));\n }\n return labelValidationErrors;\n },\n};\n//# sourceMappingURL=sanitize.js.map","\"use strict\";\n\nvar defaultParseOptions = {\n decodeValues: true,\n map: false,\n silent: false,\n};\n\nfunction isNonEmptyString(str) {\n return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n var nameValuePairStr = parts.shift();\n var parsed = parseNameValuePair(nameValuePairStr);\n var name = parsed.name;\n var value = parsed.value;\n\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n try {\n value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n } catch (e) {\n console.error(\n \"set-cookie-parser encountered an error while decoding a cookie with value '\" +\n value +\n \"'. Set options.decodeValues to false to disable this feature.\",\n e\n );\n }\n\n var cookie = {\n name: name,\n value: value,\n };\n\n parts.forEach(function (part) {\n var sides = part.split(\"=\");\n var key = sides.shift().trimLeft().toLowerCase();\n var value = sides.join(\"=\");\n if (key === \"expires\") {\n cookie.expires = new Date(value);\n } else if (key === \"max-age\") {\n cookie.maxAge = parseInt(value, 10);\n } else if (key === \"secure\") {\n cookie.secure = true;\n } else if (key === \"httponly\") {\n cookie.httpOnly = true;\n } else if (key === \"samesite\") {\n cookie.sameSite = value;\n } else if (key === \"partitioned\") {\n cookie.partitioned = true;\n } else {\n cookie[key] = value;\n }\n });\n\n return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n // Parses name-value-pair according to rfc6265bis draft\n\n var name = \"\";\n var value = \"\";\n var nameValueArr = nameValuePairStr.split(\"=\");\n if (nameValueArr.length > 1) {\n name = nameValueArr.shift();\n value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n } else {\n value = nameValuePairStr;\n }\n\n return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n if (!input) {\n if (!options.map) {\n return [];\n } else {\n return {};\n }\n }\n\n if (input.headers) {\n if (typeof input.headers.getSetCookie === \"function\") {\n // for fetch responses - they combine headers of the same type in the headers array,\n // but getSetCookie returns an uncombined array\n input = input.headers.getSetCookie();\n } else if (input.headers[\"set-cookie\"]) {\n // fast-path for node.js (which automatically normalizes header names to lower-case\n input = input.headers[\"set-cookie\"];\n } else {\n // slow-path for other environments - see #25\n var sch =\n input.headers[\n Object.keys(input.headers).find(function (key) {\n return key.toLowerCase() === \"set-cookie\";\n })\n ];\n // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n if (!sch && input.headers.cookie && !options.silent) {\n console.warn(\n \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n );\n }\n input = sch;\n }\n }\n if (!Array.isArray(input)) {\n input = [input];\n }\n\n if (!options.map) {\n return input.filter(isNonEmptyString).map(function (str) {\n return parseString(str, options);\n });\n } else {\n var cookies = {};\n return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n var cookie = parseString(str, options);\n cookies[cookie.name] = cookie;\n return cookies;\n }, cookies);\n }\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n\n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n if (Array.isArray(cookiesString)) {\n return cookiesString;\n }\n if (typeof cookiesString !== \"string\") {\n return [];\n }\n\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n\n skipWhitespace();\n nextStart = pos;\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n\n return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\n","\n// slightly modified https://github.com/ungap/random-uuid/blob/main/index.js\nexport function scramtag() {\n return (\"\"+1e10).replace(/[018]/g,\n c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { URLMeta } from \"./url\";\n\n// i am a cat. i like to be petted. i like to be fed. i like to be\nimport {\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/wasm/out/wasm.js\";\nimport { $scramjet, flagEnabled } from \"../../scramjet\";\n\ninitSync({\n\tmodule: new WebAssembly.Module(\n\t\tUint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0))\n\t),\n});\n\nError.stackTraceLimit = 50;\n\nconst decoder = new TextDecoder();\n\nfunction rewriteJsWrapper(\n\tinput: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n): string | ArrayBuffer {\n\tlet out: RewriterOutput;\n\tconst before = performance.now();\n\ttry {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t\t} else {\n\t\t\tout = rewrite_js_from_arraybuffer(\n\t\t\t\tnew Uint8Array(input),\n\t\t\t\tmeta.base.href,\n\t\t\t\turl || \"(unknown)\",\n\t\t\t\t$scramjet\n\t\t\t);\n\t\t}\n\t} catch (err) {\n\t\tlet err1 = err as Error;\n\t\tconsole.error(\"failed rewriting js for\", url, err1, input);\n\t\terr1.message = `failed rewriting js for \"${url}\": ${err1.message}`;\n\t\tthrow err1;\n\t}\n\tconst after = performance.now();\n\tconst { js, errors, duration } = out;\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tlet timespan: string;\n\t\tif (duration < 1n) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500n) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tconst overhead = (after - before - Number(duration)).toFixed(2);\n\t\tconsole.log(\n\t\t\t`oxc rewrite for \"${url || \"(unknown)\"}\" was ${timespan} (${duration}ms; ${overhead}ms overhead)`\n\t\t);\n\t}\n\n\treturn typeof input === \"string\" ? decoder.decode(js) : js;\n}\n\nexport function rewriteJs(\n\tjs: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n) {\n\tif (flagEnabled(\"naiiveRewriter\", meta.origin)) {\n\t\tconst text = typeof js === \"string\" ? js : new TextDecoder().decode(js);\n\n\t\tconsole.log(\"naiive\");\n\n\t\treturn rewriteJsNaiive(text);\n\t}\n\n\tjs = rewriteJsWrapper(js, url, meta);\n\n\treturn js;\n}\n\n// 1. does not work with modules\n// 2. cannot proxy import()\n// 3. disables \"use strict\" optimizations\n// 4. i think the global state can get clobbered somehow\n//\n// if you can ensure all the preconditions are met this is faster than full rewrites\nexport function rewriteJsNaiive(js: string | ArrayBuffer) {\n\tif (typeof js !== \"string\") {\n\t\tjs = new TextDecoder().decode(js);\n\t}\n\n\treturn `\n\t\twith (${$scramjet.config.globals.wrapfn}(globalThis)) {\n\n\t\t\t${js}\n\n\t\t}\n\t`;\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\n\nexport type URLMeta = {\n\torigin: URL;\n\tbase: URL;\n};\n\nfunction tryCanParseURL(url: string, origin?: string | URL): URL | null {\n\ttry {\n\t\treturn new URL(url, origin);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function rewriteBlob(url: string, meta: URLMeta) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(url: string) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + location.origin + blob.pathname;\n}\n\nexport function rewriteUrl(url: string | URL, meta: URLMeta) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(url.slice(\"javascript:\".length), \"(javascript: url)\", meta)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tlet base = meta.base.href;\n\n\t\tif (base.startsWith(\"about:\")) base = unrewriteUrl(self.location.href); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(realUrl.href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tconst prefixed = location.origin + $scramjet.config.prefix;\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\t//TODO\n\t\treturn url;\n\t} else if (url.startsWith(\"blob:\")) {\n\t\t// realistically this shouldn't happen\n\t\treturn url;\n\t} else if (url.startsWith(prefixed + \"blob:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(prefixed + \"data:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else if (tryCanParseURL(url)) {\n\t\treturn $scramjet.codec.decode(\n\t\t\turl.slice((location.origin + $scramjet.config.prefix).length)\n\t\t);\n\t} else {\n\t\treturn url;\n\t}\n}\n","import { URLMeta, rewriteUrl, unrewriteUrl } from \"./url\";\n\nexport function rewriteCss(css: string, meta: URLMeta) {\n\treturn handleCss(\"rewrite\", css, meta);\n}\n\nexport function unrewriteCss(css: string) {\n\treturn handleCss(\"unrewrite\", css);\n}\n\nfunction handleCss(type: \"rewrite\" | \"unrewrite\", css: string, meta?: URLMeta) {\n\t// regex from vk6 (https://github.com/ading2210)\n\tconst urlRegex = /url\\(['\"]?(.+?)['\"]?\\)/gm;\n\tconst Atruleregex =\n\t\t/@import\\s+(url\\s*?\\(.{0,9999}?\\)|['\"].{0,9999}?['\"]|.{0,9999}?)($|\\s|;)/gm;\n\tcss = new String(css).toString();\n\tcss = css.replace(urlRegex, (match, url) => {\n\t\tconst encodedUrl =\n\t\t\ttype === \"rewrite\"\n\t\t\t\t? rewriteUrl(url.trim(), meta)\n\t\t\t\t: unrewriteUrl(url.trim());\n\n\t\treturn match.replace(url, encodedUrl);\n\t});\n\tcss = css.replace(Atruleregex, (match, importStatement) => {\n\t\treturn match.replace(\n\t\t\timportStatement,\n\t\t\timportStatement.replace(\n\t\t\t\t/^(url\\(['\"]?|['\"]|)(.+?)(['\"]|['\"]?\\)|)$/gm,\n\t\t\t\t(match, firstQuote, url, endQuote) => {\n\t\t\t\t\tif (firstQuote.startsWith(\"url\")) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\t\t\t\t\tconst encodedUrl =\n\t\t\t\t\t\ttype === \"rewrite\"\n\t\t\t\t\t\t\t? rewriteUrl(url.trim(), meta)\n\t\t\t\t\t\t\t: unrewriteUrl(url.trim());\n\n\t\t\t\t\treturn `${firstQuote}${encodedUrl}${endQuote}`;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t});\n\n\treturn css;\n}\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import htmlTrie from \"./generated/encode-html.js\";\nimport { xmlReplacer, getCodePoint } from \"./escape.js\";\nconst htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\n/**\n * Encodes all characters in the input using HTML entities. This includes\n * characters that are valid ASCII characters in HTML documents, such as `#`.\n *\n * To get a more compact output, consider using the `encodeNonAsciiHTML`\n * function, which will only encode characters that are not valid in HTML\n * documents, as well as non-ASCII characters.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nexport function encodeHTML(data) {\n return encodeHTMLTrieRe(htmlReplacer, data);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities. This function will not encode characters that\n * are valid in HTML documents, such as `#`.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nexport function encodeNonAsciiHTML(data) {\n return encodeHTMLTrieRe(xmlReplacer, data);\n}\nfunction encodeHTMLTrieRe(regExp, str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = regExp.exec(str)) !== null) {\n const i = match.index;\n ret += str.substring(lastIdx, i);\n const char = str.charCodeAt(i);\n let next = htmlTrie.get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n const nextChar = str.charCodeAt(i + 1);\n const value = typeof next.n === \"number\"\n ? next.n === nextChar\n ? next.o\n : undefined\n : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n }\n else {\n const cp = getCodePoint(str, i);\n ret += `&#x${cp.toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n//# sourceMappingURL=encode.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { ElementType, Parser } from \"htmlparser2\";\nimport { ChildNode, DomHandler, Element } from \"domhandler\";\nimport render from \"dom-serializer\";\nimport { URLMeta, rewriteUrl } from \"./url\";\nimport { rewriteCss } from \"./css\";\nimport { rewriteJs } from \"./js\";\nimport { CookieStore } from \"../cookie\";\nimport { unrewriteBlob } from \"../../shared/rewriters/url\";\nimport { $scramjet } from \"../../scramjet\";\n\nconst encoder = new TextEncoder();\nexport function rewriteHtml(\n\thtml: string,\n\tcookieStore: CookieStore,\n\tmeta: URLMeta,\n\tfromTop: boolean = false\n) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler);\n\n\tparser.write(html);\n\tparser.end();\n\ttraverseParsedHtml(handler.root, cookieStore, meta);\n\n\tfunction findhead(node) {\n\t\tif (node.type === ElementType.Tag && node.name === \"head\") {\n\t\t\treturn node as Element;\n\t\t} else if (node.childNodes) {\n\t\t\tfor (const child of node.childNodes) {\n\t\t\t\tconst head = findhead(child);\n\t\t\t\tif (head) return head;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tif (fromTop) {\n\t\tlet head = findhead(handler.root);\n\t\tif (!head) {\n\t\t\thead = new Element(\"head\", {}, []);\n\t\t\thandler.root.children.unshift(head);\n\t\t}\n\n\t\tconst dump = JSON.stringify(cookieStore.dump());\n\t\tconst injected = `\n\t\t\tself.COOKIE = ${dump};\n\t\t\tself.$scramjet.config = ${JSON.stringify($scramjet.config)};\n\t\t\tif (\"document\" in self && document?.currentScript) {\n\t\t\t\tdocument.currentScript.remove();\n\t\t\t}\n\t\t`;\n\n\t\tconst script = (src) => new Element(\"script\", { src });\n\n\t\t// for compatibility purpose\n\t\tconst base64Injected = bytesToBase64(encoder.encode(injected));\n\n\t\thead.children.unshift(\n\t\t\tscript($scramjet.config.files.wasm),\n\t\t\tscript($scramjet.config.files.shared),\n\t\t\tscript(\"data:application/javascript;base64,\" + base64Injected),\n\t\t\tscript($scramjet.config.files.client)\n\t\t);\n\t}\n\n\treturn render(handler.root);\n}\n\n// type ParseState = {\n// \tbase: string;\n// \torigin?: URL;\n// };\n\nexport function unrewriteHtml(html: string) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler);\n\n\tparser.write(html);\n\tparser.end();\n\n\tfunction traverse(node: ChildNode) {\n\t\tif (\"attribs\" in node) {\n\t\t\tfor (const key in node.attribs) {\n\t\t\t\tif (key == \"scramjet-attr-script-source-src\") {\n\t\t\t\t\tif (node.children[0] && \"data\" in node.children[0])\n\t\t\t\t\t\tnode.children[0].data = atob(node.attribs[key]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (key.startsWith(\"scramjet-attr-\")) {\n\t\t\t\t\tnode.attribs[key.slice(\"scramjet-attr-\".length)] = node.attribs[key];\n\t\t\t\t\tdelete node.attribs[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\"childNodes\" in node) {\n\t\t\tfor (const child of node.childNodes) {\n\t\t\t\ttraverse(child);\n\t\t\t}\n\t\t}\n\t}\n\n\ttraverse(handler.root);\n\n\treturn render(handler.root);\n}\n\nexport const htmlRules: {\n\t[key: string]: \"*\" | string[] | ((...any: any[]) => string | null);\n\tfn: (value: string, meta: URLMeta, cookieStore: CookieStore) => string | null;\n}[] = [\n\t{\n\t\tfn: (value: string, meta: URLMeta) => {\n\t\t\treturn rewriteUrl(value, meta);\n\t\t},\n\n\t\t// url rewrites\n\t\tsrc: [\n\t\t\t\"embed\",\n\t\t\t\"script\",\n\t\t\t\"img\",\n\t\t\t\"iframe\",\n\t\t\t\"frame\",\n\t\t\t\"source\",\n\t\t\t\"input\",\n\t\t\t\"track\",\n\t\t],\n\t\thref: [\"a\", \"link\", \"area\", \"use\", \"image\"],\n\t\tdata: [\"object\"],\n\t\taction: [\"form\"],\n\t\tformaction: [\"button\", \"input\", \"textarea\", \"submit\"],\n\t\tposter: [\"video\"],\n\t\t\"xlink:href\": [\"image\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta) => {\n\t\t\tif (value.startsWith(\"blob:\")) {\n\t\t\t\t// for media elements specifically they must take the original blob\n\t\t\t\t// because they can't be fetch'd\n\t\t\t\treturn unrewriteBlob(value);\n\t\t\t}\n\n\t\t\treturn rewriteUrl(value, meta);\n\t\t},\n\t\tsrc: [\"video\", \"audio\"],\n\t},\n\t{\n\t\tfn: () => \"\",\n\n\t\tintegrity: [\"script\", \"link\"],\n\t},\n\t{\n\t\tfn: () => null,\n\n\t\t// csp stuff that must be deleted\n\t\tnonce: \"*\",\n\t\tcsp: [\"iframe\"],\n\t\tcredentialless: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta) => rewriteSrcset(value, meta),\n\n\t\t// srcset\n\t\tsrcset: [\"img\", \"source\"],\n\t\timagesrcset: [\"link\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta, cookieStore: CookieStore) =>\n\t\t\trewriteHtml(\n\t\t\t\tvalue,\n\t\t\t\tcookieStore,\n\t\t\t\t{\n\t\t\t\t\t// for srcdoc origin is the origin of the page that the iframe is on. base and path get dropped\n\t\t\t\t\torigin: new URL(meta.origin.origin),\n\t\t\t\t\tbase: new URL(meta.origin.origin),\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t),\n\n\t\t// srcdoc\n\t\tsrcdoc: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta) => rewriteCss(value, meta),\n\t\tstyle: \"*\",\n\t},\n\t{\n\t\tfn: (value: string) => {\n\t\t\tif ([\"_parent\", \"_top\", \"_unfencedTop\"].includes(value)) return \"_self\";\n\t\t},\n\t\ttarget: [\"a\", \"base\"],\n\t},\n];\n\n// i need to add the attributes in during rewriting\n\nfunction traverseParsedHtml(\n\tnode: any,\n\tcookieStore: CookieStore,\n\tmeta: URLMeta\n) {\n\tif (node.name === \"base\" && node.attribs.href !== undefined) {\n\t\tmeta.base = new URL(node.attribs.href, meta.origin);\n\t}\n\n\tif (node.attribs) {\n\t\tfor (const rule of htmlRules) {\n\t\t\tfor (const attr in rule) {\n\t\t\t\tconst sel = rule[attr.toLowerCase()];\n\t\t\t\tif (typeof sel === \"function\") continue;\n\n\t\t\t\tif (sel === \"*\" || sel.includes(node.name)) {\n\t\t\t\t\tif (node.attribs[attr] !== undefined) {\n\t\t\t\t\t\tconst value = node.attribs[attr];\n\t\t\t\t\t\tconst v = rule.fn(value, meta, cookieStore);\n\n\t\t\t\t\t\tif (v === null) delete node.attribs[attr];\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.attribs[attr] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const [attr, value] of Object.entries(node.attribs)) {\n\t\t\tif (eventAttributes.includes(attr)) {\n\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\tnode.attribs[attr] = rewriteJs(\n\t\t\t\t\tvalue as string,\n\t\t\t\t\t`(inline ${attr} on element)`,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (node.name === \"style\" && node.children[0] !== undefined)\n\t\tnode.children[0].data = rewriteCss(node.children[0].data, meta);\n\n\tif (\n\t\tnode.name === \"script\" &&\n\t\t/(application|text)\\/javascript|module|importmap|undefined/.test(\n\t\t\tnode.attribs.type\n\t\t) &&\n\t\tnode.children[0] !== undefined\n\t) {\n\t\tlet js = node.children[0].data;\n\t\t// node.attribs[`scramjet-attr-script-source-src`] = btoa(js);\n\t\tnode.attribs[\"scramjet-attr-script-source-src\"] = bytesToBase64(\n\t\t\tencoder.encode(js)\n\t\t);\n\t\tconst htmlcomment = /<!--[\\s\\S]*?-->/g;\n\t\tjs = js.replace(htmlcomment, \"\");\n\t\tnode.children[0].data = rewriteJs(js, \"(inline script element)\", meta);\n\t}\n\n\tif (node.name === \"meta\" && node.attribs[\"http-equiv\"] !== undefined) {\n\t\tif (\n\t\t\tnode.attribs[\"http-equiv\"].toLowerCase() === \"content-security-policy\"\n\t\t) {\n\t\t\tnode = {};\n\t\t} else if (\n\t\t\tnode.attribs[\"http-equiv\"] === \"refresh\" &&\n\t\t\tnode.attribs.content.includes(\"url\")\n\t\t) {\n\t\t\tconst contentArray = node.attribs.content.split(\"url=\");\n\t\t\tif (contentArray[1])\n\t\t\t\tcontentArray[1] = rewriteUrl(contentArray[1].trim(), meta);\n\t\t\tnode.attribs.content = contentArray.join(\"url=\");\n\t\t}\n\t}\n\n\tif (node.childNodes) {\n\t\tfor (const childNode in node.childNodes) {\n\t\t\tnode.childNodes[childNode] = traverseParsedHtml(\n\t\t\t\tnode.childNodes[childNode],\n\t\t\t\tcookieStore,\n\t\t\t\tmeta\n\t\t\t);\n\t\t}\n\t}\n\n\treturn node;\n}\n\nexport function rewriteSrcset(srcset: string, meta: URLMeta) {\n\tconst sources = srcset.split(\",\").map((src) => src.trim());\n\tconst rewrittenSources = sources.map((source) => {\n\t\t// Split into URLs and descriptors (if any)\n\t\t// e.g. url0, url1 1.5x, url2 2x\n\t\tconst [url, ...descriptors] = source.split(/\\s+/);\n\n\t\t// Rewrite the URLs and keep the descriptors (if any)\n\t\tconst rewrittenUrl = rewriteUrl(url.trim(), meta);\n\n\t\treturn descriptors.length > 0\n\t\t\t? `${rewrittenUrl} ${descriptors.join(\" \")}`\n\t\t\t: rewrittenUrl;\n\t});\n\n\treturn rewrittenSources.join(\", \");\n}\n\n// function base64ToBytes(base64) {\n// \tconst binString = atob(base64);\n\n// \treturn Uint8Array.from(binString, (m) => m.codePointAt(0));\n// }\n\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array.from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\nconst eventAttributes = [\n\t\"onbeforexrselect\",\n\t\"onabort\",\n\t\"onbeforeinput\",\n\t\"onbeforematch\",\n\t\"onbeforetoggle\",\n\t\"onblur\",\n\t\"oncancel\",\n\t\"oncanplay\",\n\t\"oncanplaythrough\",\n\t\"onchange\",\n\t\"onclick\",\n\t\"onclose\",\n\t\"oncontentvisibilityautostatechange\",\n\t\"oncontextlost\",\n\t\"oncontextmenu\",\n\t\"oncontextrestored\",\n\t\"oncuechange\",\n\t\"ondblclick\",\n\t\"ondrag\",\n\t\"ondragend\",\n\t\"ondragenter\",\n\t\"ondragleave\",\n\t\"ondragover\",\n\t\"ondragstart\",\n\t\"ondrop\",\n\t\"ondurationchange\",\n\t\"onemptied\",\n\t\"onended\",\n\t\"onerror\",\n\t\"onfocus\",\n\t\"onformdata\",\n\t\"oninput\",\n\t\"oninvalid\",\n\t\"onkeydown\",\n\t\"onkeypress\",\n\t\"onkeyup\",\n\t\"onload\",\n\t\"onloadeddata\",\n\t\"onloadedmetadata\",\n\t\"onloadstart\",\n\t\"onmousedown\",\n\t\"onmouseenter\",\n\t\"onmouseleave\",\n\t\"onmousemove\",\n\t\"onmouseout\",\n\t\"onmouseover\",\n\t\"onmouseup\",\n\t\"onmousewheel\",\n\t\"onpause\",\n\t\"onplay\",\n\t\"onplaying\",\n\t\"onprogress\",\n\t\"onratechange\",\n\t\"onreset\",\n\t\"onresize\",\n\t\"onscroll\",\n\t\"onsecuritypolicyviolation\",\n\t\"onseeked\",\n\t\"onseeking\",\n\t\"onselect\",\n\t\"onslotchange\",\n\t\"onstalled\",\n\t\"onsubmit\",\n\t\"onsuspend\",\n\t\"ontimeupdate\",\n\t\"ontoggle\",\n\t\"onvolumechange\",\n\t\"onwaiting\",\n\t\"onwebkitanimationend\",\n\t\"onwebkitanimationiteration\",\n\t\"onwebkitanimationstart\",\n\t\"onwebkittransitionend\",\n\t\"onwheel\",\n\t\"onauxclick\",\n\t\"ongotpointercapture\",\n\t\"onlostpointercapture\",\n\t\"onpointerdown\",\n\t\"onpointermove\",\n\t\"onpointerrawupdate\",\n\t\"onpointerup\",\n\t\"onpointercancel\",\n\t\"onpointerover\",\n\t\"onpointerout\",\n\t\"onpointerenter\",\n\t\"onpointerleave\",\n\t\"onselectstart\",\n\t\"onselectionchange\",\n\t\"onanimationend\",\n\t\"onanimationiteration\",\n\t\"onanimationstart\",\n\t\"ontransitionrun\",\n\t\"ontransitionstart\",\n\t\"ontransitionend\",\n\t\"ontransitioncancel\",\n\t\"oncopy\",\n\t\"oncut\",\n\t\"onpaste\",\n\t\"onscrollend\",\n\t\"onscrollsnapchange\",\n\t\"onscrollsnapchanging\",\n];\n","// TODO this whole file should be inlined and deleted it's a weird relic from ssd era\n\nimport { URLMeta, rewriteUrl } from \"./url\";\nimport { BareHeaders } from \"@mercuryworkshop/bare-mux\";\nconst cspHeaders = [\n\t\"cross-origin-embedder-policy\",\n\t\"cross-origin-opener-policy\",\n\t\"cross-origin-resource-policy\",\n\t\"content-security-policy\",\n\t\"content-security-policy-report-only\",\n\t\"expect-ct\",\n\t\"feature-policy\",\n\t\"origin-isolation\",\n\t\"strict-transport-security\",\n\t\"upgrade-insecure-requests\",\n\t\"x-content-type-options\",\n\t\"x-download-options\",\n\t\"x-frame-options\",\n\t\"x-permitted-cross-domain-policies\",\n\t\"x-powered-by\",\n\t\"x-xss-protection\",\n\t// This needs to be emulated, but for right now it isn't that important of a feature to be worried about\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data\n\t\"clear-site-data\",\n];\n\nconst urlHeaders = [\"location\", \"content-location\", \"referer\"];\n\nfunction rewriteLinkHeader(link: string, meta: URLMeta) {\n\treturn link.replace(/<(.*)>/gi, (match) => rewriteUrl(match, meta));\n}\n\nexport function rewriteHeaders(rawHeaders: BareHeaders, meta: URLMeta) {\n\tconst headers = {};\n\n\tfor (const key in rawHeaders) {\n\t\theaders[key.toLowerCase()] = rawHeaders[key];\n\t}\n\n\tcspHeaders.forEach((header) => {\n\t\tdelete headers[header];\n\t});\n\n\turlHeaders.forEach((header) => {\n\t\tif (headers[header])\n\t\t\theaders[header] = rewriteUrl(headers[header]?.toString() as string, meta);\n\t});\n\n\tif (typeof headers[\"link\"] === \"string\") {\n\t\theaders[\"link\"] = rewriteLinkHeader(headers[\"link\"], meta);\n\t} else if (Array.isArray(headers[\"link\"])) {\n\t\theaders[\"link\"] = headers[\"link\"].map((link) =>\n\t\t\trewriteLinkHeader(link, meta)\n\t\t);\n\t}\n\n\treturn headers;\n}\n","const e=20,t=globalThis.fetch,r=globalThis.SharedWorker,a=globalThis.localStorage,s=globalThis.navigator.serviceWorker,o=MessagePort.prototype.postMessage,n={prototype:{send:WebSocket.prototype.send},CLOSED:WebSocket.CLOSED,CLOSING:WebSocket.CLOSING,CONNECTING:WebSocket.CONNECTING,OPEN:WebSocket.OPEN};async function c(){const e=(await self.clients.matchAll({type:\"window\",includeUncontrolled:!0})).map((async e=>{const t=await function(e){let t=new MessageChannel;return new Promise((r=>{e.postMessage({type:\"getPort\",port:t.port2},[t.port2]),t.port1.onmessage=e=>{r(e.data)}}))}(e);return await i(t),t})),t=Promise.race([Promise.any(e),new Promise(((e,t)=>setTimeout(t,1e3,new TypeError(\"timeout\"))))]);try{return await t}catch(e){if(e instanceof AggregateError)throw console.error(\"bare-mux: failed to get a bare-mux SharedWorker MessagePort as all clients returned an invalid MessagePort.\"),new Error(\"All clients returned an invalid MessagePort.\");return console.warn(\"bare-mux: failed to get a bare-mux SharedWorker MessagePort within 1s, retrying\"),await c()}}function i(e){const t=new MessageChannel,r=new Promise(((e,r)=>{t.port1.onmessage=t=>{\"pong\"===t.data.type&&e()},setTimeout(r,1500)}));return o.call(e,{message:{type:\"ping\"},port:t.port2},[t.port2]),r}function l(e,t){const a=new r(e,\"bare-mux-worker\");return t&&s.addEventListener(\"message\",(t=>{if(\"getPort\"===t.data.type&&t.data.port){console.debug(\"bare-mux: recieved request for port from sw\");const a=new r(e,\"bare-mux-worker\");o.call(t.data.port,a.port,[a.port])}})),a.port}let h=null;function d(){if(null===h){const e=new MessageChannel,t=new ReadableStream;let r;try{o.call(e.port1,t,[t]),r=!0}catch(e){r=!1}return h=r,r}return h}class p{constructor(e){this.channel=new BroadcastChannel(\"bare-mux\"),e instanceof MessagePort||e instanceof Promise?this.port=e:this.createChannel(e,!0)}createChannel(e,t){if(self.clients)this.port=c(),this.channel.onmessage=e=>{\"refreshPort\"===e.data.type&&(this.port=c())};else if(e&&SharedWorker){if(!e.startsWith(\"/\")&&!e.includes(\"://\"))throw new Error(\"Invalid URL. Must be absolute or start at the root.\");this.port=l(e,t),console.debug(\"bare-mux: setting localStorage bare-mux-path to\",e),a[\"bare-mux-path\"]=e}else{if(!SharedWorker)throw new Error(\"Unable to get a channel to the SharedWorker.\");{const e=a[\"bare-mux-path\"];if(console.debug(\"bare-mux: got localStorage bare-mux-path:\",e),!e)throw new Error(\"Unable to get bare-mux workerPath from localStorage.\");this.port=l(e,t)}}}async sendMessage(e,t){this.port instanceof Promise&&(this.port=await this.port);try{await i(this.port)}catch{return console.warn(\"bare-mux: Failed to get a ping response from the worker within 1.5s. Assuming port is dead.\"),this.createChannel(),await this.sendMessage(e,t)}const r=new MessageChannel,a=[r.port2,...t||[]],s=new Promise(((e,t)=>{r.port1.onmessage=r=>{const a=r.data;\"error\"===a.type?t(a.error):e(a)}}));return o.call(this.port,{message:e,port:r.port2},a),await s}}class w extends EventTarget{constructor(e,t=[],r,a){super(),this.protocols=t,this.readyState=n.CONNECTING,this.url=e.toString(),this.protocols=t;const s=e=>{this.protocols=e,this.readyState=n.OPEN;const t=new Event(\"open\");this.dispatchEvent(t)},o=async e=>{const t=new MessageEvent(\"message\",{data:e});this.dispatchEvent(t)},c=(e,t)=>{this.readyState=n.CLOSED;const r=new CloseEvent(\"close\",{code:e,reason:t});this.dispatchEvent(r)},i=()=>{this.readyState=n.CLOSED;const e=new Event(\"error\");this.dispatchEvent(e)};this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{\"open\"===e.data.type?s(e.data.args[0]):\"message\"===e.data.type?o(e.data.args[0]):\"close\"===e.data.type?c(e.data.args[0],e.data.args[1]):\"error\"===e.data.type&&i()},r.sendMessage({type:\"websocket\",websocket:{url:e.toString(),protocols:t,requestHeaders:a,channel:this.channel.port2}},[this.channel.port2])}send(...e){if(this.readyState===n.CONNECTING)throw new DOMException(\"Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.\");let t=e[0];t.buffer&&(t=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)),o.call(this.channel.port1,{type:\"data\",data:t},t instanceof ArrayBuffer?[t]:[])}close(e,t){o.call(this.channel.port1,{type:\"close\",closeCode:e,closeReason:t})}}function u(e,t,r){console.error(`error while processing '${r}': `,t),e.postMessage({type:\"error\",error:t})}function g(e){for(let t=0;t<e.length;t++){const r=e[t];if(!\"!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~\".includes(r))return!1}return!0}const f=[\"ws:\",\"wss:\"],y=[101,204,205,304],b=[301,302,303,307,308];class m{constructor(e){this.worker=new p(e)}async getTransport(){return(await this.worker.sendMessage({type:\"get\"})).name}async setTransport(e,t,r){await this.setManualTransport(`\\n\\t\\t\\tconst { default: BareTransport } = await import(\"${e}\");\\n\\t\\t\\treturn [BareTransport, \"${e}\"];\\n\\t\\t`,t,r)}async setManualTransport(e,t,r){if(\"bare-mux-remote\"===e)throw new Error(\"Use setRemoteTransport.\");await this.worker.sendMessage({type:\"set\",client:{function:e,args:t}},r)}async setRemoteTransport(e,t){const r=new MessageChannel;r.port1.onmessage=async t=>{const r=t.data.port,a=t.data.message;if(\"fetch\"===a.type)try{e.ready||await e.init(),await async function(e,t,r){const a=await r.request(new URL(e.fetch.remote),e.fetch.method,e.fetch.body,e.fetch.headers,null);if(!d()&&a.body instanceof ReadableStream){const e=new Response(a.body);a.body=await e.arrayBuffer()}a.body instanceof ReadableStream||a.body instanceof ArrayBuffer?o.call(t,{type:\"fetch\",fetch:a},[a.body]):o.call(t,{type:\"fetch\",fetch:a})}(a,r,e)}catch(e){u(r,e,\"fetch\")}else if(\"websocket\"===a.type)try{e.ready||await e.init(),await async function(e,t,r){const[a,s]=r.connect(new URL(e.websocket.url),e.websocket.protocols,e.websocket.requestHeaders,(t=>{o.call(e.websocket.channel,{type:\"open\",args:[t]})}),(t=>{t instanceof ArrayBuffer?o.call(e.websocket.channel,{type:\"message\",args:[t]},[t]):o.call(e.websocket.channel,{type:\"message\",args:[t]})}),((t,r)=>{o.call(e.websocket.channel,{type:\"close\",args:[t,r]})}),(t=>{o.call(e.websocket.channel,{type:\"error\",args:[t]})}));e.websocket.channel.onmessage=e=>{\"data\"===e.data.type?a(e.data.data):\"close\"===e.data.type&&s(e.data.closeCode,e.data.closeReason)},o.call(t,{type:\"websocket\"})}(a,r,e)}catch(e){u(r,e,\"websocket\")}},await this.worker.sendMessage({type:\"set\",client:{function:\"bare-mux-remote\",args:[r.port2,t]}},[r.port2])}getInnerPort(){return this.worker.port}}class k{constructor(e){this.worker=new p(e)}createWebSocket(e,t=[],r,a){try{e=new URL(e)}catch(t){throw new DOMException(`Faiiled to construct 'WebSocket': The URL '${e}' is invalid.`)}if(!f.includes(e.protocol))throw new DOMException(`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${e.protocol}' is not allowed.`);Array.isArray(t)||(t=[t]),t=t.map(String);for(const e of t)if(!g(e))throw new DOMException(`Failed to construct 'WebSocket': The subprotocol '${e}' is invalid.`);a=a||{};return new w(e,t,this.worker,a)}async fetch(e,r){const a=new Request(e,r),s=r?.headers||a.headers,o=s instanceof Headers?Object.fromEntries(s):s,n=a.body;let c=new URL(a.url);if(c.protocol.startsWith(\"blob:\")){const e=await t(c),r=new Response(e.body,e);return r.rawHeaders=Object.fromEntries(e.headers),r}for(let e=0;;e++){let t=(await this.worker.sendMessage({type:\"fetch\",fetch:{remote:c.toString(),method:a.method,headers:o,body:n||void 0}},n?[n]:[])).fetch,s=new Response(y.includes(t.status)?void 0:t.body,{headers:new Headers(t.headers),status:t.status,statusText:t.statusText});s.rawHeaders=t.headers,s.rawResponse=t,s.finalURL=c.toString();const i=r?.redirect||a.redirect;if(!b.includes(s.status))return s;switch(i){case\"follow\":{const t=s.headers.get(\"location\");if(20>e&&null!==t){c=new URL(t,c);continue}throw new TypeError(\"Failed to fetch\")}case\"error\":throw new TypeError(\"Failed to fetch\");case\"manual\":return s}}}}console.debug(\"bare-mux: running v2.1.7 (build c56d286)\");export{k as BareClient,m as BareMuxConnection,w as BareWebSocket,n as WebSocketFields,p as WorkerConnection,d as browserSupportsTransferringStreams,k as default,e as maxRedirects,g as validProtocol};\n//# sourceMappingURL=index.mjs.map\n","import * as characters from \"./characters.js\";\nexport const lookUpTldsInTrie = (labels, trie) => {\n const labelsToCheck = labels.slice();\n const tlds = [];\n let node = trie;\n while (labelsToCheck.length !== 0) {\n const label = labelsToCheck.pop();\n const labelLowerCase = label.toLowerCase();\n if (node.children.has(characters.WILDCARD)) {\n if (node.children.has(characters.EXCEPTION + labelLowerCase)) {\n break;\n }\n node = node.children.get(characters.WILDCARD);\n }\n else {\n if (node.children.has(labelLowerCase) === false) {\n break;\n }\n node = node.children.get(labelLowerCase);\n }\n tlds.unshift(label);\n }\n return tlds;\n};\n//# sourceMappingURL=look-up.js.map","// UP, SAME, DOWN, RESET should not be special regex characters in a character class.\nexport const UP = \"<\"; // one level up\nexport const SAME = \",\"; // same level\nexport const DOWN = \">\"; // one level down\nexport const RESET = \"|\"; // reset level index and start new\nexport const WILDCARD = \"*\"; // as defined by publicsuffix.org\nexport const EXCEPTION = \"!\"; // as defined by publicsuffix.org\n//# sourceMappingURL=characters.js.map","const word = '[a-fA-F\\\\d:]';\n\nconst boundry = options => options && options.includeBoundaries\n\t? `(?:(?<=\\\\s|^)(?=${word})|(?<=${word})(?=\\\\s|$))`\n\t: '';\n\nconst v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n\nconst v6segment = '[a-fA-F\\\\d]{1,4}';\n\nconst v6 = `\n(?:\n(?:${v6segment}:){7}(?:${v6segment}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${v6segment}:){6}(?:${v4}|:${v6segment}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${v6segment}:){5}(?::${v4}|(?::${v6segment}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${v6segment}:){4}(?:(?::${v6segment}){0,1}:${v4}|(?::${v6segment}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${v6segment}:){3}(?:(?::${v6segment}){0,2}:${v4}|(?::${v6segment}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${v6segment}:){2}(?:(?::${v6segment}){0,3}:${v4}|(?::${v6segment}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${v6segment}:){1}(?:(?::${v6segment}){0,4}:${v4}|(?::${v6segment}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${v6segment}){0,5}:${v4}|(?::${v6segment}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim();\n\n// Pre-compile only the exact regexes because adding a global flag make regexes stateful\nconst v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);\nconst v4exact = new RegExp(`^${v4}$`);\nconst v6exact = new RegExp(`^${v6}$`);\n\nconst ipRegex = options => options && options.exact\n\t? v46Exact\n\t: new RegExp(`(?:${boundry(options)}${v4}${boundry(options)})|(?:${boundry(options)}${v6}${boundry(options)})`, 'g');\n\nipRegex.v4 = options => options && options.exact ? v4exact : new RegExp(`${boundry(options)}${v4}${boundry(options)}`, 'g');\nipRegex.v6 = options => options && options.exact ? v6exact : new RegExp(`${boundry(options)}${v6}${boundry(options)}`, 'g');\n\nexport default ipRegex;\n","const {toString} = Object.prototype;\n\nexport default function isRegexp(value) {\n\treturn toString.call(value) === '[object RegExp]';\n}\n","import isRegexp from 'is-regexp';\n\nconst flagMap = {\n\tglobal: 'g',\n\tignoreCase: 'i',\n\tmultiline: 'm',\n\tdotAll: 's',\n\tsticky: 'y',\n\tunicode: 'u'\n};\n\nexport default function clonedRegexp(regexp, options = {}) {\n\tif (!isRegexp(regexp)) {\n\t\tthrow new TypeError('Expected a RegExp instance');\n\t}\n\n\tconst flags = Object.keys(flagMap).map(flag => (\n\t\t(typeof options[flag] === 'boolean' ? options[flag] : regexp[flag]) ? flagMap[flag] : ''\n\t)).join('');\n\n\tconst clonedRegexp = new RegExp(options.source || regexp.source, flags);\n\n\tclonedRegexp.lastIndex = typeof options.lastIndex === 'number' ?\n\t\toptions.lastIndex :\n\t\tregexp.lastIndex;\n\n\treturn clonedRegexp;\n}\n","import functionTimeout, {isTimeoutError} from 'function-timeout';\nimport timeSpan from 'time-span';\nimport cloneRegexp from 'clone-regexp'; // TODO: Use `structuredClone` instead when targeting Node.js 18.\n\nconst resultToMatch = result => ({\n\tmatch: result[0],\n\tindex: result.index,\n\tgroups: result.slice(1),\n\tnamedGroups: result.groups ?? {},\n\tinput: result.input,\n});\n\nexport function isMatch(regex, string, {timeout} = {}) {\n\ttry {\n\t\treturn functionTimeout(() => cloneRegexp(regex).test(string), {timeout})();\n\t} catch (error) {\n\t\tif (isTimeoutError(error)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nexport function firstMatch(regex, string, {timeout} = {}) {\n\ttry {\n\t\tconst result = functionTimeout(() => cloneRegexp(regex).exec(string), {timeout})();\n\n\t\tif (result === null) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn resultToMatch(result);\n\t} catch (error) {\n\t\tif (isTimeoutError(error)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nexport function matches(regex, string, {timeout = Number.POSITIVE_INFINITY, matchTimeout = Number.POSITIVE_INFINITY} = {}) {\n\tif (!regex.global) {\n\t\tthrow new Error('The regex must have the global flag, otherwise, use `firstMatch()` instead');\n\t}\n\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\ttry {\n\t\t\t\tconst matches = string.matchAll(regex); // The regex is only executed when iterated over.\n\n\t\t\t\twhile (true) {\n\t\t\t\t\tconst nextMatch = functionTimeout(() => matches.next(), {timeout: (timeout !== Number.POSITIVE_INFINITY || matchTimeout !== Number.POSITIVE_INFINITY) ? Math.min(timeout, matchTimeout) : undefined}); // `matches.next` must be called within an arrow function so that it doesn't loose its context.\n\n\t\t\t\t\tconst end = timeSpan();\n\t\t\t\t\tconst {value, done} = nextMatch();\n\t\t\t\t\ttimeout -= Math.ceil(end());\n\n\t\t\t\t\tif (done) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tyield resultToMatch(value);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (!isTimeoutError(error)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n}\n","// Even though the browser version is a no-op, we wrap it to ensure consistent behavior.\nexport default function functionTimeout(function_) {\n\tconst wrappedFunction = (...arguments_) => function_(...arguments_);\n\n\tObject.defineProperty(wrappedFunction, 'name', {\n\t\tvalue: `functionTimeout(${function_.name || '<anonymous>'})`,\n\t\tconfigurable: true,\n\t});\n\n\treturn wrappedFunction;\n}\n\nexport function isTimeoutError() {\n\treturn false;\n}\n","import ipRegex from 'ip-regex';\nimport {isMatch} from 'super-regex';\n\nconst maxIPv4Length = 15;\nconst maxIPv6Length = 45;\n\nconst options = {\n\ttimeout: 400,\n};\n\nexport function isIP(string) {\n\tif (string.length > maxIPv6Length) {\n\t\treturn false;\n\t}\n\n\treturn isMatch(ipRegex({exact: true}), string, options);\n}\n\nexport function isIPv6(string) {\n\tif (string.length > maxIPv6Length) {\n\t\treturn false;\n\t}\n\n\treturn isMatch(ipRegex.v6({exact: true}), string, options);\n}\n\nexport function isIPv4(string) {\n\tif (string.length > maxIPv4Length) {\n\t\treturn false;\n\t}\n\n\treturn isMatch(ipRegex.v4({exact: true}), string, options);\n}\n\nexport function ipVersion(string) {\n\tif (isIPv6(string)) {\n\t\treturn 6;\n\t}\n\n\tif (isIPv4(string)) {\n\t\treturn 4;\n\t}\n}\n","export const NODE_TYPE_ROOT = Symbol(\"ROOT\");\nexport const NODE_TYPE_CHILD = Symbol(\"CHILD\");\nexport const createRootNode = () => {\n return {\n type: NODE_TYPE_ROOT,\n children: new Map(),\n };\n};\nexport const createOrGetChild = (parent, label) => {\n let child = parent.children.get(label);\n if (child === undefined) {\n child = {\n type: NODE_TYPE_CHILD,\n label,\n children: new Map(),\n parent,\n };\n parent.children.set(label, child);\n }\n return child;\n};\n//# sourceMappingURL=nodes.js.map","import * as characters from \"./characters.js\";\nimport { createRootNode, createOrGetChild, NODE_TYPE_ROOT, } from \"./nodes.js\";\nexport const parseTrie = (serializedTrie) => {\n const rootNode = createRootNode();\n let domain = \"\";\n let parentNode = rootNode;\n // Type assertion necessary here due to a TypeScript unsoundness\n // https://github.com/microsoft/TypeScript/issues/9998#issuecomment-235963457\n let node = rootNode;\n const addDomain = () => {\n node = createOrGetChild(parentNode, domain);\n domain = \"\";\n };\n for (let i = 0; i < serializedTrie.length; i++) {\n const char = serializedTrie.charAt(i);\n switch (char) {\n case characters.SAME: {\n addDomain();\n continue;\n }\n case characters.DOWN: {\n addDomain();\n parentNode = node;\n continue;\n }\n case characters.RESET: {\n addDomain();\n parentNode = rootNode;\n continue;\n }\n case characters.UP: {\n if (parentNode.type === NODE_TYPE_ROOT) {\n throw new Error(`Error in serialized trie at position ${i}: Cannot go up, current parent node is already root`);\n }\n addDomain();\n parentNode = parentNode.parent;\n continue;\n }\n }\n domain += char;\n }\n if (domain !== \"\") {\n addDomain();\n }\n return rootNode;\n};\n//# sourceMappingURL=parse-trie.js.map","import {\n\trewriteUrl,\n\tunrewriteUrl,\n\trewriteBlob,\n\tunrewriteBlob,\n} from \"./rewriters/url\";\nimport { rewriteCss, unrewriteCss } from \"./rewriters/css\";\nimport { rewriteHtml, rewriteSrcset } from \"./rewriters/html\";\nimport { rewriteJs } from \"./rewriters/js\";\nimport { rewriteHeaders } from \"./rewriters/headers\";\nimport { rewriteWorkers } from \"./rewriters/worker\";\nimport { BareClient, BareMuxConnection } from \"@mercuryworkshop/bare-mux\";\nimport { parseDomain } from \"parse-domain\";\nimport { ScramjetHeaders } from \"./headers\";\nimport { CookieStore } from \"./cookie\";\nimport { htmlRules, unrewriteHtml } from \"./rewriters/html\";\nimport { $scramjet } from \"../scramjet\";\n\n$scramjet.shared = {\n\tutil: {\n\t\tparseDomain,\n\t\tBareClient,\n\t\tBareMuxConnection,\n\t\tScramjetHeaders,\n\t},\n\turl: {\n\t\trewriteUrl,\n\t\tunrewriteUrl,\n\t\trewriteBlob,\n\t\tunrewriteBlob,\n\t},\n\trewrite: {\n\t\trewriteCss,\n\t\tunrewriteCss,\n\t\trewriteHtml,\n\t\tunrewriteHtml,\n\t\trewriteSrcset,\n\t\trewriteJs,\n\t\trewriteHeaders,\n\t\trewriteWorkers,\n\t\thtmlRules,\n\t},\n\tCookieStore,\n};\n\nif (\"document\" in self && document?.currentScript) {\n\tdocument.currentScript.remove();\n}\n","export default \"ac>com,edu,gov,net,mil,org<ad>nom<ae>co,net,org,sch,ac,gov,mil<aero>airline,airport,accident-investigation,accident-prevention,aerobatic,aeroclub,aerodrome,agents,air-surveillance,air-traffic-control,aircraft,airtraffic,ambulance,association,author,ballooning,broker,caa,cargo,catering,certification,championship,charter,civilaviation,club,conference,consultant,consulting,control,council,crew,design,dgca,educator,emergency,engine,engineer,entertainment,equipment,exchange,express,federation,flight,freight,fuel,gliding,government,groundhandling,group,hanggliding,homebuilt,insurance,journal,journalist,leasing,logistics,magazine,maintenance,marketplace,media,microlight,modelling,navigation,parachuting,paragliding,passenger-association,pilot,press,production,recreation,repbody,res,research,rotorcraft,safety,scientist,services,show,skydiving,software,student,taxi,trader,trading,trainer,union,workinggroup,works<af>gov,com,org,net,edu<ag>com,org,net,co,nom<ai>off,com,net,org<al>com,edu,gov,mil,net,org<am>co,com,commune,net,org<ao>ed,gv,og,co,pb,it<aq,ar>bet,com,coop,edu,gob,gov,int,mil,musica,mutual,net,org,senasa,tur<arpa>e164,in-addr,ip6,iris,uri,urn<as>gov<asia,at>ac>sth<co,gv,or<au>com,net,org,edu>act,catholic,nsw>schools<nt,qld,sa,tas,vic,wa<gov>qld,sa,tas,vic,wa<asn,id,info,conf,oz,act,nsw,nt,qld,sa,tas,vic,wa<aw>com<ax,az>com,net,int,gov,org,edu,info,pp,mil,name,pro,biz<ba>com,edu,gov,mil,net,org<bb>biz,co,com,edu,gov,info,net,org,store,tv<bd>*<be>ac<bf>gov<bg>a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9<bh>com,edu,net,org,gov<bi>co,com,edu,or,org<biz,bj>africa,agro,architectes,assur,avocats,co,com,eco,econo,edu,info,loisirs,money,net,org,ote,resto,restaurant,tourism,univ<bm>com,edu,gov,net,org<bn>com,edu,gov,net,org<bo>com,edu,gob,int,org,net,mil,tv,web,academia,agro,arte,blog,bolivia,ciencia,cooperativa,democracia,deporte,ecologia,economia,empresa,indigena,industria,info,medicina,movimiento,musica,natural,nombre,noticias,patria,politica,profesional,plurinacional,pueblo,revista,salud,tecnologia,tksat,transporte,wiki<br>9guacu,abc,adm,adv,agr,aju,am,anani,aparecida,app,arq,art,ato,b,barueri,belem,bhz,bib,bio,blog,bmd,boavista,bsb,campinagrande,campinas,caxias,cim,cng,cnt,com,contagem,coop,coz,cri,cuiaba,curitiba,def,des,det,dev,ecn,eco,edu,emp,enf,eng,esp,etc,eti,far,feira,flog,floripa,fm,fnd,fortal,fot,foz,fst,g12,geo,ggf,goiania,gov>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<gru,imb,ind,inf,jab,jampa,jdf,joinville,jor,jus,leg,lel,log,londrina,macapa,maceio,manaus,maringa,mat,med,mil,morena,mp,mus,natal,net,niteroi,nom>*<not,ntr,odo,ong,org,osasco,palmas,poa,ppg,pro,psc,psi,pvh,qsl,radio,rec,recife,rep,ribeirao,rio,riobranco,riopreto,salvador,sampa,santamaria,santoandre,saobernardo,saogonca,seg,sjc,slg,slz,sorocaba,srv,taxi,tc,tec,teo,the,tmp,trd,tur,tv,udi,vet,vix,vlog,wiki,zlg<bs>com,net,org,edu,gov<bt>com,edu,gov,net,org<bv,bw>co,org<by>gov,mil,com,of<bz>com,net,org,edu,gov<ca>ab,bc,mb,nb,nf,nl,ns,nt,nu,on,pe,qc,sk,yk,gc<cat,cc,cd>gov<cf,cg,ch,ci>org,or,com,co,edu,ed,ac,net,go,asso,xn--aroport-bya,int,presse,md,gouv<ck>*,!www<cl>co,gob,gov,mil<cm>co,com,gov,net<cn>ac,com,edu,gov,net,org,mil,xn--55qx5d,xn--io0a7i,xn--od0alg,ah,bj,cq,fj,gd,gs,gz,gx,ha,hb,he,hi,hl,hn,jl,js,jx,ln,nm,nx,qh,sc,sd,sh,sn,sx,tj,xj,xz,yn,zj,hk,mo,tw<co>arts,com,edu,firm,gov,info,int,mil,net,nom,org,rec,web<com,coop,cr>ac,co,ed,fi,go,or,sa<cu>com,edu,org,net,gov,inf<cv>com,edu,int,nome,org<cw>com,edu,net,org<cx>gov<cy>ac,biz,com,ekloges,gov,ltd,mil,net,org,press,pro,tm<cz,de,dj,dk,dm>com,net,org,edu,gov<do>art,com,edu,gob,gov,mil,net,org,sld,web<dz>art,asso,com,edu,gov,org,net,pol,soc,tm<ec>com,info,net,fin,k12,med,pro,org,edu,gov,gob,mil<edu,ee>edu,gov,riik,lib,med,com,pri,aip,org,fie<eg>com,edu,eun,gov,mil,name,net,org,sci<er>*<es>com,nom,org,gob,edu<et>com,gov,org,edu,biz,name,info,net<eu,fi>aland<fj>ac,biz,com,gov,info,mil,name,net,org,pro<fk>*<fm>com,edu,net,org<fo,fr>asso,com,gouv,nom,prd,tm,avoues,cci,greta,huissier-justice<ga,gb,gd>edu,gov<ge>com,edu,gov,org,mil,net,pvt<gf,gg>co,net,org<gh>com,edu,gov,org,mil<gi>com,ltd,gov,mod,edu,org<gl>co,com,edu,net,org<gm,gn>ac,com,edu,gov,org,net<gov,gp>com,net,mobi,edu,org,asso<gq,gr>com,edu,net,org,gov<gs,gt>com,edu,gob,ind,mil,net,org<gu>com,edu,gov,guam,info,net,org,web<gw,gy>co,com,edu,gov,net,org<hk>com,edu,gov,idv,net,org,xn--55qx5d,xn--wcvs22d,xn--lcvr32d,xn--mxtq1m,xn--gmqw5a,xn--ciqpn,xn--gmq050i,xn--zf0avx,xn--io0a7i,xn--mk0axi,xn--od0alg,xn--od0aq3b,xn--tn0ag,xn--uc0atv,xn--uc0ay4a<hm,hn>com,edu,org,net,mil,gob<hr>iz,from,name,com<ht>com,shop,firm,info,adult,net,pro,org,med,art,coop,pol,asso,edu,rel,gouv,perso<hu>co,info,org,priv,sport,tm,2000,agrar,bolt,casino,city,erotica,erotika,film,forum,games,hotel,ingatlan,jogasz,konyvelo,lakas,media,news,reklam,sex,shop,suli,szex,tozsde,utazas,video<id>ac,biz,co,desa,go,mil,my,net,or,ponpes,sch,web<ie>gov<il>ac,co,gov,idf,k12,muni,net,org<xn--4dbrk0ce>xn--4dbgdty6c,xn--5dbhl8d,xn--8dbq2a,xn--hebda8b<im>ac,co>ltd,plc<com,net,org,tt,tv<in>5g,6g,ac,ai,am,bihar,biz,business,ca,cn,co,com,coop,cs,delhi,dr,edu,er,firm,gen,gov,gujarat,ind,info,int,internet,io,me,mil,net,nic,org,pg,post,pro,res,travel,tv,uk,up,us<info,int>eu<io>com<iq>gov,edu,mil,com,org,net<ir>ac,co,gov,id,net,org,sch,xn--mgba3a4f16a,xn--mgba3a4fra<is>net,com,edu,gov,org,int<it>gov,edu,abr,abruzzo,aosta-valley,aostavalley,bas,basilicata,cal,calabria,cam,campania,emilia-romagna,emiliaromagna,emr,friuli-v-giulia,friuli-ve-giulia,friuli-vegiulia,friuli-venezia-giulia,friuli-veneziagiulia,friuli-vgiulia,friuliv-giulia,friulive-giulia,friulivegiulia,friulivenezia-giulia,friuliveneziagiulia,friulivgiulia,fvg,laz,lazio,lig,liguria,lom,lombardia,lombardy,lucania,mar,marche,mol,molise,piedmont,piemonte,pmn,pug,puglia,sar,sardegna,sardinia,sic,sicilia,sicily,taa,tos,toscana,trentin-sud-tirol,xn--trentin-sd-tirol-rzb,trentin-sudtirol,xn--trentin-sdtirol-7vb,trentin-sued-tirol,trentin-suedtirol,trentino-a-adige,trentino-aadige,trentino-alto-adige,trentino-altoadige,trentino-s-tirol,trentino-stirol,trentino-sud-tirol,xn--trentino-sd-tirol-c3b,trentino-sudtirol,xn--trentino-sdtirol-szb,trentino-sued-tirol,trentino-suedtirol,trentino,trentinoa-adige,trentinoaadige,trentinoalto-adige,trentinoaltoadige,trentinos-tirol,trentinostirol,trentinosud-tirol,xn--trentinosd-tirol-rzb,trentinosudtirol,xn--trentinosdtirol-7vb,trentinosued-tirol,trentinosuedtirol,trentinsud-tirol,xn--trentinsd-tirol-6vb,trentinsudtirol,xn--trentinsdtirol-nsb,trentinsued-tirol,trentinsuedtirol,tuscany,umb,umbria,val-d-aosta,val-daosta,vald-aosta,valdaosta,valle-aosta,valle-d-aosta,valle-daosta,valleaosta,valled-aosta,valledaosta,vallee-aoste,xn--valle-aoste-ebb,vallee-d-aoste,xn--valle-d-aoste-ehb,valleeaoste,xn--valleaoste-e7a,valleedaoste,xn--valledaoste-ebb,vao,vda,ven,veneto,ag,agrigento,al,alessandria,alto-adige,altoadige,an,ancona,andria-barletta-trani,andria-trani-barletta,andriabarlettatrani,andriatranibarletta,ao,aosta,aoste,ap,aq,aquila,ar,arezzo,ascoli-piceno,ascolipiceno,asti,at,av,avellino,ba,balsan-sudtirol,xn--balsan-sdtirol-nsb,balsan-suedtirol,balsan,bari,barletta-trani-andria,barlettatraniandria,belluno,benevento,bergamo,bg,bi,biella,bl,bn,bo,bologna,bolzano-altoadige,bolzano,bozen-sudtirol,xn--bozen-sdtirol-2ob,bozen-suedtirol,bozen,br,brescia,brindisi,bs,bt,bulsan-sudtirol,xn--bulsan-sdtirol-nsb,bulsan-suedtirol,bulsan,bz,ca,cagliari,caltanissetta,campidano-medio,campidanomedio,campobasso,carbonia-iglesias,carboniaiglesias,carrara-massa,carraramassa,caserta,catania,catanzaro,cb,ce,cesena-forli,xn--cesena-forl-mcb,cesenaforli,xn--cesenaforl-i8a,ch,chieti,ci,cl,cn,co,como,cosenza,cr,cremona,crotone,cs,ct,cuneo,cz,dell-ogliastra,dellogliastra,en,enna,fc,fe,fermo,ferrara,fg,fi,firenze,florence,fm,foggia,forli-cesena,xn--forl-cesena-fcb,forlicesena,xn--forlcesena-c8a,fr,frosinone,ge,genoa,genova,go,gorizia,gr,grosseto,iglesias-carbonia,iglesiascarbonia,im,imperia,is,isernia,kr,la-spezia,laquila,laspezia,latina,lc,le,lecce,lecco,li,livorno,lo,lodi,lt,lu,lucca,macerata,mantova,massa-carrara,massacarrara,matera,mb,mc,me,medio-campidano,mediocampidano,messina,mi,milan,milano,mn,mo,modena,monza-brianza,monza-e-della-brianza,monza,monzabrianza,monzaebrianza,monzaedellabrianza,ms,mt,na,naples,napoli,no,novara,nu,nuoro,og,ogliastra,olbia-tempio,olbiatempio,or,oristano,ot,pa,padova,padua,palermo,parma,pavia,pc,pd,pe,perugia,pesaro-urbino,pesarourbino,pescara,pg,pi,piacenza,pisa,pistoia,pn,po,pordenone,potenza,pr,prato,pt,pu,pv,pz,ra,ragusa,ravenna,rc,re,reggio-calabria,reggio-emilia,reggiocalabria,reggioemilia,rg,ri,rieti,rimini,rm,rn,ro,roma,rome,rovigo,sa,salerno,sassari,savona,si,siena,siracusa,so,sondrio,sp,sr,ss,suedtirol,xn--sdtirol-n2a,sv,ta,taranto,te,tempio-olbia,tempioolbia,teramo,terni,tn,to,torino,tp,tr,trani-andria-barletta,trani-barletta-andria,traniandriabarletta,tranibarlettaandria,trapani,trento,treviso,trieste,ts,turin,tv,ud,udine,urbino-pesaro,urbinopesaro,va,varese,vb,vc,ve,venezia,venice,verbania,vercelli,verona,vi,vibo-valentia,vibovalentia,vicenza,viterbo,vr,vs,vt,vv<je>co,net,org<jm>*<jo>com,org,net,edu,sch,gov,mil,name<jobs,jp>ac,ad,co,ed,go,gr,lg,ne,or,aichi>aisai,ama,anjo,asuke,chiryu,chita,fuso,gamagori,handa,hazu,hekinan,higashiura,ichinomiya,inazawa,inuyama,isshiki,iwakura,kanie,kariya,kasugai,kira,kiyosu,komaki,konan,kota,mihama,miyoshi,nishio,nisshin,obu,oguchi,oharu,okazaki,owariasahi,seto,shikatsu,shinshiro,shitara,tahara,takahama,tobishima,toei,togo,tokai,tokoname,toyoake,toyohashi,toyokawa,toyone,toyota,tsushima,yatomi<akita>akita,daisen,fujisato,gojome,hachirogata,happou,higashinaruse,honjo,honjyo,ikawa,kamikoani,kamioka,katagami,kazuno,kitaakita,kosaka,kyowa,misato,mitane,moriyoshi,nikaho,noshiro,odate,oga,ogata,semboku,yokote,yurihonjo<aomori>aomori,gonohe,hachinohe,hashikami,hiranai,hirosaki,itayanagi,kuroishi,misawa,mutsu,nakadomari,noheji,oirase,owani,rokunohe,sannohe,shichinohe,shingo,takko,towada,tsugaru,tsuruta<chiba>abiko,asahi,chonan,chosei,choshi,chuo,funabashi,futtsu,hanamigawa,ichihara,ichikawa,ichinomiya,inzai,isumi,kamagaya,kamogawa,kashiwa,katori,katsuura,kimitsu,kisarazu,kozaki,kujukuri,kyonan,matsudo,midori,mihama,minamiboso,mobara,mutsuzawa,nagara,nagareyama,narashino,narita,noda,oamishirasato,omigawa,onjuku,otaki,sakae,sakura,shimofusa,shirako,shiroi,shisui,sodegaura,sosa,tako,tateyama,togane,tohnosho,tomisato,urayasu,yachimata,yachiyo,yokaichiba,yokoshibahikari,yotsukaido<ehime>ainan,honai,ikata,imabari,iyo,kamijima,kihoku,kumakogen,masaki,matsuno,matsuyama,namikata,niihama,ozu,saijo,seiyo,shikokuchuo,tobe,toon,uchiko,uwajima,yawatahama<fukui>echizen,eiheiji,fukui,ikeda,katsuyama,mihama,minamiechizen,obama,ohi,ono,sabae,sakai,takahama,tsuruga,wakasa<fukuoka>ashiya,buzen,chikugo,chikuho,chikujo,chikushino,chikuzen,chuo,dazaifu,fukuchi,hakata,higashi,hirokawa,hisayama,iizuka,inatsuki,kaho,kasuga,kasuya,kawara,keisen,koga,kurate,kurogi,kurume,minami,miyako,miyama,miyawaka,mizumaki,munakata,nakagawa,nakama,nishi,nogata,ogori,okagaki,okawa,oki,omuta,onga,onojo,oto,saigawa,sasaguri,shingu,shinyoshitomi,shonai,soeda,sue,tachiarai,tagawa,takata,toho,toyotsu,tsuiki,ukiha,umi,usui,yamada,yame,yanagawa,yukuhashi<fukushima>aizubange,aizumisato,aizuwakamatsu,asakawa,bandai,date,fukushima,furudono,futaba,hanawa,higashi,hirata,hirono,iitate,inawashiro,ishikawa,iwaki,izumizaki,kagamiishi,kaneyama,kawamata,kitakata,kitashiobara,koori,koriyama,kunimi,miharu,mishima,namie,nango,nishiaizu,nishigo,okuma,omotego,ono,otama,samegawa,shimogo,shirakawa,showa,soma,sukagawa,taishin,tamakawa,tanagura,tenei,yabuki,yamato,yamatsuri,yanaizu,yugawa<gifu>anpachi,ena,gifu,ginan,godo,gujo,hashima,hichiso,hida,higashishirakawa,ibigawa,ikeda,kakamigahara,kani,kasahara,kasamatsu,kawaue,kitagata,mino,minokamo,mitake,mizunami,motosu,nakatsugawa,ogaki,sakahogi,seki,sekigahara,shirakawa,tajimi,takayama,tarui,toki,tomika,wanouchi,yamagata,yaotsu,yoro<gunma>annaka,chiyoda,fujioka,higashiagatsuma,isesaki,itakura,kanna,kanra,katashina,kawaba,kiryu,kusatsu,maebashi,meiwa,midori,minakami,naganohara,nakanojo,nanmoku,numata,oizumi,ora,ota,shibukawa,shimonita,shinto,showa,takasaki,takayama,tamamura,tatebayashi,tomioka,tsukiyono,tsumagoi,ueno,yoshioka<hiroshima>asaminami,daiwa,etajima,fuchu,fukuyama,hatsukaichi,higashihiroshima,hongo,jinsekikogen,kaita,kui,kumano,kure,mihara,miyoshi,naka,onomichi,osakikamijima,otake,saka,sera,seranishi,shinichi,shobara,takehara<hokkaido>abashiri,abira,aibetsu,akabira,akkeshi,asahikawa,ashibetsu,ashoro,assabu,atsuma,bibai,biei,bifuka,bihoro,biratori,chippubetsu,chitose,date,ebetsu,embetsu,eniwa,erimo,esan,esashi,fukagawa,fukushima,furano,furubira,haboro,hakodate,hamatonbetsu,hidaka,higashikagura,higashikawa,hiroo,hokuryu,hokuto,honbetsu,horokanai,horonobe,ikeda,imakane,ishikari,iwamizawa,iwanai,kamifurano,kamikawa,kamishihoro,kamisunagawa,kamoenai,kayabe,kembuchi,kikonai,kimobetsu,kitahiroshima,kitami,kiyosato,koshimizu,kunneppu,kuriyama,kuromatsunai,kushiro,kutchan,kyowa,mashike,matsumae,mikasa,minamifurano,mombetsu,moseushi,mukawa,muroran,naie,nakagawa,nakasatsunai,nakatombetsu,nanae,nanporo,nayoro,nemuro,niikappu,niki,nishiokoppe,noboribetsu,numata,obihiro,obira,oketo,okoppe,otaru,otobe,otofuke,otoineppu,oumu,ozora,pippu,rankoshi,rebun,rikubetsu,rishiri,rishirifuji,saroma,sarufutsu,shakotan,shari,shibecha,shibetsu,shikabe,shikaoi,shimamaki,shimizu,shimokawa,shinshinotsu,shintoku,shiranuka,shiraoi,shiriuchi,sobetsu,sunagawa,taiki,takasu,takikawa,takinoue,teshikaga,tobetsu,tohma,tomakomai,tomari,toya,toyako,toyotomi,toyoura,tsubetsu,tsukigata,urakawa,urausu,uryu,utashinai,wakkanai,wassamu,yakumo,yoichi<hyogo>aioi,akashi,ako,amagasaki,aogaki,asago,ashiya,awaji,fukusaki,goshiki,harima,himeji,ichikawa,inagawa,itami,kakogawa,kamigori,kamikawa,kasai,kasuga,kawanishi,miki,minamiawaji,nishinomiya,nishiwaki,ono,sanda,sannan,sasayama,sayo,shingu,shinonsen,shiso,sumoto,taishi,taka,takarazuka,takasago,takino,tamba,tatsuno,toyooka,yabu,yashiro,yoka,yokawa<ibaraki>ami,asahi,bando,chikusei,daigo,fujishiro,hitachi,hitachinaka,hitachiomiya,hitachiota,ibaraki,ina,inashiki,itako,iwama,joso,kamisu,kasama,kashima,kasumigaura,koga,miho,mito,moriya,naka,namegata,oarai,ogawa,omitama,ryugasaki,sakai,sakuragawa,shimodate,shimotsuma,shirosato,sowa,suifu,takahagi,tamatsukuri,tokai,tomobe,tone,toride,tsuchiura,tsukuba,uchihara,ushiku,yachiyo,yamagata,yawara,yuki<ishikawa>anamizu,hakui,hakusan,kaga,kahoku,kanazawa,kawakita,komatsu,nakanoto,nanao,nomi,nonoichi,noto,shika,suzu,tsubata,tsurugi,uchinada,wajima<iwate>fudai,fujisawa,hanamaki,hiraizumi,hirono,ichinohe,ichinoseki,iwaizumi,iwate,joboji,kamaishi,kanegasaki,karumai,kawai,kitakami,kuji,kunohe,kuzumaki,miyako,mizusawa,morioka,ninohe,noda,ofunato,oshu,otsuchi,rikuzentakata,shiwa,shizukuishi,sumita,tanohata,tono,yahaba,yamada<kagawa>ayagawa,higashikagawa,kanonji,kotohira,manno,marugame,mitoyo,naoshima,sanuki,tadotsu,takamatsu,tonosho,uchinomi,utazu,zentsuji<kagoshima>akune,amami,hioki,isa,isen,izumi,kagoshima,kanoya,kawanabe,kinko,kouyama,makurazaki,matsumoto,minamitane,nakatane,nishinoomote,satsumasendai,soo,tarumizu,yusui<kanagawa>aikawa,atsugi,ayase,chigasaki,ebina,fujisawa,hadano,hakone,hiratsuka,isehara,kaisei,kamakura,kiyokawa,matsuda,minamiashigara,miura,nakai,ninomiya,odawara,oi,oiso,sagamihara,samukawa,tsukui,yamakita,yamato,yokosuka,yugawara,zama,zushi<kochi>aki,geisei,hidaka,higashitsuno,ino,kagami,kami,kitagawa,kochi,mihara,motoyama,muroto,nahari,nakamura,nankoku,nishitosa,niyodogawa,ochi,okawa,otoyo,otsuki,sakawa,sukumo,susaki,tosa,tosashimizu,toyo,tsuno,umaji,yasuda,yusuhara<kumamoto>amakusa,arao,aso,choyo,gyokuto,kamiamakusa,kikuchi,kumamoto,mashiki,mifune,minamata,minamioguni,nagasu,nishihara,oguni,ozu,sumoto,takamori,uki,uto,yamaga,yamato,yatsushiro<kyoto>ayabe,fukuchiyama,higashiyama,ide,ine,joyo,kameoka,kamo,kita,kizu,kumiyama,kyotamba,kyotanabe,kyotango,maizuru,minami,minamiyamashiro,miyazu,muko,nagaokakyo,nakagyo,nantan,oyamazaki,sakyo,seika,tanabe,uji,ujitawara,wazuka,yamashina,yawata<mie>asahi,inabe,ise,kameyama,kawagoe,kiho,kisosaki,kiwa,komono,kumano,kuwana,matsusaka,meiwa,mihama,minamiise,misugi,miyama,nabari,shima,suzuka,tado,taiki,taki,tamaki,toba,tsu,udono,ureshino,watarai,yokkaichi<miyagi>furukawa,higashimatsushima,ishinomaki,iwanuma,kakuda,kami,kawasaki,marumori,matsushima,minamisanriku,misato,murata,natori,ogawara,ohira,onagawa,osaki,rifu,semine,shibata,shichikashuku,shikama,shiogama,shiroishi,tagajo,taiwa,tome,tomiya,wakuya,watari,yamamoto,zao<miyazaki>aya,ebino,gokase,hyuga,kadogawa,kawaminami,kijo,kitagawa,kitakata,kitaura,kobayashi,kunitomi,kushima,mimata,miyakonojo,miyazaki,morotsuka,nichinan,nishimera,nobeoka,saito,shiiba,shintomi,takaharu,takanabe,takazaki,tsuno<nagano>achi,agematsu,anan,aoki,asahi,azumino,chikuhoku,chikuma,chino,fujimi,hakuba,hara,hiraya,iida,iijima,iiyama,iizuna,ikeda,ikusaka,ina,karuizawa,kawakami,kiso,kisofukushima,kitaaiki,komagane,komoro,matsukawa,matsumoto,miasa,minamiaiki,minamimaki,minamiminowa,minowa,miyada,miyota,mochizuki,nagano,nagawa,nagiso,nakagawa,nakano,nozawaonsen,obuse,ogawa,okaya,omachi,omi,ookuwa,ooshika,otaki,otari,sakae,sakaki,saku,sakuho,shimosuwa,shinanomachi,shiojiri,suwa,suzaka,takagi,takamori,takayama,tateshina,tatsuno,togakushi,togura,tomi,ueda,wada,yamagata,yamanouchi,yasaka,yasuoka<nagasaki>chijiwa,futsu,goto,hasami,hirado,iki,isahaya,kawatana,kuchinotsu,matsuura,nagasaki,obama,omura,oseto,saikai,sasebo,seihi,shimabara,shinkamigoto,togitsu,tsushima,unzen<nara>ando,gose,heguri,higashiyoshino,ikaruga,ikoma,kamikitayama,kanmaki,kashiba,kashihara,katsuragi,kawai,kawakami,kawanishi,koryo,kurotaki,mitsue,miyake,nara,nosegawa,oji,ouda,oyodo,sakurai,sango,shimoichi,shimokitayama,shinjo,soni,takatori,tawaramoto,tenkawa,tenri,uda,yamatokoriyama,yamatotakada,yamazoe,yoshino<niigata>aga,agano,gosen,itoigawa,izumozaki,joetsu,kamo,kariwa,kashiwazaki,minamiuonuma,mitsuke,muika,murakami,myoko,nagaoka,niigata,ojiya,omi,sado,sanjo,seiro,seirou,sekikawa,shibata,tagami,tainai,tochio,tokamachi,tsubame,tsunan,uonuma,yahiko,yoita,yuzawa<oita>beppu,bungoono,bungotakada,hasama,hiji,himeshima,hita,kamitsue,kokonoe,kuju,kunisaki,kusu,oita,saiki,taketa,tsukumi,usa,usuki,yufu<okayama>akaiwa,asakuchi,bizen,hayashima,ibara,kagamino,kasaoka,kibichuo,kumenan,kurashiki,maniwa,misaki,nagi,niimi,nishiawakura,okayama,satosho,setouchi,shinjo,shoo,soja,takahashi,tamano,tsuyama,wake,yakage<okinawa>aguni,ginowan,ginoza,gushikami,haebaru,higashi,hirara,iheya,ishigaki,ishikawa,itoman,izena,kadena,kin,kitadaito,kitanakagusuku,kumejima,kunigami,minamidaito,motobu,nago,naha,nakagusuku,nakijin,nanjo,nishihara,ogimi,okinawa,onna,shimoji,taketomi,tarama,tokashiki,tomigusuku,tonaki,urasoe,uruma,yaese,yomitan,yonabaru,yonaguni,zamami<osaka>abeno,chihayaakasaka,chuo,daito,fujiidera,habikino,hannan,higashiosaka,higashisumiyoshi,higashiyodogawa,hirakata,ibaraki,ikeda,izumi,izumiotsu,izumisano,kadoma,kaizuka,kanan,kashiwara,katano,kawachinagano,kishiwada,kita,kumatori,matsubara,minato,minoh,misaki,moriguchi,neyagawa,nishi,nose,osakasayama,sakai,sayama,sennan,settsu,shijonawate,shimamoto,suita,tadaoka,taishi,tajiri,takaishi,takatsuki,tondabayashi,toyonaka,toyono,yao<saga>ariake,arita,fukudomi,genkai,hamatama,hizen,imari,kamimine,kanzaki,karatsu,kashima,kitagata,kitahata,kiyama,kouhoku,kyuragi,nishiarita,ogi,omachi,ouchi,saga,shiroishi,taku,tara,tosu,yoshinogari<saitama>arakawa,asaka,chichibu,fujimi,fujimino,fukaya,hanno,hanyu,hasuda,hatogaya,hatoyama,hidaka,higashichichibu,higashimatsuyama,honjo,ina,iruma,iwatsuki,kamiizumi,kamikawa,kamisato,kasukabe,kawagoe,kawaguchi,kawajima,kazo,kitamoto,koshigaya,kounosu,kuki,kumagaya,matsubushi,minano,misato,miyashiro,miyoshi,moroyama,nagatoro,namegawa,niiza,ogano,ogawa,ogose,okegawa,omiya,otaki,ranzan,ryokami,saitama,sakado,satte,sayama,shiki,shiraoka,soka,sugito,toda,tokigawa,tokorozawa,tsurugashima,urawa,warabi,yashio,yokoze,yono,yorii,yoshida,yoshikawa,yoshimi<shiga>aisho,gamo,higashiomi,hikone,koka,konan,kosei,koto,kusatsu,maibara,moriyama,nagahama,nishiazai,notogawa,omihachiman,otsu,ritto,ryuoh,takashima,takatsuki,torahime,toyosato,yasu<shimane>akagi,ama,gotsu,hamada,higashiizumo,hikawa,hikimi,izumo,kakinoki,masuda,matsue,misato,nishinoshima,ohda,okinoshima,okuizumo,shimane,tamayu,tsuwano,unnan,yakumo,yasugi,yatsuka<shizuoka>arai,atami,fuji,fujieda,fujikawa,fujinomiya,fukuroi,gotemba,haibara,hamamatsu,higashiizu,ito,iwata,izu,izunokuni,kakegawa,kannami,kawanehon,kawazu,kikugawa,kosai,makinohara,matsuzaki,minamiizu,mishima,morimachi,nishiizu,numazu,omaezaki,shimada,shimizu,shimoda,shizuoka,susono,yaizu,yoshida<tochigi>ashikaga,bato,haga,ichikai,iwafune,kaminokawa,kanuma,karasuyama,kuroiso,mashiko,mibu,moka,motegi,nasu,nasushiobara,nikko,nishikata,nogi,ohira,ohtawara,oyama,sakura,sano,shimotsuke,shioya,takanezawa,tochigi,tsuga,ujiie,utsunomiya,yaita<tokushima>aizumi,anan,ichiba,itano,kainan,komatsushima,matsushige,mima,minami,miyoshi,mugi,nakagawa,naruto,sanagochi,shishikui,tokushima,wajiki<tokyo>adachi,akiruno,akishima,aogashima,arakawa,bunkyo,chiyoda,chofu,chuo,edogawa,fuchu,fussa,hachijo,hachioji,hamura,higashikurume,higashimurayama,higashiyamato,hino,hinode,hinohara,inagi,itabashi,katsushika,kita,kiyose,kodaira,koganei,kokubunji,komae,koto,kouzushima,kunitachi,machida,meguro,minato,mitaka,mizuho,musashimurayama,musashino,nakano,nerima,ogasawara,okutama,ome,oshima,ota,setagaya,shibuya,shinagawa,shinjuku,suginami,sumida,tachikawa,taito,tama,toshima<tottori>chizu,hino,kawahara,koge,kotoura,misasa,nanbu,nichinan,sakaiminato,tottori,wakasa,yazu,yonago<toyama>asahi,fuchu,fukumitsu,funahashi,himi,imizu,inami,johana,kamiichi,kurobe,nakaniikawa,namerikawa,nanto,nyuzen,oyabe,taira,takaoka,tateyama,toga,tonami,toyama,unazuki,uozu,yamada<wakayama>arida,aridagawa,gobo,hashimoto,hidaka,hirogawa,inami,iwade,kainan,kamitonda,katsuragi,kimino,kinokawa,kitayama,koya,koza,kozagawa,kudoyama,kushimoto,mihama,misato,nachikatsuura,shingu,shirahama,taiji,tanabe,wakayama,yuasa,yura<yamagata>asahi,funagata,higashine,iide,kahoku,kaminoyama,kaneyama,kawanishi,mamurogawa,mikawa,murayama,nagai,nakayama,nanyo,nishikawa,obanazawa,oe,oguni,ohkura,oishida,sagae,sakata,sakegawa,shinjo,shirataka,shonai,takahata,tendo,tozawa,tsuruoka,yamagata,yamanobe,yonezawa,yuza<yamaguchi>abu,hagi,hikari,hofu,iwakuni,kudamatsu,mitou,nagato,oshima,shimonoseki,shunan,tabuse,tokuyama,toyota,ube,yuu<yamanashi>chuo,doshi,fuefuki,fujikawa,fujikawaguchiko,fujiyoshida,hayakawa,hokuto,ichikawamisato,kai,kofu,koshu,kosuge,minami-alps,minobu,nakamichi,nanbu,narusawa,nirasaki,nishikatsura,oshino,otsuki,showa,tabayama,tsuru,uenohara,yamanakako,yamanashi<xn--4pvxs,xn--vgu402c,xn--c3s14m,xn--f6qx53a,xn--8pvr4u,xn--uist22h,xn--djrs72d6uy,xn--mkru45i,xn--0trq7p7nn,xn--8ltr62k,xn--2m4a15e,xn--efvn9s,xn--32vp30h,xn--4it797k,xn--1lqs71d,xn--5rtp49c,xn--5js045d,xn--ehqz56n,xn--1lqs03n,xn--qqqt11m,xn--kbrq7o,xn--pssu33l,xn--ntsq17g,xn--uisz3g,xn--6btw5a,xn--1ctwo,xn--6orx2r,xn--rht61e,xn--rht27z,xn--djty4k,xn--nit225k,xn--rht3d,xn--klty5x,xn--kltx9a,xn--kltp7d,xn--uuwu58a,xn--zbx025d,xn--ntso0iqx3a,xn--elqq16h,xn--4it168d,xn--klt787d,xn--rny31h,xn--7t0a264c,xn--5rtq34k,xn--k7yn95e,xn--tor131o,xn--d5qv7z876c,kawasaki>*,!city<kitakyushu>*,!city<kobe>*,!city<nagoya>*,!city<sapporo>*,!city<sendai>*,!city<yokohama>*,!city<<ke>ac,co,go,info,me,mobi,ne,or,sc<kg>org,net,com,edu,gov,mil<kh>*<ki>edu,biz,net,org,gov,info,com<km>org,nom,gov,prd,tm,edu,mil,ass,com,coop,asso,presse,medecin,notaires,pharmaciens,veterinaire,gouv<kn>net,org,edu,gov<kp>com,edu,gov,org,rep,tra<kr>ac,co,es,go,hs,kg,mil,ms,ne,or,pe,re,sc,busan,chungbuk,chungnam,daegu,daejeon,gangwon,gwangju,gyeongbuk,gyeonggi,gyeongnam,incheon,jeju,jeonbuk,jeonnam,seoul,ulsan<kw>com,edu,emb,gov,ind,net,org<ky>com,edu,net,org<kz>org,edu,net,gov,mil,com<la>int,net,info,edu,gov,per,com,org<lb>com,edu,gov,net,org<lc>com,net,co,org,edu,gov<li,lk>gov,sch,net,int,com,org,edu,ngo,soc,web,ltd,assn,grp,hotel,ac<lr>com,edu,gov,org,net<ls>ac,biz,co,edu,gov,info,net,org,sc<lt>gov<lu,lv>com,edu,gov,org,mil,id,net,asn,conf<ly>com,net,gov,plc,edu,sch,med,org,id<ma>co,net,gov,org,ac,press<mc>tm,asso<md,me>co,net,org,edu,ac,gov,its,priv<mg>org,nom,gov,prd,tm,edu,mil,com,co<mh,mil,mk>com,org,net,edu,gov,inf,name<ml>com,edu,gouv,gov,net,org,presse<mm>*<mn>gov,edu,org<mo>com,net,org,edu,gov<mobi,mp,mq,mr>gov<ms>com,edu,gov,net,org<mt>com,edu,net,org<mu>com,net,org,gov,ac,co,or<museum,mv>aero,biz,com,coop,edu,gov,info,int,mil,museum,name,net,org,pro<mw>ac,biz,co,com,coop,edu,gov,int,museum,net,org<mx>com,org,gob,edu,net<my>biz,com,edu,gov,mil,name,net,org<mz>ac,adv,co,edu,gov,mil,net,org<na>info,pro,name,school,or,dr,us,mx,ca,in,cc,tv,ws,mobi,co,com,org<name,nc>asso,nom<ne,net,nf>com,net,per,rec,web,arts,firm,info,other,store<ng>com,edu,gov,i,mil,mobi,name,net,org,sch<ni>ac,biz,co,com,edu,gob,in,info,int,mil,net,nom,org,web<nl,no>fhs,vgs,fylkesbibl,folkebibl,museum,idrett,priv,mil,stat,dep,kommune,herad,aa>gs<ah>gs<bu>gs<fm>gs<hl>gs<hm>gs<jan-mayen>gs<mr>gs<nl>gs<nt>gs<of>gs<ol>gs<oslo>gs<rl>gs<sf>gs<st>gs<svalbard>gs<tm>gs<tr>gs<va>gs<vf>gs<akrehamn,xn--krehamn-dxa,algard,xn--lgrd-poac,arna,brumunddal,bryne,bronnoysund,xn--brnnysund-m8ac,drobak,xn--drbak-wua,egersund,fetsund,floro,xn--flor-jra,fredrikstad,hokksund,honefoss,xn--hnefoss-q1a,jessheim,jorpeland,xn--jrpeland-54a,kirkenes,kopervik,krokstadelva,langevag,xn--langevg-jxa,leirvik,mjondalen,xn--mjndalen-64a,mo-i-rana,mosjoen,xn--mosjen-eya,nesoddtangen,orkanger,osoyro,xn--osyro-wua,raholt,xn--rholt-mra,sandnessjoen,xn--sandnessjen-ogb,skedsmokorset,slattum,spjelkavik,stathelle,stavern,stjordalshalsen,xn--stjrdalshalsen-sqb,tananger,tranby,vossevangen,afjord,xn--fjord-lra,agdenes,al,xn--l-1fa,alesund,xn--lesund-hua,alstahaug,alta,xn--lt-liac,alaheadju,xn--laheadju-7ya,alvdal,amli,xn--mli-tla,amot,xn--mot-tla,andebu,andoy,xn--andy-ira,andasuolo,ardal,xn--rdal-poa,aremark,arendal,xn--s-1fa,aseral,xn--seral-lra,asker,askim,askvoll,askoy,xn--asky-ira,asnes,xn--snes-poa,audnedaln,aukra,aure,aurland,aurskog-holand,xn--aurskog-hland-jnb,austevoll,austrheim,averoy,xn--avery-yua,balestrand,ballangen,balat,xn--blt-elab,balsfjord,bahccavuotna,xn--bhccavuotna-k7a,bamble,bardu,beardu,beiarn,bajddar,xn--bjddar-pta,baidar,xn--bidr-5nac,berg,bergen,berlevag,xn--berlevg-jxa,bearalvahki,xn--bearalvhki-y4a,bindal,birkenes,bjarkoy,xn--bjarky-fya,bjerkreim,bjugn,bodo,xn--bod-2na,badaddja,xn--bdddj-mrabd,budejju,bokn,bremanger,bronnoy,xn--brnny-wuac,bygland,bykle,barum,xn--brum-voa,telemark>bo,xn--b-5ga<nordland>bo,xn--b-5ga,heroy,xn--hery-ira<bievat,xn--bievt-0qa,bomlo,xn--bmlo-gra,batsfjord,xn--btsfjord-9za,bahcavuotna,xn--bhcavuotna-s4a,dovre,drammen,drangedal,dyroy,xn--dyry-ira,donna,xn--dnna-gra,eid,eidfjord,eidsberg,eidskog,eidsvoll,eigersund,elverum,enebakk,engerdal,etne,etnedal,evenes,evenassi,xn--eveni-0qa01ga,evje-og-hornnes,farsund,fauske,fuossko,fuoisku,fedje,fet,finnoy,xn--finny-yua,fitjar,fjaler,fjell,flakstad,flatanger,flekkefjord,flesberg,flora,fla,xn--fl-zia,folldal,forsand,fosnes,frei,frogn,froland,frosta,frana,xn--frna-woa,froya,xn--frya-hra,fusa,fyresdal,forde,xn--frde-gra,gamvik,gangaviika,xn--ggaviika-8ya47h,gaular,gausdal,gildeskal,xn--gildeskl-g0a,giske,gjemnes,gjerdrum,gjerstad,gjesdal,gjovik,xn--gjvik-wua,gloppen,gol,gran,grane,granvin,gratangen,grimstad,grong,kraanghke,xn--kranghke-b0a,grue,gulen,hadsel,halden,halsa,hamar,hamaroy,habmer,xn--hbmer-xqa,hapmir,xn--hpmir-xqa,hammerfest,hammarfeasta,xn--hmmrfeasta-s4ac,haram,hareid,harstad,hasvik,aknoluokta,xn--koluokta-7ya57h,hattfjelldal,aarborte,haugesund,hemne,hemnes,hemsedal,more-og-romsdal>heroy,sande<xn--mre-og-romsdal-qqb>xn--hery-ira,sande<hitra,hjartdal,hjelmeland,hobol,xn--hobl-ira,hof,hol,hole,holmestrand,holtalen,xn--holtlen-hxa,hornindal,horten,hurdal,hurum,hvaler,hyllestad,hagebostad,xn--hgebostad-g3a,hoyanger,xn--hyanger-q1a,hoylandet,xn--hylandet-54a,ha,xn--h-2fa,ibestad,inderoy,xn--indery-fya,iveland,jevnaker,jondal,jolster,xn--jlster-bya,karasjok,karasjohka,xn--krjohka-hwab49j,karlsoy,galsa,xn--gls-elac,karmoy,xn--karmy-yua,kautokeino,guovdageaidnu,klepp,klabu,xn--klbu-woa,kongsberg,kongsvinger,kragero,xn--krager-gya,kristiansand,kristiansund,krodsherad,xn--krdsherad-m8a,kvalsund,rahkkeravju,xn--rhkkervju-01af,kvam,kvinesdal,kvinnherad,kviteseid,kvitsoy,xn--kvitsy-fya,kvafjord,xn--kvfjord-nxa,giehtavuoatna,kvanangen,xn--kvnangen-k0a,navuotna,xn--nvuotna-hwa,kafjord,xn--kfjord-iua,gaivuotna,xn--givuotna-8ya,larvik,lavangen,lavagis,loabat,xn--loabt-0qa,lebesby,davvesiida,leikanger,leirfjord,leka,leksvik,lenvik,leangaviika,xn--leagaviika-52b,lesja,levanger,lier,lierne,lillehammer,lillesand,lindesnes,lindas,xn--linds-pra,lom,loppa,lahppi,xn--lhppi-xqa,lund,lunner,luroy,xn--lury-ira,luster,lyngdal,lyngen,ivgu,lardal,lerdal,xn--lrdal-sra,lodingen,xn--ldingen-q1a,lorenskog,xn--lrenskog-54a,loten,xn--lten-gra,malvik,masoy,xn--msy-ula0h,muosat,xn--muost-0qa,mandal,marker,marnardal,masfjorden,meland,meldal,melhus,meloy,xn--mely-ira,meraker,xn--merker-kua,moareke,xn--moreke-jua,midsund,midtre-gauldal,modalen,modum,molde,moskenes,moss,mosvik,malselv,xn--mlselv-iua,malatvuopmi,xn--mlatvuopmi-s4a,namdalseid,aejrie,namsos,namsskogan,naamesjevuemie,xn--nmesjevuemie-tcba,laakesvuemie,nannestad,narvik,narviika,naustdal,nedre-eiker,akershus>nes<buskerud>nes<nesna,nesodden,nesseby,unjarga,xn--unjrga-rta,nesset,nissedal,nittedal,nord-aurdal,nord-fron,nord-odal,norddal,nordkapp,davvenjarga,xn--davvenjrga-y4a,nordre-land,nordreisa,raisa,xn--risa-5na,nore-og-uvdal,notodden,naroy,xn--nry-yla5g,notteroy,xn--nttery-byae,odda,oksnes,xn--ksnes-uua,oppdal,oppegard,xn--oppegrd-ixa,orkdal,orland,xn--rland-uua,orskog,xn--rskog-uua,orsta,xn--rsta-fra,hedmark>os,valer,xn--vler-qoa<hordaland>os<osen,osteroy,xn--ostery-fya,ostre-toten,xn--stre-toten-zcb,overhalla,ovre-eiker,xn--vre-eiker-k8a,oyer,xn--yer-zna,oygarden,xn--ygarden-p1a,oystre-slidre,xn--ystre-slidre-ujb,porsanger,porsangu,xn--porsgu-sta26f,porsgrunn,radoy,xn--rady-ira,rakkestad,rana,ruovat,randaberg,rauma,rendalen,rennebu,rennesoy,xn--rennesy-v1a,rindal,ringebu,ringerike,ringsaker,rissa,risor,xn--risr-ira,roan,rollag,rygge,ralingen,xn--rlingen-mxa,rodoy,xn--rdy-0nab,romskog,xn--rmskog-bya,roros,xn--rros-gra,rost,xn--rst-0na,royken,xn--ryken-vua,royrvik,xn--ryrvik-bya,rade,xn--rde-ula,salangen,siellak,saltdal,salat,xn--slt-elab,xn--slat-5na,samnanger,vestfold>sande<sandefjord,sandnes,sandoy,xn--sandy-yua,sarpsborg,sauda,sauherad,sel,selbu,selje,seljord,sigdal,siljan,sirdal,skaun,skedsmo,ski,skien,skiptvet,skjervoy,xn--skjervy-v1a,skierva,xn--skierv-uta,skjak,xn--skjk-soa,skodje,skanland,xn--sknland-fxa,skanit,xn--sknit-yqa,smola,xn--smla-hra,snillfjord,snasa,xn--snsa-roa,snoasa,snaase,xn--snase-nra,sogndal,sokndal,sola,solund,songdalen,sortland,spydeberg,stange,stavanger,steigen,steinkjer,stjordal,xn--stjrdal-s1a,stokke,stor-elvdal,stord,stordal,storfjord,omasvuotna,strand,stranda,stryn,sula,suldal,sund,sunndal,surnadal,sveio,svelvik,sykkylven,sogne,xn--sgne-gra,somna,xn--smna-gra,sondre-land,xn--sndre-land-0cb,sor-aurdal,xn--sr-aurdal-l8a,sor-fron,xn--sr-fron-q1a,sor-odal,xn--sr-odal-q1a,sor-varanger,xn--sr-varanger-ggb,matta-varjjat,xn--mtta-vrjjat-k7af,sorfold,xn--srfold-bya,sorreisa,xn--srreisa-q1a,sorum,xn--srum-gra,tana,deatnu,time,tingvoll,tinn,tjeldsund,dielddanuorri,tjome,xn--tjme-hra,tokke,tolga,torsken,tranoy,xn--trany-yua,tromso,xn--troms-zua,tromsa,romsa,trondheim,troandin,trysil,trana,xn--trna-woa,trogstad,xn--trgstad-r1a,tvedestrand,tydal,tynset,tysfjord,divtasvuodna,divttasvuotna,tysnes,tysvar,xn--tysvr-vra,tonsberg,xn--tnsberg-q1a,ullensaker,ullensvang,ulvik,utsira,vadso,xn--vads-jra,cahcesuolo,xn--hcesuolo-7ya35b,vaksdal,valle,vang,vanylven,vardo,xn--vard-jra,varggat,xn--vrggt-xqad,vefsn,vaapste,vega,vegarshei,xn--vegrshei-c0a,vennesla,verdal,verran,vestby,vestnes,vestre-slidre,vestre-toten,vestvagoy,xn--vestvgy-ixa6o,vevelstad,vik,vikna,vindafjord,volda,voss,varoy,xn--vry-yla5g,vagan,xn--vgan-qoa,voagat,vagsoy,xn--vgsy-qoa0j,vaga,xn--vg-yiab,ostfold>valer<xn--stfold-9xa>xn--vler-qoa<<np>*<nr>biz,info,gov,edu,org,net,com<nu,nz>ac,co,cri,geek,gen,govt,health,iwi,kiwi,maori,mil,xn--mori-qsa,net,org,parliament,school<om>co,com,edu,gov,med,museum,net,org,pro<onion,org,pa>ac,gob,com,org,sld,edu,net,ing,abo,med,nom<pe>edu,gob,nom,mil,org,com,net<pf>com,org,edu<pg>*<ph>com,net,org,gov,edu,ngo,mil,i<pk>ac,biz,com,edu,fam,gkp,gob,gog,gok,gon,gop,gos,gov,net,org,web<pl>com,net,org,aid,agro,atm,auto,biz,edu,gmina,gsm,info,mail,miasta,media,mil,nieruchomosci,nom,pc,powiat,priv,realestate,rel,sex,shop,sklep,sos,szkola,targi,tm,tourism,travel,turystyka,gov>ap,griw,ic,is,kmpsp,konsulat,kppsp,kwp,kwpsp,mup,mw,oia,oirm,oke,oow,oschr,oum,pa,pinb,piw,po,pr,psp,psse,pup,rzgw,sa,sdn,sko,so,sr,starostwo,ug,ugim,um,umig,upow,uppo,us,uw,uzs,wif,wiih,winb,wios,witd,wiw,wkz,wsa,wskr,wsse,wuoz,wzmiuw,zp,zpisdn<augustow,babia-gora,bedzin,beskidy,bialowieza,bialystok,bielawa,bieszczady,boleslawiec,bydgoszcz,bytom,cieszyn,czeladz,czest,dlugoleka,elblag,elk,glogow,gniezno,gorlice,grajewo,ilawa,jaworzno,jelenia-gora,jgora,kalisz,kazimierz-dolny,karpacz,kartuzy,kaszuby,katowice,kepno,ketrzyn,klodzko,kobierzyce,kolobrzeg,konin,konskowola,kutno,lapy,lebork,legnica,lezajsk,limanowa,lomza,lowicz,lubin,lukow,malbork,malopolska,mazowsze,mazury,mielec,mielno,mragowo,naklo,nowaruda,nysa,olawa,olecko,olkusz,olsztyn,opoczno,opole,ostroda,ostroleka,ostrowiec,ostrowwlkp,pila,pisz,podhale,podlasie,polkowice,pomorze,pomorskie,prochowice,pruszkow,przeworsk,pulawy,radom,rawa-maz,rybnik,rzeszow,sanok,sejny,slask,slupsk,sosnowiec,stalowa-wola,skoczow,starachowice,stargard,suwalki,swidnica,swiebodzin,swinoujscie,szczecin,szczytno,tarnobrzeg,tgory,turek,tychy,ustka,walbrzych,warmia,warszawa,waw,wegrow,wielun,wlocl,wloclawek,wodzislaw,wolomin,wroclaw,zachpomor,zagan,zarow,zgora,zgorzelec<pm,pn>gov,co,org,edu,net<post,pr>com,net,org,gov,edu,isla,pro,biz,info,name,est,prof,ac<pro>aaa,aca,acct,avocat,bar,cpa,eng,jur,law,med,recht<ps>edu,gov,sec,plo,com,org,net<pt>net,gov,org,edu,int,publ,com,nome<pw>co,ne,or,ed,go,belau<py>com,coop,edu,gov,mil,net,org<qa>com,edu,gov,mil,name,net,org,sch<re>asso,com,nom<ro>arts,com,firm,info,nom,nt,org,rec,store,tm,www<rs>ac,co,edu,gov,in,org<ru,rw>ac,co,coop,gov,mil,net,org<sa>com,net,org,gov,med,pub,edu,sch<sb>com,edu,gov,net,org<sc>com,gov,net,org,edu<sd>com,net,org,edu,med,tv,gov,info<se>a,ac,b,bd,brand,c,d,e,f,fh,fhsk,fhv,g,h,i,k,komforb,kommunalforbund,komvux,l,lanbib,m,n,naturbruksgymn,o,org,p,parti,pp,press,r,s,t,tm,u,w,x,y,z<sg>com,net,org,gov,edu,per<sh>com,net,gov,org,mil<si,sj,sk,sl>com,net,edu,gov,org<sm,sn>art,com,edu,gouv,org,perso,univ<so>com,edu,gov,me,net,org<sr,ss>biz,com,edu,gov,me,net,org,sch<st>co,com,consulado,edu,embaixada,mil,net,org,principe,saotome,store<su,sv>com,edu,gob,org,red<sx>gov<sy>edu,gov,net,mil,com,org<sz>co,ac,org<tc,td,tel,tf,tg,th>ac,co,go,in,mi,net,or<tj>ac,biz,co,com,edu,go,gov,int,mil,name,net,nic,org,test,web<tk,tl>gov<tm>com,co,org,net,nom,gov,mil,edu<tn>com,ens,fin,gov,ind,info,intl,mincom,nat,net,org,perso,tourism<to>com,gov,net,org,edu,mil<tr>av,bbs,bel,biz,com,dr,edu,gen,gov,info,mil,k12,kep,name,net,org,pol,tel,tsk,tv,web,nc>gov<<tt>co,com,org,net,biz,info,pro,int,coop,jobs,mobi,travel,museum,aero,name,gov,edu<tv,tw>edu,gov,mil,com,net,org,idv,game,ebiz,club,xn--zf0ao64a,xn--uc0atv,xn--czrw28b<tz>ac,co,go,hotel,info,me,mil,mobi,ne,or,sc,tv<ua>com,edu,gov,in,net,org,cherkassy,cherkasy,chernigov,chernihiv,chernivtsi,chernovtsy,ck,cn,cr,crimea,cv,dn,dnepropetrovsk,dnipropetrovsk,donetsk,dp,if,ivano-frankivsk,kh,kharkiv,kharkov,kherson,khmelnitskiy,khmelnytskyi,kiev,kirovograd,km,kr,kropyvnytskyi,krym,ks,kv,kyiv,lg,lt,lugansk,luhansk,lutsk,lv,lviv,mk,mykolaiv,nikolaev,od,odesa,odessa,pl,poltava,rivne,rovno,rv,sb,sebastopol,sevastopol,sm,sumy,te,ternopil,uz,uzhgorod,uzhhorod,vinnica,vinnytsia,vn,volyn,yalta,zakarpattia,zaporizhzhe,zaporizhzhia,zhitomir,zhytomyr,zp,zt<ug>co,or,ac,sc,go,ne,com,org<uk>ac,co,gov,ltd,me,net,nhs,org,plc,police,sch>*<<us>dni,fed,isa,kids,nsn,ak>k12,cc,lib<al>k12,cc,lib<ar>k12,cc,lib<as>k12,cc,lib<az>k12,cc,lib<ca>k12,cc,lib<co>k12,cc,lib<ct>k12,cc,lib<dc>k12,cc,lib<de>cc<fl>k12,cc,lib<ga>k12,cc,lib<gu>k12,cc,lib<hi>cc,lib<ia>k12,cc,lib<id>k12,cc,lib<il>k12,cc,lib<in>k12,cc,lib<ks>k12,cc,lib<ky>k12,cc,lib<la>k12,cc,lib<ma>k12>pvt,chtr,paroch<cc,lib<md>k12,cc,lib<me>k12,cc,lib<mi>k12,cc,lib,ann-arbor,cog,dst,eaton,gen,mus,tec,washtenaw<mn>k12,cc,lib<mo>k12,cc,lib<ms>k12,cc,lib<mt>k12,cc,lib<nc>k12,cc,lib<nd>cc,lib<ne>k12,cc,lib<nh>k12,cc,lib<nj>k12,cc,lib<nm>k12,cc,lib<nv>k12,cc,lib<ny>k12,cc,lib<oh>k12,cc,lib<ok>k12,cc,lib<or>k12,cc,lib<pa>k12,cc,lib<pr>k12,cc,lib<ri>cc,lib<sc>k12,cc,lib<sd>cc,lib<tn>k12,cc,lib<tx>k12,cc,lib<ut>k12,cc,lib<vi>k12,cc,lib<vt>k12,cc,lib<va>k12,cc,lib<wa>k12,cc,lib<wi>k12,cc,lib<wv>cc<wy>k12,cc,lib<<uy>com,edu,gub,mil,net,org<uz>co,com,net,org<va,vc>com,net,org,gov,mil,edu<ve>arts,bib,co,com,e12,edu,firm,gob,gov,info,int,mil,net,nom,org,rar,rec,store,tec,web<vg,vi>co,com,k12,net,org<vn>ac,ai,biz,com,edu,gov,health,id,info,int,io,name,net,org,pro,angiang,bacgiang,backan,baclieu,bacninh,baria-vungtau,bentre,binhdinh,binhduong,binhphuoc,binhthuan,camau,cantho,caobang,daklak,daknong,danang,dienbien,dongnai,dongthap,gialai,hagiang,haiduong,haiphong,hanam,hanoi,hatinh,haugiang,hoabinh,hungyen,khanhhoa,kiengiang,kontum,laichau,lamdong,langson,laocai,longan,namdinh,nghean,ninhbinh,ninhthuan,phutho,phuyen,quangbinh,quangnam,quangngai,quangninh,quangtri,soctrang,sonla,tayninh,thaibinh,thainguyen,thanhhoa,thanhphohochiminh,thuathienhue,tiengiang,travinh,tuyenquang,vinhlong,vinhphuc,yenbai<vu>com,edu,net,org<wf,ws>com,net,org,gov,edu<yt,xn--mgbaam7a8h,xn--y9a3aq,xn--54b7fta0cc,xn--90ae,xn--mgbcpq6gpa1a,xn--90ais,xn--fiqs8s,xn--fiqz9s,xn--lgbbat1ad8j,xn--wgbh1c,xn--e1a4c,xn--qxa6a,xn--mgbah1a3hjkrd,xn--node,xn--qxam,xn--j6w193g>xn--55qx5d,xn--wcvs22d,xn--mxtq1m,xn--gmqw5a,xn--od0alg,xn--uc0atv<xn--2scrj9c,xn--3hcrj9c,xn--45br5cyl,xn--h2breg3eve,xn--h2brj9c8c,xn--mgbgu82a,xn--rvc1e0am3e,xn--h2brj9c,xn--mgbbh1a,xn--mgbbh1a71e,xn--fpcrj9c3d,xn--gecrj9c,xn--s9brj9c,xn--45brj9c,xn--xkc2dl3a5ee0h,xn--mgba3a4f16a,xn--mgba3a4fra,xn--mgbtx2b,xn--mgbayh7gpa,xn--3e0b707e,xn--80ao21a,xn--q7ce6a,xn--fzc2c9e2c,xn--xkc2al3hye2a,xn--mgbc0a9azcg,xn--d1alf,xn--l1acc,xn--mix891f,xn--mix082f,xn--mgbx4cd0ab,xn--mgb9awbf,xn--mgbai9azgqp6j,xn--mgbai9a5eva00b,xn--ygbi2ammx,xn--90a3ac>xn--o1ac,xn--c1avg,xn--90azh,xn--d1at,xn--o1ach,xn--80au<xn--p1ai,xn--wgbl6a,xn--mgberp4a5d4ar,xn--mgberp4a5d4a87g,xn--mgbqly7c0a67fbc,xn--mgbqly7cvafr,xn--mgbpl2fh,xn--yfro4i67o,xn--clchc0ea0b2g2a9gcd,xn--ogbpf8fl,xn--mgbtf8fl,xn--o3cw4h>xn--12c1fe0br,xn--12co0c3b4eva,xn--h3cuzk1di,xn--o3cyx2a,xn--m3ch0j3a,xn--12cfi8ixb8l<xn--pgbs0dh,xn--kpry57d,xn--kprw13d,xn--nnx388a,xn--j1amh,xn--mgb2ddes,xxx,ye>com,edu,gov,net,mil,org<za>ac,agric,alt,co,edu,gov,grondar,law,mil,net,ngo,nic,nis,nom,org,school,tm,web<zm>ac,biz,co,com,edu,gov,info,mil,net,org,sch<zw>ac,co,gov,mil,org<aaa,aarp,abb,abbott,abbvie,abc,able,abogado,abudhabi,academy,accenture,accountant,accountants,aco,actor,ads,adult,aeg,aetna,afl,africa,agakhan,agency,aig,airbus,airforce,airtel,akdn,alibaba,alipay,allfinanz,allstate,ally,alsace,alstom,amazon,americanexpress,americanfamily,amex,amfam,amica,amsterdam,analytics,android,anquan,anz,aol,apartments,app,apple,aquarelle,arab,aramco,archi,army,art,arte,asda,associates,athleta,attorney,auction,audi,audible,audio,auspost,author,auto,autos,aws,axa,azure,baby,baidu,banamex,band,bank,bar,barcelona,barclaycard,barclays,barefoot,bargains,baseball,basketball,bauhaus,bayern,bbc,bbt,bbva,bcg,bcn,beats,beauty,beer,bentley,berlin,best,bestbuy,bet,bharti,bible,bid,bike,bing,bingo,bio,black,blackfriday,blockbuster,blog,bloomberg,blue,bms,bmw,bnpparibas,boats,boehringer,bofa,bom,bond,boo,book,booking,bosch,bostik,boston,bot,boutique,box,bradesco,bridgestone,broadway,broker,brother,brussels,build,builders,business,buy,buzz,bzh,cab,cafe,cal,call,calvinklein,cam,camera,camp,canon,capetown,capital,capitalone,car,caravan,cards,care,career,careers,cars,casa,case,cash,casino,catering,catholic,cba,cbn,cbre,center,ceo,cern,cfa,cfd,chanel,channel,charity,chase,chat,cheap,chintai,christmas,chrome,church,cipriani,circle,cisco,citadel,citi,citic,city,claims,cleaning,click,clinic,clinique,clothing,cloud,club,clubmed,coach,codes,coffee,college,cologne,commbank,community,company,compare,computer,comsec,condos,construction,consulting,contact,contractors,cooking,cool,corsica,country,coupon,coupons,courses,cpa,credit,creditcard,creditunion,cricket,crown,crs,cruise,cruises,cuisinella,cymru,cyou,dabur,dad,dance,data,date,dating,datsun,day,dclk,dds,deal,dealer,deals,degree,delivery,dell,deloitte,delta,democrat,dental,dentist,desi,design,dev,dhl,diamonds,diet,digital,direct,directory,discount,discover,dish,diy,dnp,docs,doctor,dog,domains,dot,download,drive,dtv,dubai,dunlop,dupont,durban,dvag,dvr,earth,eat,eco,edeka,education,email,emerck,energy,engineer,engineering,enterprises,epson,equipment,ericsson,erni,esq,estate,eurovision,eus,events,exchange,expert,exposed,express,extraspace,fage,fail,fairwinds,faith,family,fan,fans,farm,farmers,fashion,fast,fedex,feedback,ferrari,ferrero,fidelity,fido,film,final,finance,financial,fire,firestone,firmdale,fish,fishing,fit,fitness,flickr,flights,flir,florist,flowers,fly,foo,food,football,ford,forex,forsale,forum,foundation,fox,free,fresenius,frl,frogans,frontier,ftr,fujitsu,fun,fund,furniture,futbol,fyi,gal,gallery,gallo,gallup,game,games,gap,garden,gay,gbiz,gdn,gea,gent,genting,george,ggee,gift,gifts,gives,giving,glass,gle,global,globo,gmail,gmbh,gmo,gmx,godaddy,gold,goldpoint,golf,goo,goodyear,goog,google,gop,got,grainger,graphics,gratis,green,gripe,grocery,group,gucci,guge,guide,guitars,guru,hair,hamburg,hangout,haus,hbo,hdfc,hdfcbank,health,healthcare,help,helsinki,here,hermes,hiphop,hisamitsu,hitachi,hiv,hkt,hockey,holdings,holiday,homedepot,homegoods,homes,homesense,honda,horse,hospital,host,hosting,hot,hotels,hotmail,house,how,hsbc,hughes,hyatt,hyundai,ibm,icbc,ice,icu,ieee,ifm,ikano,imamat,imdb,immo,immobilien,inc,industries,infiniti,ing,ink,institute,insurance,insure,international,intuit,investments,ipiranga,irish,ismaili,ist,istanbul,itau,itv,jaguar,java,jcb,jeep,jetzt,jewelry,jio,jll,jmp,jnj,joburg,jot,joy,jpmorgan,jprs,juegos,juniper,kaufen,kddi,kerryhotels,kerrylogistics,kerryproperties,kfh,kia,kids,kim,kindle,kitchen,kiwi,koeln,komatsu,kosher,kpmg,kpn,krd,kred,kuokgroup,kyoto,lacaixa,lamborghini,lamer,lancaster,land,landrover,lanxess,lasalle,lat,latino,latrobe,law,lawyer,lds,lease,leclerc,lefrak,legal,lego,lexus,lgbt,lidl,life,lifeinsurance,lifestyle,lighting,like,lilly,limited,limo,lincoln,link,lipsy,live,living,llc,llp,loan,loans,locker,locus,lol,london,lotte,lotto,love,lpl,lplfinancial,ltd,ltda,lundbeck,luxe,luxury,madrid,maif,maison,makeup,man,management,mango,map,market,marketing,markets,marriott,marshalls,mattel,mba,mckinsey,med,media,meet,melbourne,meme,memorial,men,menu,merckmsd,miami,microsoft,mini,mint,mit,mitsubishi,mlb,mls,mma,mobile,moda,moe,moi,mom,monash,money,monster,mormon,mortgage,moscow,moto,motorcycles,mov,movie,msd,mtn,mtr,music,nab,nagoya,navy,nba,nec,netbank,netflix,network,neustar,new,news,next,nextdirect,nexus,nfl,ngo,nhk,nico,nike,nikon,ninja,nissan,nissay,nokia,norton,now,nowruz,nowtv,nra,nrw,ntt,nyc,obi,observer,office,okinawa,olayan,olayangroup,ollo,omega,one,ong,onl,online,ooo,open,oracle,orange,organic,origins,osaka,otsuka,ott,ovh,page,panasonic,paris,pars,partners,parts,party,pay,pccw,pet,pfizer,pharmacy,phd,philips,phone,photo,photography,photos,physio,pics,pictet,pictures,pid,pin,ping,pink,pioneer,pizza,place,play,playstation,plumbing,plus,pnc,pohl,poker,politie,porn,pramerica,praxi,press,prime,prod,productions,prof,progressive,promo,properties,property,protection,pru,prudential,pub,pwc,qpon,quebec,quest,racing,radio,read,realestate,realtor,realty,recipes,red,redstone,redumbrella,rehab,reise,reisen,reit,reliance,ren,rent,rentals,repair,report,republican,rest,restaurant,review,reviews,rexroth,rich,richardli,ricoh,ril,rio,rip,rocks,rodeo,rogers,room,rsvp,rugby,ruhr,run,rwe,ryukyu,saarland,safe,safety,sakura,sale,salon,samsclub,samsung,sandvik,sandvikcoromant,sanofi,sap,sarl,sas,save,saxo,sbi,sbs,scb,schaeffler,schmidt,scholarships,school,schule,schwarz,science,scot,search,seat,secure,security,seek,select,sener,services,seven,sew,sex,sexy,sfr,shangrila,sharp,shell,shia,shiksha,shoes,shop,shopping,shouji,show,silk,sina,singles,site,ski,skin,sky,skype,sling,smart,smile,sncf,soccer,social,softbank,software,sohu,solar,solutions,song,sony,soy,spa,space,sport,spot,srl,stada,staples,star,statebank,statefarm,stc,stcgroup,stockholm,storage,store,stream,studio,study,style,sucks,supplies,supply,support,surf,surgery,suzuki,swatch,swiss,sydney,systems,tab,taipei,talk,taobao,target,tatamotors,tatar,tattoo,tax,taxi,tci,tdk,team,tech,technology,temasek,tennis,teva,thd,theater,theatre,tiaa,tickets,tienda,tips,tires,tirol,tjmaxx,tjx,tkmaxx,tmall,today,tokyo,tools,top,toray,toshiba,total,tours,town,toyota,toys,trade,trading,training,travel,travelers,travelersinsurance,trust,trv,tube,tui,tunes,tushu,tvs,ubank,ubs,unicom,university,uno,uol,ups,vacations,vana,vanguard,vegas,ventures,verisign,versicherung,vet,viajes,video,vig,viking,villas,vin,vip,virgin,visa,vision,viva,vivo,vlaanderen,vodka,volvo,vote,voting,voto,voyage,wales,walmart,walter,wang,wanggou,watch,watches,weather,weatherchannel,webcam,weber,website,wed,wedding,weibo,weir,whoswho,wien,wiki,williamhill,win,windows,wine,winners,wme,wolterskluwer,woodside,work,works,world,wow,wtc,wtf,xbox,xerox,xihuan,xin,xn--11b4c3d,xn--1ck2e1b,xn--1qqw23a,xn--30rr7y,xn--3bst00m,xn--3ds443g,xn--3pxu8k,xn--42c2d9a,xn--45q11c,xn--4gbrim,xn--55qw42g,xn--55qx5d,xn--5su34j936bgsg,xn--5tzm5g,xn--6frz82g,xn--6qq986b3xl,xn--80adxhks,xn--80aqecdr1a,xn--80asehdb,xn--80aswg,xn--8y0a063a,xn--9dbq2a,xn--9et52u,xn--9krt00a,xn--b4w605ferd,xn--bck1b9a5dre4c,xn--c1avg,xn--c2br7g,xn--cck2b3b,xn--cckwcxetd,xn--cg4bki,xn--czr694b,xn--czrs0t,xn--czru2d,xn--d1acj3b,xn--eckvdtc9d,xn--efvy88h,xn--fct429k,xn--fhbei,xn--fiq228c5hs,xn--fiq64b,xn--fjq720a,xn--flw351e,xn--fzys8d69uvgm,xn--g2xx48c,xn--gckr3f0f,xn--gk3at1e,xn--hxt814e,xn--i1b6b1a6a2e,xn--imr513n,xn--io0a7i,xn--j1aef,xn--jlq480n2rg,xn--jvr189m,xn--kcrx77d1x4a,xn--kput3i,xn--mgba3a3ejt,xn--mgba7c0bbn0a,xn--mgbab2bd,xn--mgbca7dzdo,xn--mgbi4ecexp,xn--mgbt3dhd,xn--mk1bu44c,xn--mxtq1m,xn--ngbc5azd,xn--ngbe9e0a,xn--ngbrx,xn--nqv7f,xn--nqv7fs00ema,xn--nyqy26a,xn--otu796d,xn--p1acf,xn--pssy2u,xn--q9jyb4c,xn--qcka1pmc,xn--rhqv96g,xn--rovu88b,xn--ses554g,xn--t60b56a,xn--tckwe,xn--tiq49xqyj,xn--unup4y,xn--vermgensberater-ctb,xn--vermgensberatung-pwb,xn--vhquv,xn--vuq861b,xn--w4r85el8fhu5dnra,xn--w4rs40l,xn--xhq521b,xn--zfr164b,xyz,yachts,yahoo,yamaxun,yandex,yodobashi,yoga,yokohama,you,youtube,yun,zappos,zara,zero,zip,zone,zuerich\";","export default \"krd>co,edu<pl>art,gliwice,krakow,poznan,wroc,zakopane,beep,ecommerce-shop,cfolks,dfirma,dkonto,you2,shoparena,homesklep,sdscloud,unicloud,krasnik,leczna,lubartow,lublin,poniatowa,swidnik,co,torun,simplesite,myspreadshop,gda,gdansk,gdynia,med,sopot,bielsko<us>de>lib<cloudns,drud,is-by,land-4-sale,stuff-4-sale,heliohost,enscaled>phx<mircloud,ngo,golffan,noip,pointto,freeddns,srv>gh,gl<platterp,servername<dev>12chars,panel,autocode,lcl>*<lclstage>*<stg>*<stgstage>*<pages,r2,workers,curv,deno,deno-staging,deta,evervault>relay<fly,githubpreview,gateway>*<is-a,iserv,runcontainers,localcert>user>*<<loginline,barsy,mediatech,modx,ngrok,ngrok-free,is-cool,is-not-a,localplayer,xmit,platter-app,replit>archer,bones,canary,global,hacker,id,janeway,kim,kira,kirk,odo,paris,picard,pike,prerelease,reed,riker,sisko,spock,staging,sulu,tarpit,teams,tucker,wesley,worf<crm>d>*<w>*<wa>*<wb>*<wc>*<wd>*<we>*<wf>*<<vercel,webhare>*<<it>12chars,blogspot,ibxos,iliadboxos,neen>jc<tim>open>jelastic>cloud<<<16-b,32-b,64-b,123homepage,myspreadshop,syncloud<pro>12chars,cloudns,dnstrace>bci<barsy,ngrok<ua>cc,inf,ltd,cx,ie,biz,co,pp,v<to>611,oya,x0,quickconnect>direct<vpnplus<com>a2hosted,cpserver,adobeaemcloud>dev>*<<africa,airkitapps,airkitapps-au,aivencloud,kasserver,amazonaws>af-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-south-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ap-southeast-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-southeast-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-southeast-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ap-southeast-4>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ca-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ca-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<eu-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-central-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<eu-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-south-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<eu-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-deprecated,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-west-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-west-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<il-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs<<me-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<me-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<sa-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-east-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-gov-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website<us-gov-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website<us-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-west-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<compute>*<compute-1>*<airflow>af-south-1>*<ap-east-1>*<ap-northeast-1>*<ap-northeast-2>*<ap-northeast-3>*<ap-south-1>*<ap-south-2>*<ap-southeast-1>*<ap-southeast-2>*<ap-southeast-3>*<ap-southeast-4>*<ca-central-1>*<ca-west-1>*<eu-central-1>*<eu-central-2>*<eu-north-1>*<eu-south-1>*<eu-south-2>*<eu-west-1>*<eu-west-2>*<eu-west-3>*<il-central-1>*<me-central-1>*<me-south-1>*<sa-east-1>*<us-east-1>*<us-east-2>*<us-west-1>*<us-west-2>*<<s3,s3-1,s3-ap-east-1,s3-ap-northeast-1,s3-ap-northeast-2,s3-ap-northeast-3,s3-ap-south-1,s3-ap-southeast-1,s3-ap-southeast-2,s3-ca-central-1,s3-eu-central-1,s3-eu-north-1,s3-eu-west-1,s3-eu-west-2,s3-eu-west-3,s3-external-1,s3-fips-us-gov-east-1,s3-fips-us-gov-west-1,s3-global>accesspoint>mrap<<s3-me-south-1,s3-sa-east-1,s3-us-east-2,s3-us-gov-east-1,s3-us-gov-west-1,s3-us-west-1,s3-us-west-2,s3-website-ap-northeast-1,s3-website-ap-southeast-1,s3-website-ap-southeast-2,s3-website-eu-west-1,s3-website-sa-east-1,s3-website-us-east-1,s3-website-us-gov-west-1,s3-website-us-west-1,s3-website-us-west-2,elb>*<<amazoncognito>af-south-1>auth<ap-east-1>auth<ap-northeast-1>auth<ap-northeast-2>auth<ap-northeast-3>auth<ap-south-1>auth<ap-south-2>auth<ap-southeast-1>auth<ap-southeast-2>auth<ap-southeast-3>auth<ap-southeast-4>auth<ca-central-1>auth<ca-west-1>auth<eu-central-1>auth<eu-central-2>auth<eu-north-1>auth<eu-south-1>auth<eu-south-2>auth<eu-west-1>auth<eu-west-2>auth<eu-west-3>auth<il-central-1>auth<me-central-1>auth<me-south-1>auth<sa-east-1>auth<us-east-1>auth,auth-fips<us-east-2>auth,auth-fips<us-gov-west-1>auth-fips<us-west-1>auth,auth-fips<us-west-2>auth,auth-fips<<amplifyapp,awsapprunner>*<awsapps,elasticbeanstalk>af-south-1,ap-east-1,ap-northeast-1,ap-northeast-2,ap-northeast-3,ap-south-1,ap-southeast-1,ap-southeast-2,ap-southeast-3,ca-central-1,eu-central-1,eu-north-1,eu-south-1,eu-west-1,eu-west-2,eu-west-3,il-central-1,me-south-1,sa-east-1,us-east-1,us-east-2,us-gov-east-1,us-gov-west-1,us-west-1,us-west-2<awsglobalaccelerator,siiites,appspacehosted,appspaceusercontent,on-aptible,myasustor,balena-devices,betainabox,boutir,bplaced,cafjs,canva-apps,cdn77-storage,br,cn,de,eu,jpn,mex,ru,sa,uk,us,za,clever-cloud>services>*<<dnsabr,jdevcloud,wpdevcloud,cf-ipfs,cloudflare-ipfs,trycloudflare,co,customer-oci>*,oci>*<ocp>*<ocs>*<<builtwithdark,datadetect>demo,instance<dattolocal,dattorelay,dattoweb,mydatto,ddns5,digitaloceanspaces>*<discordsays,discordsez,drayddns,dreamhosters,durumis,mydrobo,blogdns,cechire,dnsalias,dnsdojo,doesntexist,dontexist,doomdns,dyn-o-saur,dynalias,dyndns-at-home,dyndns-at-work,dyndns-blog,dyndns-free,dyndns-home,dyndns-ip,dyndns-mail,dyndns-office,dyndns-pics,dyndns-remote,dyndns-server,dyndns-web,dyndns-wiki,dyndns-work,est-a-la-maison,est-a-la-masion,est-le-patron,est-mon-blogueur,from-ak,from-al,from-ar,from-ca,from-ct,from-dc,from-de,from-fl,from-ga,from-hi,from-ia,from-id,from-il,from-in,from-ks,from-ky,from-ma,from-md,from-mi,from-mn,from-mo,from-ms,from-mt,from-nc,from-nd,from-ne,from-nh,from-nj,from-nm,from-nv,from-oh,from-ok,from-or,from-pa,from-pr,from-ri,from-sc,from-sd,from-tn,from-tx,from-ut,from-va,from-vt,from-wa,from-wi,from-wv,from-wy,getmyip,gotdns,hobby-site,homelinux,homeunix,iamallama,is-a-anarchist,is-a-blogger,is-a-bookkeeper,is-a-bulls-fan,is-a-caterer,is-a-chef,is-a-conservative,is-a-cpa,is-a-cubicle-slave,is-a-democrat,is-a-designer,is-a-doctor,is-a-financialadvisor,is-a-geek,is-a-green,is-a-guru,is-a-hard-worker,is-a-hunter,is-a-landscaper,is-a-lawyer,is-a-liberal,is-a-libertarian,is-a-llama,is-a-musician,is-a-nascarfan,is-a-nurse,is-a-painter,is-a-personaltrainer,is-a-photographer,is-a-player,is-a-republican,is-a-rockstar,is-a-socialist,is-a-student,is-a-teacher,is-a-techie,is-a-therapist,is-an-accountant,is-an-actor,is-an-actress,is-an-anarchist,is-an-artist,is-an-engineer,is-an-entertainer,is-certified,is-gone,is-into-anime,is-into-cars,is-into-cartoons,is-into-games,is-leet,is-not-certified,is-slick,is-uberleet,is-with-theband,isa-geek,isa-hockeynut,issmarterthanyou,likes-pie,likescandy,neat-url,saves-the-whales,selfip,sells-for-less,sells-for-u,servebbs,simple-url,space-to-rent,teaches-yoga,writesthisblog,ddnsfree,ddnsgeek,giize,gleeze,kozow,loseyourip,ooguy,theworkpc,mytuleap,tuleap-partners,encoreapi,evennode>eu-1,eu-2,eu-3,eu-4,us-1,us-2,us-3,us-4<onfabrica,fastly-edge,fastly-terrarium,fastvps-server,mydobiss,firebaseapp,fldrv,forgeblocks,framercanvas,freebox-os,freeboxos,freemyip,aliases121,gentapps,gentlentapis,githubusercontent,0emm>*<appspot>r>*<<blogspot,codespot,googleapis,googlecode,pagespeedmobilizer,publishproxy,withgoogle,withyoutube,grayjayleagues,hatenablog,hatenadiary,herokuapp,herokussl,gr,smushcdn,wphostedmail,wpmucdn,pixolino,apps-1and1,live-website,amscompute,dopaas,hosted-by-previder>paas<hosteur>rag-cloud,rag-cloud-ch<ik-server>jcloud,jcloud-ver-jpc<jelastic>demo<kilatiron,massivegrid>paas<wafaicloud>jed,lon,ryd<webadorsite,joyent>cns>*<<ktistory,lpusercontent,linode>members,nodebalancer>*<<linodeobjects>*<linodeusercontent>ip<barsycenter,barsyonline,mazeplay,miniserver,atmeta,fbsbx>apps<meteorapp>eu<hostedpi,mythic-beasts>caracal,customer,fentiger,lynx,ocelot,oncilla,onza,sphinx,vs,x,yali<nospamproxy>cloud<4u,nfshost,ar,hu,kr,no,qc,uy,3utilities,blogsyte,ciscofreak,damnserver,ddnsking,ditchyourip,dnsiskinky,dynns,geekgalaxy,health-carereform,homesecuritymac,homesecuritypc,myactivedirectory,mysecuritycamera,myvnc,net-freaks,onthewifi,point2this,quicksytes,securitytactics,servebeer,servecounterstrike,serveexchange,serveftp,servegame,servehalflife,servehttp,servehumour,serveirc,servemp3,servep2p,servepics,servequake,servesarcasm,stufftoread,unusualperson,workisboring,001www,ddnslive,myiphost,observableusercontent>static<simplesite,orsites,operaunite,authgear-staging,authgearapps,skygearapp,outsystemscloud,ownprovider,pgfog,pagexl,gotpantheon,paywhirl>*<upsunapp,platter-app,postman-echo,prgmr>xen<pythonanywhere>eu<qa2,alpha-myqnapcloud,dev-myqnapcloud,mycloudnas,mynascloud,myqnapcloud,qualifioapp,ladesk,qbuser,quipelements>*<rackmaze,rhcloud,onrender,render>app<180r,dojin,sakuratan,sakuraweb,x0,code>builder>*<dev-builder>*<stg-builder>*<<salesforce>platform>code-builder-stg>test>001>*<<<<<logoip,scrysec,firewall-gateway,myshopblocks,myshopify,shopitsite,1kapp,appchizi,applinzi,sinaapp,vipsinaapp,bounty-full>alpha,beta<streamlitapp,try-snowplow,playstation-cloud,myspreadshop,w-corp-staticblitz,w-credentialless-staticblitz,w-staticblitz,stackhero-network,stdlib>api<strapiapp>media<streak-link,streaklinks,streakusercontent,temp-dns,dsmynas,familyds,mytabit,tb-hosting>site<reservd,thingdustdata,bloxcms,townnews-staging,typeform>pro<hk,it,vultrobjects>*<wafflecell,hotelwithflight,reserve-online,cprapid,pleskns,remotewd,wiardweb>pages<wixsite,wixstudio,messwithdns,woltlab-demo,wpenginepowered>js<xnbay>u2,u2-local<yolasite<vodka>aaa<io>on-acorn>*<apigee,b-data,banzaicloud>app,backyards>*<<beagleboard,bitbucket,bluebite,boxfuse,brave>s>*<<browsersafetymark,bigv>uk0<cleverapps,dappnode>dyndns<darklang,definima,dedyn,drud,fh-muenster,shw,forgerock>id<github,gitlab,lolipop,hasura-app,hostyhosting,hypernode,moonscale>*<beebyte>paas<beebyteapp>sekd1<jele,unispace>cloud-fr1<webthings,loginline,barsy,azurecontainer>*<ngrok>ap,au,eu,in,jp,sa,us<nodeart>stage<pantheonsite,dyn53,pstmn>mock<protonet,qcx>sys>*<<qoto,vaporcloud,myrdbx,rb-hosting>site<on-k3s>*<on-rio>*<readthedocs,resindevice,resinstaging>devices<hzc,sandcats,scrypted>client<shiftedit,mo-siemens,lair>apps<stolos>*<spacekit,musician,utwente,s5y>*<edugit,telebit,thingdust>dev>cust,reservd<disrec>cust,reservd<prod>cust<testing>cust,reservd<<tickets,upli,2038,webflow,webflowtest,editorx,wixstudio,basicserver,virtualserver<biz>activetrail,cloudns,jozi,dyndns,for-better,for-more,for-some,for-the,selfip,webhop,orx,mmafan,myftp,no-ip,dscloud<app>adaptable,beget>*<clerk,clerkstage,wnext,csb>preview<platform0,deta,ondigitalocean,easypanel,encr,evervault>relay<expo>staging<edgecompute,fireweb,flutterflow,framer,hosted>*<run>*<web,hasura,loginline,messerli,netfy,netlify,ngrok,ngrok-free,developer>*<noop,northflank>*<upsun>*<replit>id<snowflake>*,privatelink>*<<streamlit,storipress,telebit,typedream,vercel,bookonline,wdh>preview<zeabur<live>aem,hlx,ewp>*<<net>adobeaemcloud,adobeio-static,adobeioruntime,akadns,akamai,akamai-staging,akamaiedge,akamaiedge-staging,akamaihd,akamaihd-staging,akamaiorigin,akamaiorigin-staging,akamaized,akamaized-staging,edgekey,edgekey-staging,edgesuite,edgesuite-staging,alwaysdata,myamaze,cloudfront,appudo,atlassian-dev>prod>cdn<<myfritz,onavstack,shopselect,blackbaudcdn,boomla,bplaced,square7,cdn77>r<cdn77-ssl,gb,hu,jp,se,uk,clickrising,dns-cloud,dns-dynamic,cloudaccess,cloudflare>cdn<cloudflareanycast>cdn<cloudflarecn>cdn<cloudflareglobal>cdn<feste-ip,knx-server,static-access,cryptonomic>*<dattolocal,mydatto,debian,definima,at-band-camp,blogdns,broke-it,buyshouses,dnsalias,dnsdojo,does-it,dontexist,dynalias,dynathome,endofinternet,from-az,from-co,from-la,from-ny,gets-it,ham-radio-op,homeftp,homeip,homelinux,homeunix,in-the-band,is-a-chef,is-a-geek,isa-geek,kicks-ass,office-on-the,podzone,scrapper-site,selfip,sells-it,servebbs,serveftp,thruhere,webhop,casacam,dynu,dynv6,twmail,ru,channelsdvr>u<fastly>freetls,map,prod>a,global<ssl>a,b,global<<fastlylb>map<edgeapp,keyword-on,live-on,server-on,cdn-edges,localcert,localhostcert,heteml,cloudfunctions,iobb,moonscale,in-dsl,in-vpn,apps-1and1,ipifony,cloudjiffy>fra1-de,west1-us<elastx>jls-sto1,jls-sto2,jls-sto3<faststacks,massivegrid>paas>fr-1,lon-1,lon-2,ny-1,ny-2,sg-1<<saveincloud>jelastic,nordeste-idc<scaleforce>j<tsukaeru>jelastic<kinghost,uni5,krellian,ggff,barsy,memset,azure-api,azure-mobile,azureedge,azurefd,azurestaticapps>1,2,3,4,5,6,7,centralus,eastasia,eastus2,westeurope,westus2<azurewebsites,cloudapp,trafficmanager,windows>core>blob<servicebus<mynetname>sn<bounceme,ddns,eating-organic,mydissent,myeffect,mymediapc,mypsx,mysecuritycamera,nhlfan,no-ip,pgafan,privatizehealthinsurance,redirectme,serveblog,serveminecraft,sytes,dnsup,hicam,now-dns,ownip,vpndns,cloudycluster,ovh>hosting>*<webpaas>*<<rackmaze,myradweb,in,squares,schokokeks,firewall-gateway,seidat,senseering,siteleaf,mafelo,myspreadshop,vps-host>jelastic>atl,njs,ric<<srcf>soc,user<supabase,dsmynas,familyds,tailscale>beta<ts>c>*<<torproject>pages<reserve-online,community-pro,meinforum,yandexcloud>storage,website<za<page>aem,hlx,hlx3,translated,codeberg,prvcy,rocky,magnet,pdns,plesk<eu>airkitapps,mycd,cloudns,dogado>jelastic<barsy,wellbeingzone,spdns,transurl>*<diskstation<ca>barsy,awdev>*<co,blogspot,no-ip,myspreadshop,box<estate>compute>*<<network>alces>*<co,arvo,azimuth,tlon<org>altervista,pimienta,poivron,potager,sweetpepper,cdn77>c,rsc<cdn77-secure>origin>ssl<<ae,certmgr,cloudns,ddnss,duckdns,tunk,blogdns,blogsite,boldlygoingnowhere,dnsalias,dnsdojo,doesntexist,dontexist,doomdns,dvrdns,dynalias,dyndns>go,home<endofinternet,endoftheinternet,from-me,game-host,gotdns,hobby-site,homedns,homeftp,homelinux,homeunix,is-a-bruinsfan,is-a-candidate,is-a-celticsfan,is-a-chef,is-a-geek,is-a-knight,is-a-linux-user,is-a-patsfan,is-a-soxfan,is-found,is-lost,is-saved,is-very-bad,is-very-evil,is-very-good,is-very-nice,is-very-sweet,isa-geek,kicks-ass,misconfused,podzone,readmyblog,selfip,sellsyourhome,servebbs,serveftp,servegame,stuff-4-sale,webhop,accesscam,camdvr,freeddns,mywire,webredirect,twmail,eu>al,asso,at,au,be,bg,ca,cd,ch,cn,cy,cz,de,dk,edu,ee,es,fi,fr,gr,hr,hu,ie,il,in,int,is,it,jp,kr,lt,lu,lv,mc,me,mk,mt,my,net,ng,nl,no,nz,paris,pl,pt,q-a,ro,ru,se,si,sk,tr,uk,us<fedorainfracloud,fedorapeople,fedoraproject>cloud,os>app<stg>os>app<<<freedesktop,hatenadiary,hepforge,in-dsl,in-vpn,js,barsy,mayfirst,bmoattachments,cable-modem,collegefan,couchpotatofries,hopto,mlbfan,myftp,mysecuritycamera,nflfan,no-ip,read-books,ufcfan,zapto,dynserv,now-dns,is-local,httpbin,pubtls,jpn,my-firewall,myfirewall,spdns,small-web,dsmynas,familyds,teckids>s3<tuxfamily,diskstation,hk,us,toolforge,wmcloud,wmflabs,za<cn>com>amazonaws>cn-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-deprecated,s3-object-lambda,s3-website<cn-northwest-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<compute>*<airflow>cn-north-1>*<cn-northwest-1>*<<eb>cn-north-1,cn-northwest-1<elb>*<<sagemaker>cn-north-1>notebook,studio<cn-northwest-1>notebook,studio<<<canva-apps,canvasite>my>*<<myqnapcloud,sh>as<quickconnect>direct<<aws>sagemaker>ap-northeast-1>labeling,notebook,studio<ap-northeast-2>labeling,notebook,studio<ap-south-1>labeling,notebook,studio<ap-southeast-1>labeling,notebook,studio<ap-southeast-2>labeling,notebook,studio<ca-central-1>labeling,notebook,notebook-fips,studio<eu-central-1>labeling,notebook,studio<eu-west-1>labeling,notebook,studio<eu-west-2>labeling,notebook,studio<us-east-1>labeling,notebook,notebook-fips,studio<us-east-2>labeling,notebook,notebook-fips,studio<us-west-2>labeling,notebook,notebook-fips,studio<af-south-1>notebook,studio<ap-east-1>notebook,studio<ap-northeast-3>notebook,studio<ap-south-2>notebook<ap-southeast-3>notebook,studio<ap-southeast-4>notebook<ca-west-1>notebook,notebook-fips<eu-central-2>notebook<eu-north-1>notebook,studio<eu-south-1>notebook,studio<eu-south-2>notebook,studio<eu-west-3>notebook,studio<il-central-1>notebook,studio<me-central-1>notebook,studio<me-south-1>notebook,studio<sa-east-1>notebook,studio<us-gov-east-1>notebook,notebook-fips,studio,studio-fips<us-gov-west-1>notebook,notebook-fips,studio,studio-fips<us-west-1>notebook,notebook-fips,studio<experiments>*<<repost>private>*<<<online>eero,eero-stage,websitebuilder,barsy<si>f5,gitapp,gitpage,blogspot<jp>ne>aseinet>user<gehirn,ivory,mail-box,mints,mokuren,opal,sakura,sumomo,topaz<buyshop,fashionstore,handcrafted,kawaiishop,supersale,theshop,0am,0g0,0j0,0t0,mydns,pgw,wjg,usercontent,angry,babyblue,babymilk,backdrop,bambina,bitter,blush,boo,boy,boyfriend,but,candypop,capoo,catfood,cheap,chicappa,chillout,chips,chowder,chu,ciao,cocotte,coolblog,cranky,cutegirl,daa,deca,deci,digick,egoism,fakefur,fem,flier,floppy,fool,frenchkiss,girlfriend,girly,gloomy,gonna,greater,hacca,heavy,her,hiho,hippy,holy,hungry,icurus,itigo,jellybean,kikirara,kill,kilo,kuron,littlestar,lolipopmc,lolitapunk,lomo,lovepop,lovesick,main,mods,mond,mongolian,moo,namaste,nikita,nobushi,noor,oops,parallel,parasite,pecori,peewee,penne,pepper,perma,pigboat,pinoko,punyu,pupu,pussycat,pya,raindrop,readymade,sadist,schoolbus,secret,staba,stripper,sub,sunnyday,thick,tonkotsu,under,upper,velvet,verse,versus,vivian,watson,weblike,whitesnow,zombie,blogspot,hateblo,hatenablog,hatenadiary,2-d,bona,crap,daynight,eek,flop,halfmoon,jeez,matrix,mimoza,netgamers,nyanta,o0o0,rdy,rgr,rulez,sakurastorage>isk01>s3<isk02>s3<<saloon,sblo,skr,tank,uh-oh,undo,webaccel>rs,user<websozai,xii<vc>gv>d<0e,mydns<eus>party>user<<link>myfritz,cyon,nftstorage>ipfs<mypep,dweb>*<<ws>advisor>*<cloud66,dyndns,mypets<cloud>banzai>*<elementor,encoway>eu<statics>*<ravendb,axarnet>es-1<diadem,jelastic>vip<jele,jenv-aruba>aruba>eur>it1<<it1<keliweb>cs<oxa>tn,uk<primetel>uk<reclaim>ca,uk,us<trendhosting>ch,de<jotelulu,kuleuven,linkyard,magentosite>*<observablehq,perspecta,vapor,on-rancher>*<scw>baremetal>fr-par-1,fr-par-2,nl-ams-1<fr-par>cockpit,fnc>functions<k8s>nodes<s3,s3-website,whm<instances>priv,pub<k8s,nl-ams>cockpit,k8s>nodes<s3,s3-website,whm<pl-waw>cockpit,k8s>nodes<s3,s3-website<scalebook,smartlabeling<servebolt,onstackit>runs<sensiosite>*<trafficplex,unison-services,urown,voorloper,zap<ec>base,official<shop>base,hoplix,barsy,barsyonline<gay>pages<la>bnr<sh>bip,hashbang,platform>ent,eu,us<now<je>of<ch>square7,cloudns,cloudscale>cust,lpg>objects<rma>objects<<blogspot,flow>ae>alp1<appengine<linkyard-cloud,gotdns,dnsking,123website,myspreadshop,firenet>*,svc>*<<12hp,2ix,4lima,lima-city<de>bplaced,square7,com,cosidns>dyn<dnsupdater,dynamisches-dns,internet-dns,l-o-g-i-n,ddnss>dyn,dyndns<dyn-ip24,dyndns1,home-webserver>dyn<myhome-server,dnshome,fuettertdasnetz,isteingeek,istmein,lebtimnetz,leitungsen,traeumtgerade,frusky>*<goip,blogspot,xn--gnstigbestellen-zvb,xn--gnstigliefern-wob,hs-heilbronn>it>pages<<dyn-berlin,in-berlin,in-brb,in-butter,in-dsl,in-vpn,iservschule,mein-iserv,schulplattform,schulserver,test-iserv,keymachine,git-repos,lcube-server,svn-repos,barsy,123webseite,logoip,firewall-gateway,my-gateway,my-router,spdns,speedpartner>customer<myspreadshop,taifun-dns,12hp,2ix,4lima,lima-city,dd-dns,dray-dns,draydns,dyn-vpn,dynvpn,mein-vigor,my-vigor,my-wan,syno-ds,synology-diskstation,synology-ds,uberspace>*<virtual-user,virtualuser,community-pro,diskussionsbereich<hr>brendly>shop<blogspot,free<rs>brendly>shop<blogspot,ua,barsy,ox<am>radio,blogspot<fm>radio,user>*<<uk>co>bytemark>dh,vm<blogspot,layershift>j<barsy,barsyonline,retrosnub>cust<nh-serv,no-ip,wellbeingzone,adimo,myspreadshop<gov>api,campaign,service<conn,copro,hosp,independent-commission,independent-inquest,independent-inquiry,independent-panel,independent-review,public-inquiry,royal-commission,pymnt,org>glug,lug,lugs,affinitylottery,raffleentry,weeklylottery<barsy,nimsite<site>canva>my>*<<cloudera>*<convex,cyon,fnwk,folionetwork,fastvps,jele,jouwweb,lelux,loginline,barsy,notion,omniwe,opensocial,madethis,platformsh>*<tst>*<byen,srht,novecore,wpsquared<ac>drr,feedback,forms<ai>uwu,framer<co>carrd,crd,otap>*<com>blogspot<leadpages,lpages,mypi,n4t,xmit>*<firewalledreplit>id<repl>id<supabase<mp>ju<cz>contentproxy9>rsc<realm,e4,blogspot,co,metacentrum>cloud>*<custom<muni>cloud>flt,usr<<<bz>za,mydns,gsj<se>com,blogspot,conf,iopsys,123minsida,itcouldbewor,myspreadshop<group>discourse<team>discourse,jelastic<cc>cleverapps,cloudns,ftpaccess,game-server,myphotos,scrapping,twmail,csx,fantasyleague,spawn>instances<<tech>cleverapps<asia>cloudns,daemon,dix<be>cloudns,webhosting,blogspot,interhostsolutions>cloud<kuleuven>ezproxy<123website,myspreadshop,transurl>*<<cl>cloudns,blogspot<club>cloudns,jele,barsy<cx>cloudns,ath,info,assessments,calculators,funnels,paynow,quizzes,researched,tests<in>cloudns,blogspot,barsy,web,supabase<info>cloudns,dynamic-dns,barrel-of-knowledge,barrell-of-knowledge,dyndns,for-our,groks-the,groks-this,here-for-more,knowsitall,selfip,webhop,barsy,mayfirst,dvrcam,ilovecollege,no-ip,forumz,nsupdate,dnsupdate,v-info<nz>cloudns,co>blogspot<<ph>cloudns<pw>cloudns,x443<me>c66,craft,daplie>localhost<edgestack,filegear,glitch,filegear-sg,lohmus,barsy,mcdir,mcpe,brasilia,ddns,dnsfor,hopto,loginto,noip,webhop,soundcast,tcp4,vp4,diskstation,dscloud,i234,myds,synology,transip>site<yombo,nohost<zone>cloud66,hs,triton>*<stackit,lima<host>cloudaccess,freesite,easypanel,fastvps,myfast,tempurl,wpmudev,jele,mircloud,wp2,half<gdn>cnpy<nl>co,hosting-cluster,blogspot,gov,khplay,123website,myspreadshop,transurl>*<cistron,demon<no>co,blogspot,123hjemmeside,myspreadshop<ru>ac,edu,gov,int,mil,test,eurodir,adygeya,bashkiria,bir,cbg,com,dagestan,grozny,kalmykia,kustanai,marine,mordovia,msk,mytis,nalchik,nov,pyatigorsk,spb,vladikavkaz,vladimir,blogspot,na4u,mircloud,regruhosting>jelastic<myjino>hosting>*<landing>*<spectrum>*<vps>*<<cldmail>hb<mcdir>vps<mcpre,net,org,pp,lk3,ras<email>crisp>on<tawk>p<tawkto>p<<dk>biz,co,firm,reg,store,blogspot,123hjemmeside,myspreadshop<earth>dapps>*,bzz>*<<<kg>us<id>my>rss>*<<flap,co>blogspot<forte<solutions>diher>*<<th>online,shop<fi>dy,blogspot,xn--hkkinen-5wa,iki,cloudplatform>fi<datacenter>demo,paas<kapsi,123kotisivu,myspreadshop<name>her>forgot<his>forgot<<nu>merseine,mine,shacknet,enterprisecloud<tv>better-than,dyndns,on-the-web,worse-than,from,sakura<rocks>myddns,stackit,lima-city,webspace<xyz>blogsite,localzone,crafting,zapto,telebit>*<<one>onred>staging<kin>*<service,homelink<tw>com>mymailer<url,mydns,blogspot<camp>emf>at<<ht>rt<cool>elementor,de<fr>en-root,fbx-os,fbxos,freebox-os,freeboxos,blogspot,goupile,123siteweb,on-web,chirurgiens-dentistes-en-france,dedibox,aeroport,avocat,chambagri,chirurgiens-dentistes,experts-comptables,medecin,notaires,pharmacien,port,veterinaire,myspreadshop,ynh<su>abkhazia,adygeya,aktyubinsk,arkhangelsk,armenia,ashgabad,azerbaijan,balashov,bashkiria,bryansk,bukhara,chimkent,dagestan,east-kazakhstan,exnet,georgia,grozny,ivanovo,jambyl,kalmykia,kaluga,karacol,karaganda,karelia,khakassia,krasnodar,kurgan,kustanai,lenug,mangyshlak,mordovia,msk,murmansk,nalchik,navoi,north-kazakhstan,nov,obninsk,penza,pokrovsk,sochi,spb,tashkent,termez,togliatti,troitsk,tselinograd,tula,tuva,vladikavkaz,vladimir,vologda<space>myfast,heiyu,app-ionos,uber,xs4all<media>framer<photos>framer<website>framer<wiki>framer<at>funkfeuer>wien<futurecms>*,ex>*<in>*<<futurehosting,futuremailing,ortsinfo>ex>*<kunden>*<<co>blogspot<biz,info,123webseite,priv,myspreadshop,12hp,2ix,4lima,lima-city<ms>lab,minisite<work>corpnet<community>nog,ravendb,myforum<ro>co,shop,blogspot,barsy<design>graphic,bss<ae>blogspot<al>blogspot<ar>com>blogspot<<au>com>blogspot,cloudlets>mel<myspreadshop<<ba>blogspot,rs<bg>blogspot,barsy<bj>blogspot<br>com>blogspot,simplesite<leg>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<<by>com>blogspot<mycloud,mediatech<cf>blogspot<cv>blogspot<cy>com>blogspot,scaleforce>j<<<ee>com>blogspot<<eg>com>blogspot<<es>com>blogspot<123miweb,myspreadshop<goog>cloud,translate,usercontent>*<<gr>blogspot,barsy,simplesite<hk>blogspot,secaas,inc,ltd<hu>blogspot<ie>blogspot,myspreadshop<il>co>blogspot,ravpage,mytabit,tabitorder<<is>blogspot<ke>co>blogspot<<kr>blogspot<li>blogspot,caa<lt>blogspot<lu>blogspot,123website<md>blogspot,ir<mk>blogspot<mr>blogspot<mt>com>blogspot<<mx>blogspot<my>blogspot<ng>com>blogspot<col,firm,gen,ltd,ngo<pe>blogspot<pt>blogspot,123paginaweb<qa>blogspot<re>blogspot,can<sg>blogspot,enscaled<sk>blogspot<sn>blogspot<td>blogspot<tr>com>blogspot<<ug>blogspot<uy>com>blogspot<<vn>blogspot<za>co>blogspot<<digital>cloudapps>london<<ci>fin<run>hs,development,ravendb,servers,build>*<code>*<database>*<migration>*<onporter,repl,stackit,val>express,web<wix<st>helioho,kirara,noho<pub>id>*<kin>*<barsy<gl>biz<scot>edu,gov>service<<so>sch,surveys<kz>jcloud,kazteleport>upaas<<tn>orangecloud<gg>kaas,stackit,panel>daemon<<systems>knightpoint<events>koobin,co<direct>libp2p<business>co<education>co<financial>co<place>co<technology>co<bs>we<services>loginline<menu>barsy,barsyonline<mobi>barsy,dscloud<store>barsy,sellfy,shopware,storebase<support>barsy<health>hra<casa>nabu>ui<<pizza>ngrok<news>noticeable<top>now-dns,ntdll,wadl>*<<ovh>nerdpol<mn>nyc<ong>obl<lol>omg<hosting>opencraft<orange>tech<pm>own,name<codes>owo>*<<lc>oy<games>pley,sheezy<bn>co<today>prequalifyme<builders>cloudsite<basketball>aus,nz<edu>rit>git-pages<<xn--p1acf>xn--90amc,xn--j1aef,xn--j1ael8b,xn--h1ahn,xn--j1adp,xn--c1avg,xn--80aaa0cvac,xn--h1aliz,xn--90a1af,xn--41a<mom>ind<farm>storj<pictures>1337<rip>clan<tf>sch<wf>biz,sch<yt>org<management>router<academy>official<faith>ybo<party>ybo<review>ybo<science>ybo<trade>ybo\";","export class ScramjetHeaders {\n\theaders = {};\n\n\tset(key: string, v: string) {\n\t\tthis.headers[key.toLowerCase()] = v;\n\t}\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\nimport { URLMeta } from \"./url\";\n\nexport function rewriteWorkers(\n\tjs: string | ArrayBuffer,\n\ttype: string,\n\turl: string,\n\tmeta: URLMeta\n) {\n\tlet str = \"\";\n\n\tconst script = (script) => {\n\t\tif (type === \"module\") {\n\t\t\tstr += `import \"${$scramjet.config.files[script]}\"\\n`;\n\t\t} else {\n\t\t\tstr += `importScripts(\"${$scramjet.config.files[script]}\");\\n`;\n\t\t}\n\t};\n\n\tscript(\"wasm\");\n\tscript(\"shared\");\n\tstr += `self.$scramjet.config = ${JSON.stringify($scramjet.config)};`;\n\tscript(\"client\");\n\n\tlet rewritten = rewriteJs(js, url, meta);\n\tif (rewritten instanceof Uint8Array) {\n\t\trewritten = new TextDecoder().decode(rewritten);\n\t}\n\n\tstr += rewritten;\n\n\t// dbg.log(\"Rewrite\", type, str);\n\n\treturn str;\n}\n","// thnank you node unblocker guy\nimport parse from \"set-cookie-parser\";\n\nexport type Cookie = {\n\tname: string;\n\tvalue: string;\n\tpath?: string;\n\texpires?: string;\n\tmaxAge?: number;\n\tdomain?: string;\n\tsecure?: boolean;\n\thttpOnly?: boolean;\n\tsameSite?: \"strict\" | \"lax\" | \"none\";\n};\n\nexport class CookieStore {\n\tprivate cookies: Record<string, Cookie> = {};\n\n\tsetCookies(cookies: string[], url: URL) {\n\t\tfor (const str of cookies) {\n\t\t\tconst parsed = parse(str);\n\t\t\tconst domain = parsed.domain;\n\t\t\tconst sameSite = parsed.sameSite;\n\t\t\tconst cookie: Cookie = {\n\t\t\t\tdomain,\n\t\t\t\tsameSite,\n\t\t\t\t...parsed[0],\n\t\t\t};\n\n\t\t\tif (!cookie.domain) cookie.domain = \".\" + url.hostname;\n\t\t\tif (!cookie.domain.startsWith(\".\")) cookie.domain = \".\" + cookie.domain;\n\t\t\tif (!cookie.path) cookie.path = \"/\";\n\t\t\tif (!cookie.sameSite) cookie.sameSite = \"lax\";\n\t\t\tif (cookie.expires) cookie.expires = cookie.expires.toString();\n\n\t\t\tconst id = `${cookie.domain}@${cookie.path}@${cookie.name}`;\n\t\t\tthis.cookies[id] = cookie;\n\t\t}\n\t}\n\n\tgetCookies(url: URL, fromJs: boolean): string {\n\t\tconst now = new Date();\n\t\tconst cookies = Object.values(this.cookies);\n\n\t\tconst validCookies: Cookie[] = [];\n\n\t\tfor (const cookie of cookies) {\n\t\t\tif (cookie.expires && new Date(cookie.expires) < now) {\n\t\t\t\tdelete this.cookies[`${cookie.domain}@${cookie.path}@${cookie.name}`];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (cookie.secure && url.protocol !== \"https:\") continue;\n\t\t\tif (cookie.httpOnly && fromJs) continue;\n\t\t\tif (!url.pathname.startsWith(cookie.path)) continue;\n\n\t\t\tif (cookie.domain.startsWith(\".\")) {\n\t\t\t\tif (!url.hostname.endsWith(cookie.domain.slice(1))) continue;\n\t\t\t}\n\n\t\t\tvalidCookies.push(cookie);\n\t\t}\n\n\t\treturn validCookies\n\t\t\t.map((cookie) => `${cookie.name}=${cookie.value}`)\n\t\t\t.join(\"; \");\n\t}\n\n\tload(cookies: string) {\n\t\tif (typeof cookies === \"object\") return cookies;\n\t\tthis.cookies = JSON.parse(cookies);\n\t}\n\n\tdump(): string {\n\t\treturn JSON.stringify(this.cookies);\n\t}\n}\n"],"names":["parsedIcannTrie","parsedPrivateTrie","defaultParseOptions","isNonEmptyString","str","parseString","setCookieValue","options","parts","parsed","parseNameValuePair","nameValuePairStr","name","value","nameValueArr","Object","decodeURIComponent","e","console","cookie","part","sides","key","Date","parseInt","parse","input","sch","Array","cookies","module","cookiesString","start","ch","lastComma","nextStart","cookiesSeparatorFound","cookiesStrings","pos","skipWhitespace","self","COMMITHASH","VERSION","flagEnabled","$scramjet","flag","url","regex","partialflags","RegExp","addToExternrefTable0","obj","idx","handleError","f","args","cachedTextDecoder","TextDecoder","Error","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","getStringFromWasm0","ptr","len","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","arg","view","buf","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","isLikeNone","x","takeFromExternrefTable0","__wbg_load","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","arg2","arg3","arguments","Reflect","URL","Function","ptr1","c","crypto","len1","global","globalThis","window","v","table","v0","getArrayU8FromWasm0","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","atob","decoder","rewriteJs","js","meta","text","rewriteJsNaiive","rewriteJsWrapper","out","before","performance","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","err","err1","after","errors","duration","error","timespan","overhead","Number","tryCanParseURL","origin","unrewriteBlob","blob","location","rewriteUrl","base","unrewriteUrl","realUrl","prefixed","rewriteCss","css","handleCss","type","String","match","encodedUrl","importStatement","firstQuote","endQuote","Uint16Array","decodeMap","Map","fromCodePoint","codePoint","output","replaceCodePoint","_a","CharCodes","isNumber","BinTrieFlags","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","decodeMode","end","digitCount","Math","startIdx","char","lastCp","expectedLength","current","valueLength","determineBranch","nodeIdx","branchCount","jumpOffset","lo","hi","mid","midVal","isEntityInAttributeInvalidEnd","result","consumed","getDecoder","lastIndex","htmlDecoder","xmlDecoder","isWhitespace","isEndOfTagSection","State","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","quote","length","endIndex","formTags","Set","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","_b","_c","_d","_e","_f","data","impliesClose","element","isImplied","_g","_h","index","isOpenImplied","_j","_k","slice","ElementType","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node","parent","prev","next","recursive","cloneNode","DataNode","ProcessingInstruction","NodeWithChildren","children","Document","Element","attribs","node","elem","cloneChildren","clone","child","instruction","childs","i","defaultOpts","callback","elementCB","parser","lastNode","previousSibling","xmlCodeMap","lastIdx","getEscaper","map","htmlReplacer","encodeHTMLTrieRe","regExp","htmlTrie","nextChar","getCodePoint","EntityLevel","EncodingMode","elementNames","val","attributeNames","unencodedElements","replaceQuotes","singleTag","render","nodes","renderNode","renderDirective","renderComment","renderCdata","renderTag","opts","foreignModeIntegrationPoints","foreignElements","tag","formatAttributes","attributes","encode","renderText","getText","isTag","isCDATA","isText","hasChildren","isComment","innerText","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","Checks","DocumentPosition","getMediaElements","where","getElementsByTagName","media","getOneElement","tagName","recurse","textContent","addConditionally","prop","isValidFeed","encoder","rewriteHtml","html","cookieStore","fromTop","handler","DomHandler","dom","Parser","traverseParsedHtml","rule","htmlRules","attr","sel","eventAttributes","bytesToBase64","contentArray","childNode","head","findhead","dump","JSON","injected","script","src","base64Injected","rewriteSrcset","srcset","rewrittenSources","sources","source","descriptors","rewrittenUrl","btoa","byte","cspHeaders","urlHeaders","rewriteLinkHeader","link","MessagePort","WebSocket","t","Promise","MessageChannel","r","setTimeout","TypeError","AggregateError","l","h","p","BroadcastChannel","SharedWorker","s","w","EventTarget","Event","o","MessageEvent","CloseEvent","DOMException","ArrayBuffer","u","y","lookUpTldsInTrie","labels","trie","labelsToCheck","tlds","label","labelLowerCase","word","boundry","v4","v6segment","v6","v46Exact","v4exact","v6exact","flagMap","resultToMatch","string","timeout","function_","wrappedFunction","arguments_","regexp","flags","clonedRegexp","textEncoder","Validation","ValidationErrorType","SanitizationResultType","createNoHostnameError","createDomainMaxLengthError","domain","createLabelMinLengthError","column","createLabelMaxLengthError","createLabelInvalidCharacterError","invalidCharacter","createLastLabelInvalidError","sanitize","inputTrimmedAsIp","ipVersionOfInput","ipVersion","canonicalInput","lastChar","octets","validation","labelValidationErrors","validateLabels","lastLabel","NODE_TYPE_ROOT","Symbol","NODE_TYPE_CHILD","createRootNode","createOrGetChild","parseTrie","serializedTrie","rootNode","parentNode","addDomain","RESERVED_TOP_LEVEL_DOMAINS","ParseResultType","getAtIndex","array","splitLabelsIntoDomains","parseDomain","hostname","sanitizationResult","icannTlds","privateTlds","indexOfPublicSuffixDomain","indexOfIcannDomain","BareClient","k","g","Headers","n","BareMuxConnection","m","d","ReadableStream","ScramjetHeaders","rewriteBlob","unrewriteCss","unrewriteHtml","traverse","rewriteHeaders","rawHeaders","headers","header","rewriteWorkers","rewritten","CookieStore","sameSite","id","fromJs","now","validCookies","document"],"mappings":"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A,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,WACH,CAAC,GAAG,CAAC,AAACuI,GAAQ,CAACA,EAAI,WAAW,GAAIA,EAAI,GAC1BC,GAAiB,IAAIxI,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,aACH,CAAC,GAAG,CAAC,AAACuI,GAAQ,CAACA,EAAI,WAAW,GAAIA,EAAI,GCvFjCE,GAAoB,IAAI9E,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,WACH,EACD,SAAS+E,GAAczS,CAAK,EACxB,OAAOA,EAAM,OAAO,CAAC,KAAM,SAC/B,CA+BA,IAAM0S,GAAY,IAAIhF,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,MACH,EASM,SAASiF,GAAOhC,CAAI,CAAEjR,EAAU,CAAC,CAAC,EACrC,IAAMkT,EAAQ,WAAYjC,EAAOA,EAAO,CAACA,EAAK,CAC1CzG,EAAS,GACb,IAAK,IAAIgH,EAAI,EAAGA,EAAI0B,EAAM,MAAM,CAAE1B,IAC9BhH,GAAU2I,AAKlB,SAAoBlC,CAAI,CAAEjR,CAAO,EAC7B,OAAQiR,EAAK,IAAI,EACb,KAAK,GACD,OAAOgC,GAAOhC,EAAK,QAAQ,CAAEjR,EAEjC,MAAK,GACL,KAAK,GACD,OAAOoT,AAkE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oQ,EAAY,MAAM,CAAG,EACzB,CAAC,EAAEC,EAAa,CAAC,EAAED,EAAY,IAAI,CAAC,KAAK,CAAC,CAC1CC,CACJ,GAEwB,IAAI,CAAC,KAC9B,CAQA,SAASjB,GAAcvR,CAAiB,EAKvC,OAAOyS,KAJWvW,MAAM,IAAI,CAAC8D,EAAO,AAAC0S,GACpChO,OAAO,aAAa,CAACgO,IACpB,IAAI,CAAC,IAGR,CACA,IAAMpB,GAAkB,CACvB,mBACA,UACA,gBACA,gBACA,iBACA,SACA,WACA,YACA,mBACA,WACA,UACA,UACA,qCACA,gBACA,gBACA,oBACA,cACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,aACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,cACA,eACA,eACA,cACA,aACA,cACA,YACA,eACA,UACA,SACA,YACA,aACA,eACA,UACA,WACA,WACA,4BACA,WACA,YACA,WACA,eACA,YACA,WACA,YACA,eACA,WACA,iBACA,YACA,uBACA,6BACA,yBACA,wBACA,UACA,aACA,sBACA,uBACA,gBACA,gBACA,qBACA,cACA,kBACA,gBACA,eACA,iBACA,iBACA,gBACA,oBACA,iBACA,uBACA,mBACA,kBACA,oBACA,kBACA,qBACA,SACA,QACA,UACA,cACA,qBACA,uBACA,CChaKqB,GAAa,CAClB,+BACA,6BACA,+BACA,0BACA,sCACA,YACA,iBACA,mBACA,4BACA,4BACA,yBACA,qBACA,kBACA,oCACA,eACA,mBAGA,kBACA,CAEKC,GAAa,CAAC,WAAY,mBAAoB,UAAU,CAE9D,SAASC,GAAkBC,CAAY,CAAE3Q,CAAa,EACrD,OAAO2Q,EAAK,OAAO,CAAC,WAAY,AAACnO,GAAUV,EAAWU,EAAOxC,GAC9D,CC9BA,IAAW,GAAEnB,WAAW,KAAK,CAAC,GAAEA,WAAW,YAAY,CAAC,GAAEA,WAAW,YAAY,CAAC,GAAEA,WAAW,SAAS,CAAC,aAAa,CAAC,GAAE+R,YAAY,SAAS,CAAC,WAAW,CAAC,GAAE,CAAC,UAAU,CAA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"}