{"version":3,"file":"xxhash-wasm.js","sources":["../src/index.js"],"sourcesContent":["// The .wasm is filled in by the build process, so the user doesn't need to load\n// xxhash.wasm by themselves because it's part of the bundle. Otherwise it\n// couldn't be distributed easily as the user would need to host xxhash.wasm\n// and then fetch it, to be able to use it.\n// eslint-disable-next-line no-undef\nconst wasmBytes = new Uint8Array(WASM_PRECOMPILED_BYTES);\n\nconst u32_BYTES = 4;\nconst u64_BYTES = 8;\n\n// The xxh32 hash state struct:\nconst XXH32_STATE_SIZE_BYTES =\n u32_BYTES + // total_len\n u32_BYTES + // large_len\n u32_BYTES * 4 + // Accumulator lanes\n u32_BYTES * 4 + // Internal buffer\n u32_BYTES + // memsize\n u32_BYTES; // reserved\n\n// The xxh64 hash state struct:\nconst XXH64_STATE_SIZE_BYTES =\n u64_BYTES + // total_len\n u64_BYTES * 4 + // Accumulator lanes\n u64_BYTES * 4 + // Internal buffer\n u32_BYTES + // memsize\n u32_BYTES + // reserved32\n u64_BYTES; // reserved64\n\nasync function xxhash() {\n const {\n instance: {\n exports: {\n mem,\n xxh32,\n xxh64,\n init32,\n update32,\n digest32,\n init64,\n update64,\n digest64,\n },\n },\n } = await WebAssembly.instantiate(wasmBytes);\n\n let memory = new Uint8Array(mem.buffer);\n // Grow the wasm linear memory to accommodate length + offset bytes\n function growMemory(length, offset) {\n if (mem.buffer.byteLength < length + offset) {\n const extraPages = Math.ceil(\n // Wasm pages are spec'd to 64K\n (length + offset - mem.buffer.byteLength) / (64 * 1024)\n );\n mem.grow(extraPages);\n // After growing, the original memory's ArrayBuffer is detached, so we'll\n // need to replace our view over it with a new one over the new backing\n // ArrayBuffer.\n memory = new Uint8Array(mem.buffer);\n }\n }\n\n // The h32 and h64 streaming hash APIs are identical, so we can implement\n // them both by way of a templated call to this generalized function.\n function create(size, seed, init, update, digest, finalize) {\n // Ensure that we've actually got enough space in the wasm memory to store\n // the state blob for this hasher.\n growMemory(size);\n\n // We'll hold our hashing state in this closure.\n const state = new Uint8Array(size);\n memory.set(state);\n init(0, seed);\n\n // Each time we interact with wasm, it may have mutated our state so we'll\n // need to read it back into our closed copy.\n state.set(memory.slice(0, size));\n\n return {\n update(input) {\n memory.set(state);\n let length;\n if (typeof input === \"string\") {\n growMemory(input.length * 3, size);\n length = encoder.encodeInto(input, memory.subarray(size)).written;\n } else {\n // The only other valid input type is a Uint8Array\n growMemory(input.byteLength, size);\n memory.set(input, size);\n length = input.byteLength;\n }\n update(0, size, length);\n state.set(memory.slice(0, size));\n return this;\n },\n digest() {\n memory.set(state);\n return finalize(digest(0));\n },\n };\n }\n\n // Logical shift right makes it an u32, otherwise it's interpreted as an i32.\n function forceUnsigned32(i) {\n return i >>> 0;\n }\n\n // BigInts are arbitrary precision and signed, so to get the \"correct\" u64\n // value from the return, we'll need to force that interpretation.\n const u64Max = 2n ** 64n - 1n;\n function forceUnsigned64(i) {\n return i & u64Max;\n }\n\n const encoder = new TextEncoder();\n const defaultSeed = 0;\n const defaultBigSeed = 0n;\n\n function h32(str, seed = defaultSeed) {\n // https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/encodeInto#buffer_sizing\n // By sizing the buffer to 3 * string-length we guarantee that the buffer\n // will be appropriately sized for the utf-8 encoding of the string.\n growMemory(str.length * 3, 0);\n return forceUnsigned32(\n xxh32(0, encoder.encodeInto(str, memory).written, seed)\n );\n }\n\n function h64(str, seed = defaultBigSeed) {\n growMemory(str.length * 3, 0);\n return forceUnsigned64(\n xxh64(0, encoder.encodeInto(str, memory).written, seed)\n );\n }\n\n return {\n h32,\n h32ToString(str, seed = defaultSeed) {\n return h32(str, seed).toString(16).padStart(8, \"0\");\n },\n h32Raw(inputBuffer, seed = defaultSeed) {\n growMemory(inputBuffer.byteLength, 0);\n memory.set(inputBuffer);\n return forceUnsigned32(xxh32(0, inputBuffer.byteLength, seed));\n },\n create32(seed = defaultSeed) {\n return create(\n XXH32_STATE_SIZE_BYTES,\n seed,\n init32,\n update32,\n digest32,\n forceUnsigned32\n );\n },\n h64,\n h64ToString(str, seed = defaultBigSeed) {\n return h64(str, seed).toString(16).padStart(16, \"0\");\n },\n h64Raw(inputBuffer, seed = defaultBigSeed) {\n growMemory(inputBuffer.byteLength, 0);\n memory.set(inputBuffer);\n return forceUnsigned64(xxh64(0, inputBuffer.byteLength, seed));\n },\n create64(seed = defaultBigSeed) {\n return create(\n XXH64_STATE_SIZE_BYTES,\n seed,\n init64,\n update64,\n digest64,\n forceUnsigned64\n );\n },\n };\n}\n\nexport default xxhash;\n"],"names":["wasmBytes","Uint8Array","async","xxhash","instance","exports","mem","xxh32","xxh64","init32","update32","digest32","init64","update64","digest64","WebAssembly","instantiate","memory","buffer","growMemory","length","offset","byteLength","extraPages","Math","ceil","grow","create","size","seed","init","update","digest","finalize","state","set","slice","input","encoder","encodeInto","subarray","written","this","forceUnsigned32","i","u64Max","forceUnsigned64","TextEncoder","defaultBigSeed","h32","str","h64","h32ToString","toString","padStart","h32Raw","inputBuffer","create32","u32_BYTES","h64ToString","h64Raw","create64","u64_BYTES"],"mappings":"AAKA,MAAMA,EAAY,IAAIC,WAAW,CAAA,EAAA,GAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,IAAA,EAAA,GAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,IAAA,EAAA,GAAA,EAAA,IAAA,IAAA,EAAA,GAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAA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"}