yescrypt-wasm
Version:
WebAssembly module for Yescrypt
643 lines (610 loc) • 94.2 kB
JavaScript
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 422:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var yescrypt_wasm = (() => {
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
if (true) _scriptName = _scriptName || __filename;
return (
async function(moduleArg = {}) {
var moduleRtn;
var Module = moduleArg;
var readyPromiseResolve, readyPromiseReject;
var readyPromise = new Promise((resolve, reject) => {
readyPromiseResolve = resolve;
readyPromiseReject = reject
});
var ENVIRONMENT_IS_WEB = typeof window == "object";
var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined";
var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && process.type != "renderer";
if (ENVIRONMENT_IS_NODE) {}
var moduleOverrides = Object.assign({}, Module);
var arguments_ = [];
var thisProgram = "./this.program";
var quit_ = (status, toThrow) => {
throw toThrow
};
var scriptDirectory = "";
function locateFile(path) {
if (Module["locateFile"]) {
return Module["locateFile"](path, scriptDirectory)
}
return scriptDirectory + path
}
var readAsync, readBinary;
if (ENVIRONMENT_IS_NODE) {
var fs = __webpack_require__(896);
var nodePath = __webpack_require__(928);
scriptDirectory = __dirname + "/";
readBinary = filename => {
filename = isFileURI(filename) ? new URL(filename) : filename;
var ret = fs.readFileSync(filename);
return ret
};
readAsync = async (filename, binary = true) => {
filename = isFileURI(filename) ? new URL(filename) : filename;
var ret = fs.readFileSync(filename, binary ? undefined : "utf8");
return ret
};
if (!Module["thisProgram"] && process.argv.length > 1) {
thisProgram = process.argv[1].replace(/\\/g, "/")
}
arguments_ = process.argv.slice(2);
quit_ = (status, toThrow) => {
process.exitCode = status;
throw toThrow
}
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
if (ENVIRONMENT_IS_WORKER) {
scriptDirectory = self.location.href
} else if (typeof document != "undefined" && document.currentScript) {
scriptDirectory = document.currentScript.src
}
if (_scriptName) {
scriptDirectory = _scriptName
}
if (scriptDirectory.startsWith("blob:")) {
scriptDirectory = ""
} else {
scriptDirectory = scriptDirectory.slice(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1)
} {
if (ENVIRONMENT_IS_WORKER) {
readBinary = url => {
var xhr = new XMLHttpRequest;
xhr.open("GET", url, false);
xhr.responseType = "arraybuffer";
xhr.send(null);
return new Uint8Array(xhr.response)
}
}
readAsync = async url => {
if (isFileURI(url)) {
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest;
xhr.open("GET", url, true);
xhr.responseType = "arraybuffer";
xhr.onload = () => {
if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
resolve(xhr.response);
return
}
reject(xhr.status)
};
xhr.onerror = reject;
xhr.send(null)
})
}
var response = await fetch(url, {
credentials: "same-origin"
});
if (response.ok) {
return response.arrayBuffer()
}
throw new Error(response.status + " : " + response.url)
}
}
} else {}
var out = Module["print"] || console.log.bind(console);
var err = Module["printErr"] || console.error.bind(console);
Object.assign(Module, moduleOverrides);
moduleOverrides = null;
if (Module["arguments"]) arguments_ = Module["arguments"];
if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
var wasmBinary = Module["wasmBinary"];
var wasmMemory;
var ABORT = false;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
var runtimeInitialized = false;
var isFileURI = filename => filename.startsWith("file://");
function updateMemoryViews() {
var b = wasmMemory.buffer;
Module["HEAP8"] = HEAP8 = new Int8Array(b);
Module["HEAP16"] = HEAP16 = new Int16Array(b);
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
Module["HEAP32"] = HEAP32 = new Int32Array(b);
Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
Module["HEAP64"] = HEAP64 = new BigInt64Array(b);
Module["HEAPU64"] = HEAPU64 = new BigUint64Array(b)
}
function preRun() {
if (Module["preRun"]) {
if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
while (Module["preRun"].length) {
addOnPreRun(Module["preRun"].shift())
}
}
callRuntimeCallbacks(onPreRuns)
}
function initRuntime() {
runtimeInitialized = true;
wasmExports["e"]()
}
function postRun() {
if (Module["postRun"]) {
if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
while (Module["postRun"].length) {
addOnPostRun(Module["postRun"].shift())
}
}
callRuntimeCallbacks(onPostRuns)
}
var runDependencies = 0;
var dependenciesFulfilled = null;
function addRunDependency(id) {
runDependencies++;
Module["monitorRunDependencies"]?.(runDependencies)
}
function removeRunDependency(id) {
runDependencies--;
Module["monitorRunDependencies"]?.(runDependencies);
if (runDependencies == 0) {
if (dependenciesFulfilled) {
var callback = dependenciesFulfilled;
dependenciesFulfilled = null;
callback()
}
}
}
function abort(what) {
Module["onAbort"]?.(what);
what = "Aborted(" + what + ")";
err(what);
ABORT = true;
what += ". Build with -sASSERTIONS for more info.";
var e = new WebAssembly.RuntimeError(what);
readyPromiseReject(e);
throw e
}
var wasmBinaryFile;
function findWasmBinary() {
return locateFile("yescrypt_wasm.wasm")
}
function getBinarySync(file) {
if (file == wasmBinaryFile && wasmBinary) {
return new Uint8Array(wasmBinary)
}
if (readBinary) {
return readBinary(file)
}
throw "both async and sync fetching of the wasm failed"
}
async function getWasmBinary(binaryFile) {
if (!wasmBinary) {
try {
var response = await readAsync(binaryFile);
return new Uint8Array(response)
} catch {}
}
return getBinarySync(binaryFile)
}
async function instantiateArrayBuffer(binaryFile, imports) {
try {
var binary = await getWasmBinary(binaryFile);
var instance = await WebAssembly.instantiate(binary, imports);
return instance
} catch (reason) {
err(`failed to asynchronously prepare wasm: ${reason}`);
abort(reason)
}
}
async function instantiateAsync(binary, binaryFile, imports) {
if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE) {
try {
var response = fetch(binaryFile, {
credentials: "same-origin"
});
var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);
return instantiationResult
} catch (reason) {
err(`wasm streaming compile failed: ${reason}`);
err("falling back to ArrayBuffer instantiation")
}
}
return instantiateArrayBuffer(binaryFile, imports)
}
function getWasmImports() {
return {
a: wasmImports
}
}
async function createWasm() {
function receiveInstance(instance, module) {
wasmExports = instance.exports;
wasmMemory = wasmExports["d"];
updateMemoryViews();
removeRunDependency("wasm-instantiate");
return wasmExports
}
addRunDependency("wasm-instantiate");
function receiveInstantiationResult(result) {
return receiveInstance(result["instance"])
}
var info = getWasmImports();
if (Module["instantiateWasm"]) {
return new Promise((resolve, reject) => {
Module["instantiateWasm"](info, (mod, inst) => {
receiveInstance(mod, inst);
resolve(mod.exports)
})
})
}
wasmBinaryFile ??= findWasmBinary();
try {
var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
var exports = receiveInstantiationResult(result);
return exports
} catch (e) {
readyPromiseReject(e);
return Promise.reject(e)
}
}
class ExitStatus {
name = "ExitStatus";
constructor(status) {
this.message = `Program terminated with exit(${status})`;
this.status = status
}
}
var callRuntimeCallbacks = callbacks => {
while (callbacks.length > 0) {
callbacks.shift()(Module)
}
};
var onPostRuns = [];
var addOnPostRun = cb => onPostRuns.unshift(cb);
var onPreRuns = [];
var addOnPreRun = cb => onPreRuns.unshift(cb);
var noExitRuntime = Module["noExitRuntime"] || true;
var stackRestore = val => __emscripten_stack_restore(val);
var stackSave = () => _emscripten_stack_get_current();
var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined;
var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
var endIdx = idx + maxBytesToRead;
var endPtr = idx;
while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr))
}
var str = "";
while (idx < endPtr) {
var u0 = heapOrArray[idx++];
if (!(u0 & 128)) {
str += String.fromCharCode(u0);
continue
}
var u1 = heapOrArray[idx++] & 63;
if ((u0 & 224) == 192) {
str += String.fromCharCode((u0 & 31) << 6 | u1);
continue
}
var u2 = heapOrArray[idx++] & 63;
if ((u0 & 240) == 224) {
u0 = (u0 & 15) << 12 | u1 << 6 | u2
} else {
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63
}
if (u0 < 65536) {
str += String.fromCharCode(u0)
} else {
var ch = u0 - 65536;
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
}
}
return str
};
var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
var ___assert_fail = (condition, filename, line, func) => abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"]);
var INT53_MAX = 9007199254740992;
var INT53_MIN = -9007199254740992;
var bigintToI53Checked = num => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);
function __munmap_js(addr, len, prot, flags, fd, offset) {
offset = bigintToI53Checked(offset)
}
var abortOnCannotGrowMemory = requestedSize => {
abort("OOM")
};
var _emscripten_resize_heap = requestedSize => {
var oldSize = HEAPU8.length;
requestedSize >>>= 0;
abortOnCannotGrowMemory(requestedSize)
};
var getCFunc = ident => {
var func = Module["_" + ident];
return func
};
var writeArrayToMemory = (array, buffer) => {
HEAP8.set(array, buffer)
};
var lengthBytesUTF8 = str => {
var len = 0;
for (var i = 0; i < str.length; ++i) {
var c = str.charCodeAt(i);
if (c <= 127) {
len++
} else if (c <= 2047) {
len += 2
} else if (c >= 55296 && c <= 57343) {
len += 4;
++i
} else {
len += 3
}
}
return len
};
var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
if (!(maxBytesToWrite > 0)) return 0;
var startIdx = outIdx;
var endIdx = outIdx + maxBytesToWrite - 1;
for (var i = 0; i < str.length; ++i) {
var u = str.charCodeAt(i);
if (u >= 55296 && u <= 57343) {
var u1 = str.charCodeAt(++i);
u = 65536 + ((u & 1023) << 10) | u1 & 1023
}
if (u <= 127) {
if (outIdx >= endIdx) break;
heap[outIdx++] = u
} else if (u <= 2047) {
if (outIdx + 1 >= endIdx) break;
heap[outIdx++] = 192 | u >> 6;
heap[outIdx++] = 128 | u & 63
} else if (u <= 65535) {
if (outIdx + 2 >= endIdx) break;
heap[outIdx++] = 224 | u >> 12;
heap[outIdx++] = 128 | u >> 6 & 63;
heap[outIdx++] = 128 | u & 63
} else {
if (outIdx + 3 >= endIdx) break;
heap[outIdx++] = 240 | u >> 18;
heap[outIdx++] = 128 | u >> 12 & 63;
heap[outIdx++] = 128 | u >> 6 & 63;
heap[outIdx++] = 128 | u & 63
}
}
heap[outIdx] = 0;
return outIdx - startIdx
};
var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
var stackAlloc = sz => __emscripten_stack_alloc(sz);
var stringToUTF8OnStack = str => {
var size = lengthBytesUTF8(str) + 1;
var ret = stackAlloc(size);
stringToUTF8(str, ret, size);
return ret
};
var ccall = (ident, returnType, argTypes, args, opts) => {
var toC = {
string: str => {
var ret = 0;
if (str !== null && str !== undefined && str !== 0) {
ret = stringToUTF8OnStack(str)
}
return ret
},
array: arr => {
var ret = stackAlloc(arr.length);
writeArrayToMemory(arr, ret);
return ret
}
};
function convertReturnValue(ret) {
if (returnType === "string") {
return UTF8ToString(ret)
}
if (returnType === "boolean") return Boolean(ret);
return ret
}
var func = getCFunc(ident);
var cArgs = [];
var stack = 0;
if (args) {
for (var i = 0; i < args.length; i++) {
var converter = toC[argTypes[i]];
if (converter) {
if (stack === 0) stack = stackSave();
cArgs[i] = converter(args[i])
} else {
cArgs[i] = args[i]
}
}
}
var ret = func(...cArgs);
function onDone(ret) {
if (stack !== 0) stackRestore(stack);
return convertReturnValue(ret)
}
ret = onDone(ret);
return ret
};
var cwrap = (ident, returnType, argTypes, opts) => {
var numericArgs = !argTypes || argTypes.every(type => type === "number" || type === "boolean");
var numericRet = returnType !== "string";
if (numericRet && numericArgs && !opts) {
return getCFunc(ident)
}
return (...args) => ccall(ident, returnType, argTypes, args, opts)
};
var wasmImports = {
c: ___assert_fail,
b: __munmap_js,
a: _emscripten_resize_heap
};
var wasmExports = await createWasm();
var ___wasm_call_ctors = wasmExports["e"];
var _scrypt_kdf_wasm = Module["_scrypt_kdf_wasm"] = wasmExports["g"];
var _malloc = Module["_malloc"] = wasmExports["h"];
var _yescrypt_kdf_wasm = Module["_yescrypt_kdf_wasm"] = wasmExports["i"];
var _scrypt_hash = Module["_scrypt_hash"] = wasmExports["j"];
var _yescrypt_hash = Module["_yescrypt_hash"] = wasmExports["k"];
var _free = Module["_free"] = wasmExports["l"];
var __emscripten_stack_restore = wasmExports["m"];
var __emscripten_stack_alloc = wasmExports["n"];
var _emscripten_stack_get_current = wasmExports["o"];
Module["ccall"] = ccall;
Module["cwrap"] = cwrap;
function run() {
if (runDependencies > 0) {
dependenciesFulfilled = run;
return
}
preRun();
if (runDependencies > 0) {
dependenciesFulfilled = run;
return
}
function doRun() {
Module["calledRun"] = true;
if (ABORT) return;
initRuntime();
readyPromiseResolve(Module);
Module["onRuntimeInitialized"]?.();
postRun()
}
if (Module["setStatus"]) {
Module["setStatus"]("Running...");
setTimeout(() => {
setTimeout(() => Module["setStatus"](""), 1);
doRun()
}, 1)
} else {
doRun()
}
}
if (Module["preInit"]) {
if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
while (Module["preInit"].length > 0) {
Module["preInit"].pop()()
}
}
run();
moduleRtn = readyPromise;
return moduleRtn;
}
);
})();
if (true) {
module.exports = yescrypt_wasm;
// This default export looks redundant, but it allows TS to import this
// commonjs style module.
module.exports["default"] = yescrypt_wasm;
} else // removed by dead control flow
{}
/***/ }),
/***/ 896:
/***/ ((module) => {
"use strict";
module.exports = require("fs");
/***/ }),
/***/ 928:
/***/ ((module) => {
"use strict";
module.exports = require("path");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
(() => {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
Yescrypt: () => (/* binding */ Yescrypt),
base64ToBytes: () => (/* reexport */ base64ToBytes),
bytesToBase64: () => (/* reexport */ bytesToBase64),
bytesToHex: () => (/* reexport */ bytesToHex),
hexToBytes: () => (/* reexport */ hexToBytes)
});
;// ./src/bundled.ts
const bundled = "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QiCIfnwgCSAXQiCIp2oiBykDAIUiEDcDECAFIAcpAwggBikDCCAYQv////8PgyAYQiCIfnyFIhg3AxggBSAKIBJC8J+AgID+A4MiF6dqIgYpAwAgEkL/////D4MgEkIgiH58IAkgF0IgiKdqIgcpAwCFIhI3AyAgBSAHKQMIIAYpAwggFUL/////D4MgFUIgiH58hSIVNwMoIAUgCiATQvCfgICA/gODIhenaiIGKQMAIBNC/////w+DIBNCIIh+fCAJIBdCIIinaiIHKQMAhSITNwMwIAUgBykDCCAGKQMIIBZC/////w+DIBZCIIh+fIUiFjcDOCAFIAogEULwn4CAgP4DgyIXp2oiBikDACARQv////8PgyARQiCIfnwgCSAXQiCIp2oiBykDAIUiETcDACAFIAcpAwggBikDCCAUQv////8PgyAUQiCIfnyFNwMIIAUgCiAQQvCfgICA/gODIhSnaiIGKQMAIBBC/////w+DIBBCIIh+fCAJIBRCIIinaiIHKQMAhTcDECAFIAcpAwggBikDCCAYQv////8PgyAYQiCIfnyFNwMYIAUgCiASQvCfgICA/gODIhCnaiIGKQMAIBJC/////w+DIBJCIIh+fCAJIBBCIIinaiIHKQMAhTcDICAFIAcpAwggBikDCCAVQv////8PgyAVQiCIfnyFNwMoIAUgCiATQvCfgICA/gODIhCnaiIGKQMAIBNC/////w+DIBNCIIh+fCAJIBBCIIinaiIHKQMAhTcDMCAFIAcpAwggBikDCCAWQv////8PgyAWQiCIfnyFNwM4IAsgDUGAAmpB8B9xaiIGIBE3AwAgBiAFKQMINwMIIAYgBSkDEDcDECAGIAUpAxg3AxggBiAFKQMgNwMgIAYgBSkDKDcDKCAGIAUpAzA3AzAgBiAFKQM4IhE3AzggBSAFKQMAIhBCIIggEEL/////D4N+IAogEELwn4CAgP4DgyIQp2oiBykDAHwgCSAQQiCIp2oiDCkDAIUiEjcDACAFIAwpAwggBykDCCAFKQMIIhBCIIggEEL/////D4N+fIU3AwggBSAFKQMQIhBCIIggEEL/////D4N+IAogEELwn4CAgP4DgyIQp2oiBykDAHwgCSAQQiCIp2oiDCkDAIU3AxAgBSAMKQMIIAcpAwggBSkDGCIQQiCIIBBC/////w+DfnyF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KAIAIAVBQGskAAv8BgIVfwh+IAApAwgiGEIgiKchBSAAKQMgIhlCIIinIRAgACkDOCIaQiCIpyEDIAApAxAiG0IgiKchESAAKQMoIhxCIIinIQggACkDACIdQiCIpyEGIAApAxgiHkIgiKchCSAAKQMwIh9CIIinIQogHqchEiAfpyEOIBinIQ8gGachDSAapyEEIBunIQsgHKchDCAdpyEHA0AgBiAKakEHdyARcyITIAZqQQl3IBBzIhQgByAOakEHdyALcyILIAdqQQl3IA1zIhUgC2pBDXcgDnMiFiAJIAMgBWpBB3dzIgkgBWpBCXcgCHMiCCAJakENdyADcyINIAhqQRJ3IAVzIgUgBCAPakEHdyAScyIDakEHd3MiDiAFakEJd3MiECAOakENdyADcyISIBBqQRJ3IAVzIQUgAyADIA9qQQl3IAxzIgxqQQ13IARzIhcgDGpBEncgD3MiBCATakEHdyANcyIDIARqQQl3IBVzIg0gA2pBDXcgE3MiESANakESdyAEcyEPIBQgEyAUakENdyAKcyIKakESdyAGcyIGIAtqQQd3IBdzIgQgBmpBCXcgCHMiCCAEakENdyALcyILIAhqQRJ3IAZzIQYgFSAWakESdyAHcyIHIAlqQQd3IApzIgogB2pBCXcgDHMiDCAKakENdyAJcyIJIAxqQRJ3IAdzIQcgAkEBayICDQALIAEgBK0gA61CIIaENwM4IAEgByAAKAIAaiICNgIAIAAgAjYCACABIAYgACgCBGoiAjYCBCAAIAI2AgQgASAPIAAoAghqIgI2AgggACACNgIIIAEgBSAAKAIMaiICNgIMIAAgAjYCDCABIAsgACgCEGoiAjYCECAAIAI2AhAgASARIAAoAhRqIgI2AhQgACACNgIUIAEgEiAAKAIYaiICNgIYIAAgAjYCGCABIAkgACgCHGoiAjYCHCAAIAI2AhwgASANIAAoAiBqIgI2AiAgACACNgIgIAEgECAAKAIkaiICNgIkIAAgAjYCJCABIAwgACgCKGoiAjYCKCAAIAI2AiggASAIIAAoAixqIgI2AiwgACACNgIsIAEgDiAAKAIwaiICNgIwIAAgAjYCMCABIAogACgCNGoiAjYCNCAAIAI2AjQgASAEIAAoAjhqIgI2AjggACACNgI4IAEgASgCPCAAKAI8aiIBNgI8IAAg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