chemicaljs 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"scramjet.shared.js","sources":["webpack://@mercuryworkshop/scramjet/./rewriter/out/rewriter.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.0/node_modules/set-cookie-parser/lib/set-cookie.js","webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","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.3/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":["let wasm;\n\nlet WASM_VECTOR_LEN = 0;\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\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\nfunction isLikeNone(x) {\n return x === undefined || x === null;\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\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\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nexport function init() {\n wasm.init();\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_4.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\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_4.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\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.__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_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbg_now_d3cbc9581625f686 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_set_e864d25d9b399c9f = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_1cabf49927794f50 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_5fb7c8066a4a4825 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\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.__wbg_new_e69b5f66fda8f13c = function() {\n const ret = new Object();\n return ret;\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 imports.wbg.__wbindgen_array_new = function() {\n const ret = [];\n return ret;\n };\n imports.wbg.__wbindgen_array_push = function(arg0, arg1) {\n arg0.push(arg1);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = arg1.stack;\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_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbindgen_is_object = function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) {\n const ret = arg0.crypto;\n return ret;\n };\n imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) {\n const ret = arg0.process;\n return ret;\n };\n imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) {\n const ret = arg0.versions;\n return ret;\n };\n imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) {\n const ret = arg0.node;\n return ret;\n };\n imports.wbg.__wbindgen_is_string = function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n };\n imports.wbg.__wbg_require_cca90b1a94a0255b = function() { return handleError(function () {\n const ret = module.require;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) {\n const ret = arg0.msCrypto;\n return ret;\n };\n imports.wbg.__wbg_newwithlength_76462a666eca145f = function(arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return ret;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg_get_ef828680c64da212 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_self_bf91bf94d9e04084 = function() { return handleError(function () {\n const ret = self.self;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_window_52dd9f07d03fd5f8 = function() { return handleError(function () {\n const ret = window.window;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_globalThis_05c129bf37fcf1be = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_global_3eca19bb09e9c484 = function() { return handleError(function () {\n const ret = global.global;\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_1ede4bf2ebbaaf43 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_call_a9ef466721e824f2 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_3bfa248576352471 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbg_buffer_ccaed51a635d8a2d = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_7e3eb787208af730 = function(arg0, arg1, arg2) {\n const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { return handleError(function (arg0, arg1) {\n arg0.randomFillSync(arg1);\n }, arguments) };\n imports.wbg.__wbg_subarray_975a06f9dbd16995 = function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { return handleError(function (arg0, arg1) {\n arg0.getRandomValues(arg1);\n }, arguments) };\n imports.wbg.__wbg_new_fec2611eb9180f95 = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_ec2fcf81bc573fd9 = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\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.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_4;\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\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:22,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\nif (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\nwasm.__wbindgen_start(thread_stack_size);\nreturn 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('rewriter_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]), // `</script`\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n TextareaEnd: new Uint8Array([\n 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n ]), // `</textarea`\n};\nexport default class Tokenizer {\n constructor({ xmlMode = false, decodeEntities = true, }, cbs) {\n this.cbs = cbs;\n /** The current state the tokenizer is in. */\n this.state = State.Text;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this.index = 0;\n /** The start of the last entity. */\n this.entityStart = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n this.isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** The offset of the current buffer. */\n this.offset = 0;\n this.currentSequence = undefined;\n this.sequenceIndex = 0;\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => 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 <title> 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 options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\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","export default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math.min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tconst fn = console[severity] || console.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n};\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.defaultFlags[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","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\tinit,\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/out/rewriter.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\ninit();\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\tif (typeof input === \"string\") {\n\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t} else {\n\t\tout = rewrite_js_from_arraybuffer(\n\t\t\tnew Uint8Array(input),\n\t\t\tmeta.base.href,\n\t\t\turl || \"(unknown)\",\n\t\t\t$scramjet\n\t\t);\n\t}\n\tconst { js, errors, duration } = out;\n\n\t// TODO: maybe make this a scram flag?\n\tif (true) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\t// TODO: maybe make this a scram flag?\n\tif (true) {\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\tconsole.log(`oxc rewrite was ${timespan} (${duration}ms)`);\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.href;\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" + rewriteJs(url.slice(\"javascript:\".length), null, 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\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(new URL(url, base).href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.href;\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, \"&quot;\"],\n [38, \"&amp;\"],\n [39, \"&apos;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\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. `&#xfc;`) 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. `&#xfc;`).\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, \"&quot;\"],\n [38, \"&amp;\"],\n [160, \"&nbsp;\"],\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, \"&amp;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n [160, \"&nbsp;\"],\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. `&#xfc;`) 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. `&#xfc;`) 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, \"&quot;\");\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\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\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,\" + btoa(injected)),\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 == \"data-scramjet-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(\"data-scramjet-\")) {\n\t\t\t\t\tnode.attribs[\"data-scramjet-\".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\"image\",\n\t\t\t\"iframe\",\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\"],\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: () => null,\n\n\t\t// csp stuff that must be deleted\n\t\tnonce: \"*\",\n\t\tintegrity: [\"script\", \"link\"],\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[`data-scramjet-${attr}`] = value;\n\t\t\t\t\t}\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[`data-scramjet-script-source-src`] = btoa(js);\n\t\tnode.attribs[\"data-scramjet-script-source-src\"] = bytesToBase64(\n\t\t\tnew TextEncoder().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 urls = srcset.split(/ [0-9]+x,? ?/g);\n\tif (!urls) return \"\";\n\tconst sufixes = srcset.match(/ [0-9]+x,? ?/g);\n\tif (!sufixes) return \"\";\n\tconst rewrittenUrls = urls.map((url, i) => {\n\t\tif (url && sufixes[i]) {\n\t\t\treturn rewriteUrl(url, meta) + sufixes[i];\n\t\t}\n\t});\n\n\treturn rewrittenUrls.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}\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,s=globalThis.localStorage,a=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 s=new r(e,\"bare-mux-worker\");return t&&a.addEventListener(\"message\",(t=>{if(\"getPort\"===t.data.type&&t.data.port){console.debug(\"bare-mux: recieved request for port from sw\");const s=new r(e,\"bare-mux-worker\");o.call(t.data.port,s.port,[s.port])}})),s.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),s[\"bare-mux-path\"]=e}else{if(!SharedWorker)throw new Error(\"Unable to get a channel to the SharedWorker.\");{const e=s[\"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,s=[r.port2,...t||[]],a=new Promise(((e,t)=>{r.port1.onmessage=r=>{const s=r.data;\"error\"===s.type?t(s.error):e(s)}}));return o.call(this.port,{message:e,port:r.port2},s),await a}}class w extends EventTarget{constructor(e,t=[],r,s){super(),this.protocols=t,this.readyState=n.CONNECTING,this.url=e.toString(),this.protocols=t;const a=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?a(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(),origin:origin,protocols:t,requestHeaders:s,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,s=t.data.message;if(\"fetch\"===s.type)try{e.ready||await e.init(),await async function(e,t,r){const s=await r.request(new URL(e.fetch.remote),e.fetch.method,e.fetch.body,e.fetch.headers,null);if(!d()&&s.body instanceof ReadableStream){const e=new Response(s.body);s.body=await e.arrayBuffer()}s.body instanceof ReadableStream||s.body instanceof ArrayBuffer?o.call(t,{type:\"fetch\",fetch:s},[s.body]):o.call(t,{type:\"fetch\",fetch:s})}(s,r,e)}catch(e){u(r,e,\"fetch\")}else if(\"websocket\"===s.type)try{e.ready||await e.init(),await async function(e,t,r){const[s,a]=r.connect(new URL(e.websocket.url),e.websocket.origin,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?s(e.data.data):\"close\"===e.data.type&&a(e.data.closeCode,e.data.closeReason)},o.call(t,{type:\"websocket\"})}(s,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,s){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.`);s=s||{};return new w(e,t,this.worker,s)}async fetch(e,r){const s=new Request(e,r),a=r?.headers||s.headers,o=a instanceof Headers?Object.fromEntries(a):a,n=s.body;let c=new URL(s.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.rawResponse=e,r}for(let e=0;;e++){\"host\"in o?o.host=c.host:o.Host=c.host;let t=(await this.worker.sendMessage({type:\"fetch\",fetch:{remote:c.toString(),method:s.method,headers:o,body:n||void 0}},n?[n]:[])).fetch,a=new Response(y.includes(t.status)?void 0:t.body,{headers:new Headers(t.headers),status:t.status,statusText:t.statusText});a.rawHeaders=t.headers,a.rawResponse=new Response(t.body),a.finalURL=c.toString();const i=r?.redirect||s.redirect;if(!b.includes(a.status))return a;switch(i){case\"follow\":{const t=a.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 a}}}}console.debug(\"bare-mux: running v2.1.3 (build 83330ed)\");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\nconst clientscripts = [\"wasm\", \"shared\", \"client\"];\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\tconsole.log(str);\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\tdbg.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":["wasm","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","severity","message","args","old","Error","_","stack","fmt","i","Math","self","COMMITHASH","VERSION","flagEnabled","$scramjet","flag","url","regex","partialflags","RegExp","WASM_VECTOR_LEN","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","cachedTextEncoder","TextEncoder","encodeString","arg","view","buf","passStringToWasm0","malloc","realloc","undefined","ptr","len","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","cachedTextDecoder","TextDecoder","getStringFromWasm0","takeFromExternrefTable0","idx","handleError","f","addToExternrefTable0","obj","__wbg_load","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","x","ptr1","isLikeNone","len1","arg2","Reflect","arguments","URL","arg3","v","v0","getArrayU8FromWasm0","deferred0_0","deferred0_1","val","window","globalThis","global","Function","debugString","className","type","description","length","debug","builtInMatches","toString","JSON","table","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","atob","c","decoder","rewriteJs","js","meta","text","rewriteJsNaiive","rewriteJsWrapper","out","errors","duration","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","error","timespan","unrewriteBlob","blob","location","rewriteUrl","base","unrewriteUrl","prefixed","tryCanParseURL","origin","rewriteCss","css","handleCss","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","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","Number","sequence","lower","quote","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","defaultOpts","callback","elementCB","parser","lastNode","previousSibling","xmlCodeMap","lastIdx","getEscaper","map","htmlReplacer","encodeHTMLTrieRe","regExp","htmlTrie","nextChar","getCodePoint","EntityLevel","EncodingMode","elementNames","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","rewriteHtml","html","cookieStore","fromTop","handler","DomHandler","err","dom","Parser","traverseParsedHtml","rule","htmlRules","attr","sel","bytesToBase64","btoa","byte","contentArray","childNode","head","findhead","dump","injected","script","src","rewriteSrcset","srcset","urls","sufixes","rewrittenUrls","cspHeaders","urlHeaders","rewriteLinkHeader","link","MessagePort","WebSocket","t","Promise","MessageChannel","r","setTimeout","TypeError","AggregateError","l","s","h","p","BroadcastChannel","SharedWorker","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","dbg","CookieStore","sameSite","id","fromJs","now","validCookies","document"],"mappings":"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,CAAC,KAElC,AAAC,SAAUC,CAAY,EAKnBA,CAAY,CAACA,EAAa,IAAO,CAAG,EAAE,CAAG,OAMzCA,CAAY,CAACA,EAAa,KAAQ,CAAG,EAAE,CAAG,QAK1CA,CAAY,CAACA,EAAa,SAAY,CAAG,EAAE,CAAG,YAK9CA,CAAY,CAACA,EAAa,SAAY,CAAG,EAAE,CAAG,YAK9CA,CAAY,CAACA,EAAa,IAAO,CAAG,EAAE,CAAG,MAC7C,EAAG,GAAiB,GAAe,CAAC,IgBvC7B,IAAMC,GAAe,IAAIpI,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,WACH,CAAC,GAAG,CAAC,AAACnE,GAAQ,CAACA,EAAI,WAAW,GAAIA,EAAI,GAC1BwM,GAAiB,IAAIrI,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,AAACnE,GAAQ,CAACA,EAAI,WAAW,GAAIA,EAAI,GCvFjCyM,GAAoB,IAAI5E,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,WACH,EACD,SAAS6E,GAAchT,CAAK,EACxB,OAAOA,EAAM,OAAO,CAAC,KAAM,SAC/B,CA+BA,IAAMiT,GAAY,IAAI9E,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,O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"}