mirror of
https://github.com/logos-messaging/lab.waku.org.git
synced 2026-01-07 16:23:11 +00:00
75 lines
113 KiB
JavaScript
75 lines
113 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/@ethersproject";
|
|
exports.ids = ["vendor-chunks/@ethersproject"];
|
|
exports.modules = {
|
|
|
|
/***/ "(ssr)/./node_modules/@ethersproject/bytes/lib.esm/_version.js":
|
|
/*!***************************************************************!*\
|
|
!*** ./node_modules/@ethersproject/bytes/lib.esm/_version.js ***!
|
|
\***************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = \"bytes/5.7.0\"; //# sourceMappingURL=_version.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGV0aGVyc3Byb2plY3QvYnl0ZXMvbGliLmVzbS9fdmVyc2lvbi5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sTUFBTUEsVUFBVSxjQUFjLENBQ3JDLG9DQUFvQyIsInNvdXJjZXMiOlsid2VicGFjazovL2ZsdXNoLW5vdGVzLy4vbm9kZV9tb2R1bGVzL0BldGhlcnNwcm9qZWN0L2J5dGVzL2xpYi5lc20vX3ZlcnNpb24uanM/Njk5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9IFwiYnl0ZXMvNS43LjBcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV92ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6WyJ2ZXJzaW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@ethersproject/bytes/lib.esm/_version.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@ethersproject/bytes/lib.esm/index.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/@ethersproject/bytes/lib.esm/index.js ***!
|
|
\************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ arrayify: () => (/* binding */ arrayify),\n/* harmony export */ concat: () => (/* binding */ concat),\n/* harmony export */ hexConcat: () => (/* binding */ hexConcat),\n/* harmony export */ hexDataLength: () => (/* binding */ hexDataLength),\n/* harmony export */ hexDataSlice: () => (/* binding */ hexDataSlice),\n/* harmony export */ hexStripZeros: () => (/* binding */ hexStripZeros),\n/* harmony export */ hexValue: () => (/* binding */ hexValue),\n/* harmony export */ hexZeroPad: () => (/* binding */ hexZeroPad),\n/* harmony export */ hexlify: () => (/* binding */ hexlify),\n/* harmony export */ isBytes: () => (/* binding */ isBytes),\n/* harmony export */ isBytesLike: () => (/* binding */ isBytesLike),\n/* harmony export */ isHexString: () => (/* binding */ isHexString),\n/* harmony export */ joinSignature: () => (/* binding */ joinSignature),\n/* harmony export */ splitSignature: () => (/* binding */ splitSignature),\n/* harmony export */ stripZeros: () => (/* binding */ stripZeros),\n/* harmony export */ zeroPad: () => (/* binding */ zeroPad)\n/* harmony export */ });\n/* harmony import */ var _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ethersproject/logger */ \"(ssr)/./node_modules/@ethersproject/logger/lib.esm/index.js\");\n/* harmony import */ var _version__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_version */ \"(ssr)/./node_modules/@ethersproject/bytes/lib.esm/_version.js\");\n\n\n\nconst logger = new _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger(_version__WEBPACK_IMPORTED_MODULE_1__.version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!value.toHexString;\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nfunction isBytesLike(value) {\n return isHexString(value) && !(value.length % 2) || isBytes(value);\n}\nfunction isInteger(value) {\n return typeof value === \"number\" && value == value && value % 1 === 0;\n}\nfunction isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof value === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for(let i = 0; i < value.length; i++){\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nfunction arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof value === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while(value){\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof value === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for(let i = 0; i < hex.length; i += 2){\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nfunction concat(items) {\n const objects = items.map((item)=>arrayify(item));\n const length = objects.reduce((accum, item)=>accum + item.length, 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object)=>{\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nfunction stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while(start < result.length && result[start] === 0){\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nfunction zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nfunction isHexString(value, length) {\n if (typeof value !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nfunction hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof value === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while(value){\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof value === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return \"0x0\" + value;\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof value === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for(let i = 0; i < value.length; i++){\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/ function hexDataLength(data) {\n if (typeof data !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || data.length % 2) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nfunction hexDataSlice(data, offset, endOffset) {\n if (typeof data !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || data.length % 2) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nfunction hexConcat(items) {\n let result = \"0x\";\n items.forEach((item)=>{\n result += hexlify(item).substring(2);\n });\n return result;\n}\nfunction hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, {\n hexPad: \"left\"\n }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nfunction hexStripZeros(value) {\n if (typeof value !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while(offset < value.length && value[offset] === \"0\"){\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nfunction hexZeroPad(value, length) {\n if (typeof value !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while(value.length < 2 * length + 2){\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nfunction splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - result.v % 2;\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = vs[0] >= 128 ? 1 : 0;\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - result.v % 2;\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = result.v === 0 || result.v === 1 ? result.v : 1 - result.v % 2;\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nfunction joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n signature.recoveryParam ? \"0x1c\" : \"0x1b\"\n ]));\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGV0aGVyc3Byb2plY3QvYnl0ZXMvbGliLmVzbS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBYTtBQUNrQztBQUNWO0FBQ3JDLE1BQU1FLFNBQVMsSUFBSUYseURBQU1BLENBQUNDLDZDQUFPQTtBQUNqQywrQkFBK0I7QUFDL0IsU0FBU0UsVUFBVUMsS0FBSztJQUNwQixPQUFPLENBQUMsQ0FBRUEsTUFBTUMsV0FBVztBQUMvQjtBQUNBLFNBQVNDLFNBQVNDLEtBQUs7SUFDbkIsSUFBSUEsTUFBTUMsS0FBSyxFQUFFO1FBQ2IsT0FBT0Q7SUFDWDtJQUNBQSxNQUFNQyxLQUFLLEdBQUc7UUFDVixNQUFNQyxPQUFPQyxNQUFNQyxTQUFTLENBQUNILEtBQUssQ0FBQ0ksSUFBSSxDQUFDQztRQUN4QyxPQUFPUCxTQUFTLElBQUlRLFdBQVdKLE1BQU1DLFNBQVMsQ0FBQ0gsS0FBSyxDQUFDTyxLQUFLLENBQUNSLE9BQU9FO0lBQ3RFO0lBQ0EsT0FBT0Y7QUFDWDtBQUNPLFNBQVNTLFlBQVlaLEtBQUs7SUFDN0IsT0FBUSxZQUFhQSxVQUFVLENBQUVBLENBQUFBLE1BQU1jLE1BQU0sR0FBRyxNQUFPQyxRQUFRZjtBQUNuRTtBQUNBLFNBQVNnQixVQUFVaEIsS0FBSztJQUNwQixPQUFRLE9BQVFBLFVBQVcsWUFBWUEsU0FBU0EsU0FBUyxRQUFTLE1BQU87QUFDN0U7QUFDTyxTQUFTZSxRQUFRZixLQUFLO0lBQ3pCLElBQUlBLFNBQVMsTUFBTTtRQUNmLE9BQU87SUFDWDtJQUNBLElBQUlBLE1BQU1pQixXQUFXLEtBQUtQLFlBQVk7UUFDbEMsT0FBTztJQUNYO0lBQ0EsSUFBSSxPQUFRVixVQUFXLFVBQVU7UUFDN0IsT0FBTztJQUNYO0lBQ0EsSUFBSSxDQUFDZ0IsVUFBVWhCLE1BQU1jLE1BQU0sS0FBS2QsTUFBTWMsTUFBTSxHQUFHLEdBQUc7UUFDOUMsT0FBTztJQUNYO0lBQ0EsSUFBSyxJQUFJ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LEdBQUcsRUFBRTtRQUN4QztRQUNBLHVCQUF1QjtRQUN2QixJQUFJNUMsT0FBTzRDLEdBQUcsSUFBSSxNQUFNO1lBQ3BCNUMsT0FBTzRDLEdBQUcsR0FBR0E7UUFDakIsT0FDSyxJQUFJNUMsT0FBTzRDLEdBQUcsS0FBS0EsS0FBSztZQUN6QnJFLE9BQU9rQyxrQkFBa0IsQ0FBQyxrQ0FBa0MsYUFBYWdDO1FBQzdFO0lBQ0o7SUFDQXpDLE9BQU84QyxXQUFXLEdBQUc5QyxPQUFPNEMsR0FBRztJQUMvQjVDLE9BQU8rQyxPQUFPLEdBQUcvQyxPQUFPMEMsQ0FBQyxHQUFHMUMsT0FBTzhDLFdBQVcsQ0FBQ3hDLFNBQVMsQ0FBQztJQUN6RCxPQUFPTjtBQUNYO0FBQ08sU0FBU21ELGNBQWNWLFNBQVM7SUFDbkNBLFlBQVlELGVBQWVDO0lBQzNCLE9BQU9oQixRQUFRZixPQUFPO1FBQ2xCK0IsVUFBVUMsQ0FBQztRQUNYRCxVQUFVRSxDQUFDO1FBQ1ZGLFVBQVVJLGFBQWEsR0FBRyxTQUFTO0tBQ3ZDO0FBQ0wsRUFDQSxpQ0FBaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AZXRoZXJzcHJvamVjdC9ieXRlcy9saWIuZXNtL2luZGV4LmpzPzY5YmIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiQGV0aGVyc3Byb2plY3QvbG9nZ2VyXCI7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSBcIi4vX3ZlcnNpb25cIjtcbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIodmVyc2lvbik7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiBpc0hleGFibGUodmFsdWUpIHtcbiAgICByZXR1cm4gISEodmFsdWUudG9IZXhTdHJpbmcpO1xufVxuZnVuY3Rpb24gYWRkU2xpY2UoYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkuc2xpY2UpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbiAgICBhcnJheS5zbGljZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBhZGRTbGljZShuZXcgVWludDhBcnJheShBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJyYXksIGFyZ3MpKSk7XG4gICAgfTtcbiAgICByZXR1cm4gYXJyYXk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCeXRlc0xpa2UodmFsdWUpIHtcbiAgICByZXR1cm4gKChpc0hleFN0cmluZyh2YWx1ZSkgJiYgISh2YWx1ZS5sZW5ndGggJSAyKSkgfHwgaXNCeXRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh0eXBlb2YgKHZhbHVlKSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA9PSB2YWx1ZSAmJiAodmFsdWUgJSAxKSA9PT0gMCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCeXRlcyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mICh2YWx1ZSkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzSW50ZWdlcih2YWx1ZS5sZW5ndGgpIHx8IHZhbHVlLmxlbmd0aCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHYgPSB2YWx1ZVtpXTtcbiAgICAgICAgaWYgKCFpc0ludGVnZXIodikgfHwgdiA8IDAgfHwgdiA+PSAyNTYpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhcnJheWlmeSh2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIGlmICh0eXBlb2YgKHZhbHVlKSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBsb2dnZXIuY2hlY2tTYWZlVWludDUzKHZhbHVlLCBcImludmFsaWQgYXJyYXlpZnkgdmFsdWVcIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICB3aGlsZSAodmFsdWUpIHtcbiAgICAgICAgICAgIHJlc3VsdC51bnNoaWZ0KHZhbHVlICYgMHhmZik7XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KFN0cmluZyh2YWx1ZSAvIDI1NikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkocmVzdWx0KSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFsbG93TWlzc2luZ1ByZWZpeCAmJiB0eXBlb2YgKHZhbHVlKSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5zdWJzdHJpbmcoMCwgMikgIT09IFwiMHhcIikge1xuICAgICAgICB2YWx1ZSA9IFwiMHhcIiArIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNIZXhhYmxlKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvSGV4U3RyaW5nKCk7XG4gICAgfVxuICAgIGlmIChpc0hleFN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgbGV0IGhleCA9IHZhbHVlLnN1YnN0cmluZygyKTtcbiAgICAgICAgaWYgKGhleC5sZW5ndGggJSAyKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5oZXhQYWQgPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgaGV4ID0gXCIwXCIgKyBoZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLmhleFBhZCA9PT0gXCJyaWdodFwiKSB7XG4gICAgICAgICAgICAgICAgaGV4ICs9IFwiMFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcImhleCBkYXRhIGlzIG9kZC1sZW5ndGhcIiwgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGV4Lmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUludChoZXguc3Vic3RyaW5nKGksIGkgKyAyKSwgMTYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkocmVzdWx0KSk7XG4gICAgfVxuICAgIGlmIChpc0J5dGVzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkodmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJpbnZhbGlkIGFycmF5aWZ5IHZhbHVlXCIsIFwidmFsdWVcIiwgdmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdChpdGVtcykge1xuICAgIGNvbnN0IG9iamVjdHMgPSBpdGVtcy5tYXAoaXRlbSA9PiBhcnJheWlmeShpdGVtKSk7XG4gICAgY29uc3QgbGVuZ3RoID0gb2JqZWN0cy5yZWR1Y2UoKGFjY3VtLCBpdGVtKSA9PiAoYWNjdW0gKyBpdGVtLmxlbmd0aCksIDApO1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gICAgb2JqZWN0cy5yZWR1Y2UoKG9mZnNldCwgb2JqZWN0KSA9PiB7XG4gICAgICAgIHJlc3VsdC5zZXQob2JqZWN0LCBvZmZzZXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0ICsgb2JqZWN0Lmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgICByZXR1cm4gYWRkU2xpY2UocmVzdWx0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcFplcm9zKHZhbHVlKSB7XG4gICAgbGV0IHJlc3VsdCA9IGFycmF5aWZ5KHZhbHVlKTtcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBmaXJzdCBub24temVybyBlbnRyeVxuICAgIGxldCBzdGFydCA9IDA7XG4gICAgd2hpbGUgKHN0YXJ0IDwgcmVzdWx0Lmxlbmd0aCAmJiByZXN1bHRbc3RhcnRdID09PSAwKSB7XG4gICAgICAgIHN0YXJ0Kys7XG4gICAgfVxuICAgIC8vIElmIHdlIHN0YXJ0ZWQgd2l0aCB6ZXJvcywgc3RyaXAgdGhlbVxuICAgIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2Uoc3RhcnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHplcm9QYWQodmFsdWUsIGxlbmd0aCkge1xuICAgIHZhbHVlID0gYXJyYXlpZnkodmFsdWUpO1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcInZhbHVlIG91dCBvZiByYW5nZVwiLCBcInZhbHVlXCIsIGFyZ3VtZW50c1swXSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gICAgcmVzdWx0LnNldCh2YWx1ZSwgbGVuZ3RoIC0gdmFsdWUubGVuZ3RoKTtcbiAgICByZXR1cm4gYWRkU2xpY2UocmVzdWx0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0hleFN0cmluZyh2YWx1ZSwgbGVuZ3RoKSB7XG4gICAgaWYgKHR5cGVvZiAodmFsdWUpICE9PSBcInN0cmluZ1wiIHx8ICF2YWx1ZS5tYXRjaCgvXjB4WzAtOUEtRmEtZl0qJC8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggIT09IDIgKyAyICogbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5jb25zdCBIZXhDaGFyYWN0ZXJzID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG5leHBvcnQgZnVuY3Rpb24gaGV4bGlmeSh2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIGlmICh0eXBlb2YgKHZhbHVlKSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBsb2dnZXIuY2hlY2tTYWZlVWludDUzKHZhbHVlLCBcImludmFsaWQgaGV4bGlmeSB2YWx1ZVwiKTtcbiAgICAgICAgbGV0IGhleCA9IFwiXCI7XG4gICAgICAgIHdoaWxlICh2YWx1ZSkge1xuICAgICAgICAgICAgaGV4ID0gSGV4Q2hhcmFjdGVyc1t2YWx1ZSAmIDB4Zl0gKyBoZXg7XG4gICAgICAgICAgICB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUgLyAxNik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhleC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoZXgubGVuZ3RoICUgMikge1xuICAgICAgICAgICAgICAgIGhleCA9IFwiMFwiICsgaGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiMHhcIiArIGhleDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCIweDAwXCI7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgKHZhbHVlKSA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCAlIDIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXCIweDBcIiArIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCIweFwiICsgdmFsdWU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFsbG93TWlzc2luZ1ByZWZpeCAmJiB0eXBlb2YgKHZhbHVlKSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5zdWJzdHJpbmcoMCwgMikgIT09IFwiMHhcIikge1xuICAgICAgICB2YWx1ZSA9IFwiMHhcIiArIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNIZXhhYmxlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9IZXhTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKGlzSGV4U3RyaW5nKHZhbHVlKSkge1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoICUgMikge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaGV4UGFkID09PSBcImxlZnRcIikge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gXCIweDBcIiArIHZhbHVlLnN1YnN0cmluZygyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuaGV4UGFkID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBcIjBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJoZXggZGF0YSBpcyBvZGQtbGVuZ3RoXCIsIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoaXNCeXRlcyh2YWx1ZSkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiMHhcIjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHYgPSB2YWx1ZVtpXTtcbiAgICAgICAgICAgIHJlc3VsdCArPSBIZXhDaGFyYWN0ZXJzWyh2ICYgMHhmMCkgPj4gNF0gKyBIZXhDaGFyYWN0ZXJzW3YgJiAweDBmXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcImludmFsaWQgaGV4bGlmeSB2YWx1ZVwiLCBcInZhbHVlXCIsIHZhbHVlKTtcbn1cbi8qXG5mdW5jdGlvbiB1bm9kZGlmeSh2YWx1ZTogQnl0ZXNMaWtlIHwgSGV4YWJsZSB8IG51bWJlcik6IEJ5dGVzTGlrZSB8IEhleGFibGUgfCBudW1iZXIge1xuICAgIGlmICh0eXBlb2YodmFsdWUpID09PSBcInN0cmluZ1wiICYmIHZhbHVlLmxlbmd0aCAlIDIgJiYgdmFsdWUuc3Vic3RyaW5nKDAsIDIpID09PSBcIjB4XCIpIHtcbiAgICAgICAgcmV0dXJuIFwiMHgwXCIgKyB2YWx1ZS5zdWJzdHJpbmcoMik7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbiovXG5leHBvcnQgZnVuY3Rpb24gaGV4RGF0YUxlbmd0aChkYXRhKSB7XG4gICAgaWYgKHR5cGVvZiAoZGF0YSkgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZGF0YSA9IGhleGxpZnkoZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpc0hleFN0cmluZyhkYXRhKSB8fCAoZGF0YS5sZW5ndGggJSAyKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChkYXRhLmxlbmd0aCAtIDIpIC8gMjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoZXhEYXRhU2xpY2UoZGF0YSwgb2Zmc2V0LCBlbmRPZmZzZXQpIHtcbiAgICBpZiAodHlwZW9mIChkYXRhKSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBkYXRhID0gaGV4bGlmeShkYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzSGV4U3RyaW5nKGRhdGEpIHx8IChkYXRhLmxlbmd0aCAlIDIpKSB7XG4gICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJpbnZhbGlkIGhleERhdGFcIiwgXCJ2YWx1ZVwiLCBkYXRhKTtcbiAgICB9XG4gICAgb2Zmc2V0ID0gMiArIDIgKiBvZmZzZXQ7XG4gICAgaWYgKGVuZE9mZnNldCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcIjB4XCIgKyBkYXRhLnN1YnN0cmluZyhvZmZzZXQsIDIgKyAyICogZW5kT2Zmc2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIFwiMHhcIiArIGRhdGEuc3Vic3RyaW5nKG9mZnNldCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGV4Q29uY2F0KGl0ZW1zKSB7XG4gICAgbGV0IHJlc3VsdCA9IFwiMHhcIjtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHJlc3VsdCArPSBoZXhsaWZ5KGl0ZW0pLnN1YnN0cmluZygyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhleFZhbHVlKHZhbHVlKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGhleFN0cmlwWmVyb3MoaGV4bGlmeSh2YWx1ZSwgeyBoZXhQYWQ6IFwibGVmdFwiIH0pKTtcbiAgICBpZiAodHJpbW1lZCA9PT0gXCIweFwiKSB7XG4gICAgICAgIHJldHVybiBcIjB4MFwiO1xuICAgIH1cbiAgICByZXR1cm4gdHJpbW1lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoZXhTdHJpcFplcm9zKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiAodmFsdWUpICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHZhbHVlID0gaGV4bGlmeSh2YWx1ZSk7XG4gICAgfVxuICAgIGlmICghaXNIZXhTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIiwgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgfVxuICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDIpO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgPCB2YWx1ZS5sZW5ndGggJiYgdmFsdWVbb2Zmc2V0XSA9PT0gXCIwXCIpIHtcbiAgICAgICAgb2Zmc2V0Kys7XG4gICAgfVxuICAgIHJldHVybiBcIjB4XCIgKyB2YWx1ZS5zdWJzdHJpbmcob2Zmc2V0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoZXhaZXJvUGFkKHZhbHVlLCBsZW5ndGgpIHtcbiAgICBpZiAodHlwZW9mICh2YWx1ZSkgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdmFsdWUgPSBoZXhsaWZ5KHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzSGV4U3RyaW5nKHZhbHVlKSkge1xuICAgICAgICBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKFwiaW52YWxpZCBoZXggc3RyaW5nXCIsIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUubGVuZ3RoID4gMiAqIGxlbmd0aCArIDIpIHtcbiAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcInZhbHVlIG91dCBvZiByYW5nZVwiLCBcInZhbHVlXCIsIGFyZ3VtZW50c1sxXSk7XG4gICAgfVxuICAgIHdoaWxlICh2YWx1ZS5sZW5ndGggPCAyICogbGVuZ3RoICsgMikge1xuICAgICAgICB2YWx1ZSA9IFwiMHgwXCIgKyB2YWx1ZS5zdWJzdHJpbmcoMik7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNpZ25hdHVyZShzaWduYXR1cmUpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHI6IFwiMHhcIixcbiAgICAgICAgczogXCIweFwiLFxuICAgICAgICBfdnM6IFwiMHhcIixcbiAgICAgICAgcmVjb3ZlcnlQYXJhbTogMCxcbiAgICAgICAgdjogMCxcbiAgICAgICAgeVBhcml0eUFuZFM6IFwiMHhcIixcbiAgICAgICAgY29tcGFjdDogXCIweFwiXG4gICAgfTtcbiAgICBpZiAoaXNCeXRlc0xpa2Uoc2lnbmF0dXJlKSkge1xuICAgICAgICBsZXQgYnl0ZXMgPSBhcnJheWlmeShzaWduYXR1cmUpO1xuICAgICAgICAvLyBHZXQgdGhlIHIsIHMgYW5kIHZcbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCA9PT0gNjQpIHtcbiAgICAgICAgICAgIC8vIEVJUC0yMDk4OyBwdWxsIHRoZSB2IGZyb20gdGhlIHRvcCBiaXQgb2YgcyBhbmQgY2xlYXIgaXRcbiAgICAgICAgICAgIHJlc3VsdC52ID0gMjcgKyAoYnl0ZXNbMzJdID4+IDcpO1xuICAgICAgICAgICAgYnl0ZXNbMzJdICY9IDB4N2Y7XG4gICAgICAgICAgICByZXN1bHQuciA9IGhleGxpZnkoYnl0ZXMuc2xpY2UoMCwgMzIpKTtcbiAgICAgICAgICAgIHJlc3VsdC5zID0gaGV4bGlmeShieXRlcy5zbGljZSgzMiwgNjQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChieXRlcy5sZW5ndGggPT09IDY1KSB7XG4gICAgICAgICAgICByZXN1bHQuciA9IGhleGxpZnkoYnl0ZXMuc2xpY2UoMCwgMzIpKTtcbiAgICAgICAgICAgIHJlc3VsdC5zID0gaGV4bGlmeShieXRlcy5zbGljZSgzMiwgNjQpKTtcbiAgICAgICAgICAgIHJlc3VsdC52ID0gYnl0ZXNbNjRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcImludmFsaWQgc2lnbmF0dXJlIHN0cmluZ1wiLCBcInNpZ25hdHVyZVwiLCBzaWduYXR1cmUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsbG93IGEgcmVjaWQgdG8gYmUgdXNlZCBhcyB0aGUgdlxuICAgICAgICBpZiAocmVzdWx0LnYgPCAyNykge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC52ID09PSAwIHx8IHJlc3VsdC52ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnYgKz0gMjc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKFwic2lnbmF0dXJlIGludmFsaWQgdiBieXRlXCIsIFwic2lnbmF0dXJlXCIsIHNpZ25hdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29tcHV0ZSByZWNvdmVyeVBhcmFtIGZyb20gdlxuICAgICAgICByZXN1bHQucmVjb3ZlcnlQYXJhbSA9IDEgLSAocmVzdWx0LnYgJSAyKTtcbiAgICAgICAgLy8gQ29tcHV0ZSBfdnMgZnJvbSByZWNvdmVyeVBhcmFtIGFuZCBzXG4gICAgICAgIGlmIChyZXN1bHQucmVjb3ZlcnlQYXJhbSkge1xuICAgICAgICAgICAgYnl0ZXNbMzJdIHw9IDB4ODA7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0Ll92cyA9IGhleGxpZnkoYnl0ZXMuc2xpY2UoMzIsIDY0KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQuciA9IHNpZ25hdHVyZS5yO1xuICAgICAgICByZXN1bHQucyA9IHNpZ25hdHVyZS5zO1xuICAgICAgICByZXN1bHQudiA9IHNpZ25hdHVyZS52O1xuICAgICAgICByZXN1bHQucmVjb3ZlcnlQYXJhbSA9IHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuICAgICAgICByZXN1bHQuX3ZzID0gc2lnbmF0dXJlLl92cztcbiAgICAgICAgLy8gSWYgdGhlIF92cyBpcyBhdmFpbGFibGUsIHVzZSBpdCB0byBwb3B1bGF0ZSBtaXNzaW5nIHMsIHYgYW5kIHJlY292ZXJ5UGFyYW1cbiAgICAgICAgLy8gYW5kIHZlcmlmeSBub24tbWlzc2luZyBzLCB2IGFuZCByZWNvdmVyeVBhcmFtXG4gICAgICAgIGlmIChyZXN1bHQuX3ZzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHZzID0gemVyb1BhZChhcnJheWlmeShyZXN1bHQuX3ZzKSwgMzIpO1xuICAgICAgICAgICAgcmVzdWx0Ll92cyA9IGhleGxpZnkodnMpO1xuICAgICAgICAgICAgLy8gU2V0IG9yIGNoZWNrIHRoZSByZWNpZFxuICAgICAgICAgICAgY29uc3QgcmVjb3ZlcnlQYXJhbSA9ICgodnNbMF0gPj0gMTI4KSA/IDEgOiAwKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQucmVjb3ZlcnlQYXJhbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnJlY292ZXJ5UGFyYW0gPSByZWNvdmVyeVBhcmFtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LnJlY292ZXJ5UGFyYW0gIT09IHJlY292ZXJ5UGFyYW0pIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKFwic2lnbmF0dXJlIHJlY292ZXJ5UGFyYW0gbWlzbWF0Y2ggX3ZzXCIsIFwic2lnbmF0dXJlXCIsIHNpZ25hdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTZXQgb3IgY2hlY2sgdGhlIHNcbiAgICAgICAgICAgIHZzWzBdICY9IDB4N2Y7XG4gICAgICAgICAgICBjb25zdCBzID0gaGV4bGlmeSh2cyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zID0gcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5zICE9PSBzKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcInNpZ25hdHVyZSB2IG1pc21hdGNoIF92c1wiLCBcInNpZ25hdHVyZVwiLCBzaWduYXR1cmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFVzZSByZWNpZCBhbmQgdiB0byBwb3B1bGF0ZSBlYWNoIG90aGVyXG4gICAgICAgIGlmIChyZXN1bHQucmVjb3ZlcnlQYXJhbSA9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJzaWduYXR1cmUgbWlzc2luZyB2IGFuZCByZWNvdmVyeVBhcmFtXCIsIFwic2lnbmF0dXJlXCIsIHNpZ25hdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQudiA9PT0gMCB8fCByZXN1bHQudiA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5yZWNvdmVyeVBhcmFtID0gcmVzdWx0LnY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucmVjb3ZlcnlQYXJhbSA9IDEgLSAocmVzdWx0LnYgJSAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQudiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnYgPSAyNyArIHJlc3VsdC5yZWNvdmVyeVBhcmFtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjSWQgPSAocmVzdWx0LnYgPT09IDAgfHwgcmVzdWx0LnYgPT09IDEpID8gcmVzdWx0LnYgOiAoMSAtIChyZXN1bHQudiAlIDIpKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJlY292ZXJ5UGFyYW0gIT09IHJlY0lkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJzaWduYXR1cmUgcmVjb3ZlcnlQYXJhbSBtaXNtYXRjaCB2XCIsIFwic2lnbmF0dXJlXCIsIHNpZ25hdHVyZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQuciA9PSBudWxsIHx8ICFpc0hleFN0cmluZyhyZXN1bHQucikpIHtcbiAgICAgICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJzaWduYXR1cmUgbWlzc2luZyBvciBpbnZhbGlkIHJcIiwgXCJzaWduYXR1cmVcIiwgc2lnbmF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5yID0gaGV4WmVyb1BhZChyZXN1bHQuciwgMzIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQucyA9PSBudWxsIHx8ICFpc0hleFN0cmluZyhyZXN1bHQucykpIHtcbiAgICAgICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJzaWduYXR1cmUgbWlzc2luZyBvciBpbnZhbGlkIHNcIiwgXCJzaWduYXR1cmVcIiwgc2lnbmF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5zID0gaGV4WmVyb1BhZChyZXN1bHQucywgMzIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZzID0gYXJyYXlpZnkocmVzdWx0LnMpO1xuICAgICAgICBpZiAodnNbMF0gPj0gMTI4KSB7XG4gICAgICAgICAgICBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKFwic2lnbmF0dXJlIHMgb3V0IG9mIHJhbmdlXCIsIFwic2lnbmF0dXJlXCIsIHNpZ25hdHVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdC5yZWNvdmVyeVBhcmFtKSB7XG4gICAgICAgICAgICB2c1swXSB8PSAweDgwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IF92cyA9IGhleGxpZnkodnMpO1xuICAgICAgICBpZiAocmVzdWx0Ll92cykge1xuICAgICAgICAgICAgaWYgKCFpc0hleFN0cmluZyhyZXN1bHQuX3ZzKSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoXCJzaWduYXR1cmUgaW52YWxpZCBfdnNcIiwgXCJzaWduYXR1cmVcIiwgc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5fdnMgPSBoZXhaZXJvUGFkKHJlc3VsdC5fdnMsIDMyKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgb3IgY2hlY2sgdGhlIF92c1xuICAgICAgICBpZiAocmVzdWx0Ll92cyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQuX3ZzID0gX3ZzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdC5fdnMgIT09IF92cykge1xuICAgICAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcInNpZ25hdHVyZSBfdnMgbWlzbWF0Y2ggdiBhbmQgc1wiLCBcInNpZ25hdHVyZVwiLCBzaWduYXR1cmUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC55UGFyaXR5QW5kUyA9IHJlc3VsdC5fdnM7XG4gICAgcmVzdWx0LmNvbXBhY3QgPSByZXN1bHQuciArIHJlc3VsdC55UGFyaXR5QW5kUy5zdWJzdHJpbmcoMik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBqb2luU2lnbmF0dXJlKHNpZ25hdHVyZSkge1xuICAgIHNpZ25hdHVyZSA9IHNwbGl0U2lnbmF0dXJlKHNpZ25hdHVyZSk7XG4gICAgcmV0dXJuIGhleGxpZnkoY29uY2F0KFtcbiAgICAgICAgc2lnbmF0dXJlLnIsXG4gICAgICAgIHNpZ25hdHVyZS5zLFxuICAgICAgICAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gPyBcIjB4MWNcIiA6IFwiMHgxYlwiKVxuICAgIF0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJMb2dnZXIiLCJ2ZXJzaW9uIiwibG9nZ2VyIiwiaXNIZXhhYmxlIiwidmFsdWUiLCJ0b0hleFN0cmluZyIsImFkZFNsaWNlIiwiYXJyYXkiLCJzbGljZSIsImFyZ3MiLCJBcnJheSIsInByb3RvdHlwZSIsImNhbGwiLCJhcmd1bWVudHMiLCJVaW50OEFycmF5IiwiYXBwbHkiLCJpc0J5dGVzTGlrZSIsImlzSGV4U3RyaW5nIiwibGVuZ3RoIiwiaXNCeXRlcyIsImlzSW50ZWdlciIsImNvbnN0cnVjdG9yIiwiaSIsInYiLCJhcnJheWlmeSIsIm9wdGlvbnMiLCJjaGVja1NhZmVVaW50NTMiLCJyZXN1bHQiLCJ1bnNoaWZ0IiwicGFyc2VJbnQiLCJTdHJpbmciLCJwdXNoIiwiYWxsb3dNaXNzaW5nUHJlZml4Iiwic3Vic3RyaW5nIiwiaGV4IiwiaGV4UGFkIiwidGhyb3dBcmd1bWVudEVycm9yIiwiY29uY2F0IiwiaXRlbXMiLCJvYmplY3RzIiwibWFwIiwiaXRlbSIsInJlZHVjZSIsImFjY3VtIiwib2Zmc2V0Iiwib2JqZWN0Iiwic2V0Iiwic3RyaXBaZXJvcyIsInN0YXJ0IiwiemVyb1BhZCIsIm1hdGNoIiwiSGV4Q2hhcmFjdGVycyIsImhleGxpZnkiLCJNYXRoIiwiZmxvb3IiLCJ0b1N0cmluZyIsInRvTG93ZXJDYXNlIiwiaGV4RGF0YUxlbmd0aCIsImRhdGEiLCJoZXhEYXRhU2xpY2UiLCJlbmRPZmZzZXQiLCJoZXhDb25jYXQiLCJmb3JFYWNoIiwiaGV4VmFsdWUiLCJ0cmltbWVkIiwiaGV4U3RyaXBaZXJvcyIsImhleFplcm9QYWQiLCJzcGxpdFNpZ25hdHVyZSIsInNpZ25hdHVyZSIsInIiLCJzIiwiX3ZzIiwicmVjb3ZlcnlQYXJhbSIsInlQYXJpdHlBbmRTIiwiY29tcGFjdCIsImJ5dGVzIiwidnMiLCJyZWNJZCIsImpvaW5TaWduYXR1cmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@ethersproject/bytes/lib.esm/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@ethersproject/logger/lib.esm/_version.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/@ethersproject/logger/lib.esm/_version.js ***!
|
|
\****************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = \"logger/5.7.0\"; //# sourceMappingURL=_version.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGV0aGVyc3Byb2plY3QvbG9nZ2VyL2xpYi5lc20vX3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLE1BQU1BLFVBQVUsZUFBZSxDQUN0QyxvQ0FBb0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AZXRoZXJzcHJvamVjdC9sb2dnZXIvbGliLmVzbS9fdmVyc2lvbi5qcz9hMDBiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB2ZXJzaW9uID0gXCJsb2dnZXIvNS43LjBcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV92ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6WyJ2ZXJzaW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@ethersproject/logger/lib.esm/_version.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@ethersproject/logger/lib.esm/index.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/@ethersproject/logger/lib.esm/index.js ***!
|
|
\*************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ErrorCode: () => (/* binding */ ErrorCode),\n/* harmony export */ LogLevel: () => (/* binding */ LogLevel),\n/* harmony export */ Logger: () => (/* binding */ Logger)\n/* harmony export */ });\n/* harmony import */ var _version__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_version */ \"(ssr)/./node_modules/@ethersproject/logger/lib.esm/_version.js\");\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = {\n debug: 1,\n \"default\": 2,\n info: 2,\n warning: 3,\n error: 4,\n off: 5\n};\nlet _logLevel = LogLevels[\"default\"];\n\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\n \"NFD\",\n \"NFC\",\n \"NFKD\",\n \"NFKC\"\n ].forEach((form)=>{\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n } catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n } catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nvar LogLevel;\n(function(LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nvar ErrorCode;\n(function(ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nclass Logger {\n constructor(version){\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key)=>{\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for(let i = 0; i < value.length; i++){\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch(code){\n case ErrorCode.NUMERIC_FAULT:\n {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch(fault){\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https://links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\",\n form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof value !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, {\n name: kind.name\n });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, {\n name: target.name,\n operation: \"new\"\n });\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, {\n name: kind.name\n });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(_version__WEBPACK_IMPORTED_MODULE_0__.version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel; //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGV0aGVyc3Byb2plY3QvbG9nZ2VyL2xpYi5lc20vaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFhO0FBQ2IsSUFBSUEseUJBQXlCO0FBQzdCLElBQUlDLGdCQUFnQjtBQUNwQixNQUFNQyxZQUFZO0lBQUVDLE9BQU87SUFBRyxXQUFXO0lBQUdDLE1BQU07SUFBR0MsU0FBUztJQUFHQyxPQUFPO0lBQUdDLEtBQUs7QUFBRTtBQUNsRixJQUFJQyxZQUFZTixTQUFTLENBQUMsVUFBVTtBQUNDO0FBQ3JDLElBQUlRLGdCQUFnQjtBQUNwQixTQUFTQztJQUNMLElBQUk7UUFDQSxNQUFNQyxVQUFVLEVBQUU7UUFDbEIscURBQXFEO1FBQ3JEO1lBQUM7WUFBTztZQUFPO1lBQVE7U0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQ0M7WUFDcEMsSUFBSTtnQkFDQSxJQUFJLE9BQU9DLFNBQVMsQ0FBQ0QsVUFBVSxRQUFRO29CQUNuQyxNQUFNLElBQUlFLE1BQU07Z0JBQ3BCOztZQUVKLEVBQ0EsT0FBT1YsT0FBTztnQkFDVk0sUUFBUUssSUFBSSxDQUFDSDtZQUNqQjtRQUNKO1FBQ0EsSUFBSUYsUUFBUU0sTUFBTSxFQUFFO1lBQ2hCLE1BQU0sSUFBSUYsTUFBTSxhQUFhSixRQUFRTyxJQUFJLENBQUM7UUFDOUM7UUFDQSxJQUFJQyxPQUFPQyxZQUFZLENBQUMsTUFBTU4sU0FBUyxDQUFDLFdBQVdLLE9BQU9DLFlBQVksQ0FBQyxNQUFNLFNBQVM7WUFDbEYsTUFBTSxJQUFJTCxNQUFNO1FBQ3BCO0lBQ0osRUFDQSxPQUFPVixPQUFPO1FBQ1YsT0FBT0EsTUFBTWdCLE9BQU87SUFDeEI7SUFDQSxPQUFPO0FBQ1g7QUFDQSxNQUFNQyxrQkFBa0JaO0FBQ2pCLElBQUlhLFNBQVM7QUFDbkIsVUFBVUEsUUFBUTtJQUNmQSxRQUFRLENBQUMsUUFBUSxHQUFHO0lBQ3BCQSxRQUFRLENBQUMsT0FBTyxHQUFHO0lBQ25CQSxRQUFRLENBQUMs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QUFXO1lBQ2Y7UUFDSjtRQUNBakYsZ0JBQWdCLENBQUMsQ0FBQzhGO1FBQ2xCL0YseUJBQXlCLENBQUMsQ0FBQ2dHO0lBQy9CO0lBQ0EsT0FBT0MsWUFBWTlELFFBQVEsRUFBRTtRQUN6QixNQUFNRSxRQUFRbkMsU0FBUyxDQUFDaUMsU0FBU0csV0FBVyxHQUFHO1FBQy9DLElBQUlELFNBQVMsTUFBTTtZQUNmVixPQUFPa0UsWUFBWSxHQUFHL0MsSUFBSSxDQUFDLHlCQUF5Qlg7WUFDcEQ7UUFDSjtRQUNBM0IsWUFBWTZCO0lBQ2hCO0lBQ0EsT0FBTzZELEtBQUt6RixPQUFPLEVBQUU7UUFDakIsT0FBTyxJQUFJa0IsT0FBT2xCO0lBQ3RCO0FBQ0o7QUFDQWtCLE9BQU93QixNQUFNLEdBQUcxQjtBQUNoQkUsT0FBT2dCLE1BQU0sR0FBR25CLFVBQ2hCLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL2ZsdXNoLW5vdGVzLy4vbm9kZV9tb2R1bGVzL0BldGhlcnNwcm9qZWN0L2xvZ2dlci9saWIuZXNtL2luZGV4LmpzP2RkNjgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5sZXQgX3Blcm1hbmVudENlbnNvckVycm9ycyA9IGZhbHNlO1xubGV0IF9jZW5zb3JFcnJvcnMgPSBmYWxzZTtcbmNvbnN0IExvZ0xldmVscyA9IHsgZGVidWc6IDEsIFwiZGVmYXVsdFwiOiAyLCBpbmZvOiAyLCB3YXJuaW5nOiAzLCBlcnJvcjogNCwgb2ZmOiA1IH07XG5sZXQgX2xvZ0xldmVsID0gTG9nTGV2ZWxzW1wiZGVmYXVsdFwiXTtcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tIFwiLi9fdmVyc2lvblwiO1xubGV0IF9nbG9iYWxMb2dnZXIgPSBudWxsO1xuZnVuY3Rpb24gX2NoZWNrTm9ybWFsaXplKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1pc3NpbmcgPSBbXTtcbiAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCBmb3JtcyBvZiBub3JtYWxpemF0aW9uIGFyZSBzdXBwb3J0ZWRcbiAgICAgICAgW1wiTkZEXCIsIFwiTkZDXCIsIFwiTkZLRFwiLCBcIk5GS0NcIl0uZm9yRWFjaCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoXCJ0ZXN0XCIubm9ybWFsaXplKGZvcm0pICE9PSBcInRlc3RcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJiYWQgbm9ybWFsaXplXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBtaXNzaW5nLnB1c2goZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobWlzc2luZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1pc3NpbmcgXCIgKyBtaXNzaW5nLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlOSkubm9ybWFsaXplKFwiTkZEXCIpICE9PSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NjUsIDB4MDMwMSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImJyb2tlbiBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2U7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuY29uc3QgX25vcm1hbGl6ZUVycm9yID0gX2NoZWNrTm9ybWFsaXplKCk7XG5leHBvcnQgdmFyIExvZ0xldmVsO1xuKGZ1bmN0aW9uIChMb2dMZXZlbCkge1xuICAgIExvZ0xldmVsW1wiREVCVUdcIl0gPSBcIkRFQlVHXCI7XG4gICAgTG9nTGV2ZWxbXCJJTkZPXCJdID0gXCJJTkZPXCI7XG4gICAgTG9nTGV2ZWxbXCJXQVJOSU5HXCJdID0gXCJXQVJOSU5HXCI7XG4gICAgTG9nTGV2ZWxbXCJFUlJPUlwiXSA9IFwiRVJST1JcIjtcbiAgICBMb2dMZXZlbFtcIk9GRlwiXSA9IFwiT0ZGXCI7XG59KShMb2dMZXZlbCB8fCAoTG9nTGV2ZWwgPSB7fSkpO1xuZXhwb3J0IHZhciBFcnJvckNvZGU7XG4oZnVuY3Rpb24gKEVycm9yQ29kZSkge1xuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBHZW5lcmljIEVycm9yc1xuICAgIC8vIFVua25vd24gRXJyb3JcbiAgICBFcnJvckNvZGVbXCJVTktOT1dOX0VSUk9SXCJdID0gXCJVTktOT1dOX0VSUk9SXCI7XG4gICAgLy8gTm90IEltcGxlbWVudGVkXG4gICAgRXJyb3JDb2RlW1wiTk9UX0lNUExFTUVOVEVEXCJdID0gXCJOT1RfSU1QTEVNRU5URURcIjtcbiAgICAvLyBVbnN1cHBvcnRlZCBPcGVyYXRpb25cbiAgICAvLyAgIC0gb3BlcmF0aW9uXG4gICAgRXJyb3JDb2RlW1wiVU5TVVBQT1JURURfT1BFUkFUSU9OXCJdID0gXCJVTlNVUFBPUlRFRF9PUEVSQVRJT05cIjtcbiAgICAvLyBOZXR3b3JrIEVycm9yIChpLmUuIEV0aGVyZXVtIE5ldHdvcmssIHN1Y2ggYXMgYW4gaW52YWxpZCBjaGFpbiBJRClcbiAgICAvLyAgIC0gZXZlbnQgKFwibm9OZXR3b3JrXCIgaXMgbm90IHJlLXRocm93biBpbiBwcm92aWRlci5yZWFkeTsgb3RoZXJ3aXNlIHRocm93bilcbiAgICBFcnJvckNvZGVbXCJORVRXT1JLX0VSUk9SXCJdID0gXCJORVRXT1JLX0VSUk9SXCI7XG4gICAgLy8gU29tZSBzb3J0IG9mIGJhZCByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICBFcnJvckNvZGVbXCJTRVJWRVJfRVJST1JcIl0gPSBcIlNFUlZFUl9FUlJPUlwiO1xuICAgIC8vIFRpbWVvdXRcbiAgICBFcnJvckNvZGVbXCJUSU1FT1VUXCJdID0gXCJUSU1FT1VUXCI7XG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIE9wZXJhdGlvbmFsICBFcnJvcnNcbiAgICAvLyBCdWZmZXIgT3ZlcnJ1blxuICAgIEVycm9yQ29kZVtcIkJVRkZFUl9PVkVSUlVOXCJdID0gXCJCVUZGRVJfT1ZFUlJVTlwiO1xuICAgIC8vIE51bWVyaWMgRmF1bHRcbiAgICAvLyAgIC0gb3BlcmF0aW9uOiB0aGUgb3BlcmF0aW9uIGJlaW5nIGV4ZWN1dGVkXG4gICAgLy8gICAtIGZhdWx0OiB0aGUgcmVhc29uIHRoaXMgZmF1bHRlZFxuICAgIEVycm9yQ29kZVtcIk5VTUVSSUNfRkFVTFRcIl0gPSBcIk5VTUVSSUNfRkFVTFRcIjtcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQXJndW1lbnQgRXJyb3JzXG4gICAgLy8gTWlzc2luZyBuZXcgb3BlcmF0b3IgdG8gYW4gb2JqZWN0XG4gICAgLy8gIC0gbmFtZTogVGhlIG5hbWUgb2YgdGhlIGNsYXNzXG4gICAgRXJyb3JDb2RlW1wiTUlTU0lOR19ORVdcIl0gPSBcIk1JU1NJTkdfTkVXXCI7XG4gICAgLy8gSW52YWxpZCBhcmd1bWVudCAoZS5nLiB2YWx1ZSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0eXBlKSB0byBhIGZ1bmN0aW9uOlxuICAgIC8vICAgLSBhcmd1bWVudDogVGhlIGFyZ3VtZW50IG5hbWUgdGhhdCB3YXMgaW52YWxpZFxuICAgIC8vICAgLSB2YWx1ZTogVGhlIHZhbHVlIG9mIHRoZSBhcmd1bWVudFxuICAgIEVycm9yQ29kZVtcIklOVkFMSURfQVJHVU1FTlRcIl0gPSBcIklOVkFMSURfQVJHVU1FTlRcIjtcbiAgICAvLyBNaXNzaW5nIGFyZ3VtZW50IHRvIGEgZnVuY3Rpb246XG4gICAgLy8gICAtIGNvdW50OiBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyByZWNlaXZlZFxuICAgIC8vICAgLSBleHBlY3RlZENvdW50OiBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBleHBlY3RlZFxuICAgIEVycm9yQ29kZVtcIk1JU1NJTkdfQVJHVU1FTlRcIl0gPSBcIk1JU1NJTkdfQVJHVU1FTlRcIjtcbiAgICAvLyBUb28gbWFueSBhcmd1bWVudHNcbiAgICAvLyAgIC0gY291bnQ6IFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHJlY2VpdmVkXG4gICAgLy8gICAtIGV4cGVjdGVkQ291bnQ6IFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGV4cGVjdGVkXG4gICAgRXJyb3JDb2RlW1wiVU5FWFBFQ1RFRF9BUkdVTUVOVFwiXSA9IFwiVU5FWFBFQ1RFRF9BUkdVTUVOVFwiO1xuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBCbG9ja2NoYWluIEVycm9yc1xuICAgIC8vIENhbGwgZXhjZXB0aW9uXG4gICAgLy8gIC0gdHJhbnNhY3Rpb246IHRoZSB0cmFuc2FjdGlvblxuICAgIC8vICAtIGFkZHJlc3M/OiB0aGUgY29udHJhY3QgYWRkcmVzc1xuICAgIC8vICAtIGFyZ3M/OiBUaGUgYXJndW1lbnRzIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvblxuICAgIC8vICAtIG1ldGhvZD86IFRoZSBTb2xpZGl0eSBtZXRob2Qgc2lnbmF0dXJlXG4gICAgLy8gIC0gZXJyb3JTaWduYXR1cmU/OiBUaGUgRUlQODQ4IGVycm9yIHNpZ25hdHVyZVxuICAgIC8vICAtIGVycm9yQXJncz86IFRoZSBFSVA4NDggZXJyb3IgcGFyYW1ldGVyc1xuICAgIC8vICAtIHJlYXNvbjogVGhlIHJlYXNvbiAob25seSBmb3IgRUlQODQ4IFwiRXJyb3Ioc3RyaW5nKVwiKVxuICAgIEVycm9yQ29kZVtcIkNBTExfRVhDRVBUSU9OXCJdID0gXCJDQUxMX0VYQ0VQVElPTlwiO1xuICAgIC8vIEluc3VmZmljaWVudCBmdW5kcyAoPCB2YWx1ZSArIGdhc0xpbWl0ICogZ2FzUHJpY2UpXG4gICAgLy8gICAtIHRyYW5zYWN0aW9uOiB0aGUgdHJhbnNhY3Rpb24gYXR0ZW1wdGVkXG4gICAgRXJyb3JDb2RlW1wiSU5TVUZGSUNJRU5UX0ZVTkRTXCJdID0gXCJJTlNVRkZJQ0lFTlRfRlVORFNcIjtcbiAgICAvLyBOb25jZSBoYXMgYWxyZWFkeSBiZWVuIHVzZWRcbiAgICAvLyAgIC0gdHJhbnNhY3Rpb246IHRoZSB0cmFuc2FjdGlvbiBhdHRlbXB0ZWRcbiAgICBFcnJvckNvZGVbXCJOT05DRV9FWFBJUkVEXCJdID0gXCJOT05DRV9FWFBJUkVEXCI7XG4gICAgLy8gVGhlIHJlcGxhY2VtZW50IGZlZSBmb3IgdGhlIHRyYW5zYWN0aW9uIGlzIHRvbyBsb3dcbiAgICAvLyAgIC0gdHJhbnNhY3Rpb246IHRoZSB0cmFuc2FjdGlvbiBhdHRlbXB0ZWRcbiAgICBFcnJvckNvZGVbXCJSRVBMQUNFTUVOVF9VTkRFUlBSSUNFRFwiXSA9IFwiUkVQTEFDRU1FTlRfVU5ERVJQUklDRURcIjtcbiAgICAvLyBUaGUgZ2FzIGxpbWl0IGNvdWxkIG5vdCBiZSBlc3RpbWF0ZWRcbiAgICAvLyAgIC0gdHJhbnNhY3Rpb246IHRoZSB0cmFuc2FjdGlvbiBwYXNzZWQgdG8gZXN0aW1hdGVHYXNcbiAgICBFcnJvckNvZGVbXCJVTlBSRURJQ1RBQkxFX0dBU19MSU1JVFwiXSA9IFwiVU5QUkVESUNUQUJMRV9HQVNfTElNSVRcIjtcbiAgICAvLyBUaGUgdHJhbnNhY3Rpb24gd2FzIHJlcGxhY2VkIGJ5IG9uZSB3aXRoIGEgaGlnaGVyIGdhcyBwcmljZVxuICAgIC8vICAgLSByZWFzb246IFwiY2FuY2VsbGVkXCIsIFwicmVwbGFjZWRcIiBvciBcInJlcHJpY2VkXCJcbiAgICAvLyAgIC0gY2FuY2VsbGVkOiB0cnVlIGlmIHJlYXNvbiA9PSBcImNhbmNlbGxlZFwiIG9yIHJlYXNvbiA9PSBcInJlcGxhY2VkXCIpXG4gICAgLy8gICAtIGhhc2g6IG9yaWdpbmFsIHRyYW5zYWN0aW9uIGhhc2hcbiAgICAvLyAgIC0gcmVwbGFjZW1lbnQ6IHRoZSBmdWxsIFRyYW5zYWN0aW9uc1Jlc3BvbnNlIGZvciB0aGUgcmVwbGFjZW1lbnRcbiAgICAvLyAgIC0gcmVjZWlwdDogdGhlIHJlY2VpcHQgb2YgdGhlIHJlcGxhY2VtZW50XG4gICAgRXJyb3JDb2RlW1wiVFJBTlNBQ1RJT05fUkVQTEFDRURcIl0gPSBcIlRSQU5TQUNUSU9OX1JFUExBQ0VEXCI7XG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEludGVyYWN0aW9uIEVycm9yc1xuICAgIC8vIFRoZSB1c2VyIHJlamVjdGVkIHRoZSBhY3Rpb24sIHN1Y2ggYXMgc2lnbmluZyBhIG1lc3NhZ2Ugb3Igc2VuZGluZ1xuICAgIC8vIGEgdHJhbnNhY3Rpb25cbiAgICBFcnJvckNvZGVbXCJBQ1RJT05fUkVKRUNURURcIl0gPSBcIkFDVElPTl9SRUpFQ1RFRFwiO1xufSkoRXJyb3JDb2RlIHx8IChFcnJvckNvZGUgPSB7fSkpO1xuO1xuY29uc3QgSEVYID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcbiAgICBjb25zdHJ1Y3Rvcih2ZXJzaW9uKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInZlcnNpb25cIiwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB2ZXJzaW9uLFxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfbG9nKGxvZ0xldmVsLCBhcmdzKSB7XG4gICAgICAgIGNvbnN0IGxldmVsID0gbG9nTGV2ZWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKExvZ0xldmVsc1tsZXZlbF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy50aHJvd0FyZ3VtZW50RXJyb3IoXCJpbnZhbGlkIGxvZyBsZXZlbCBuYW1lXCIsIFwibG9nTGV2ZWxcIiwgbG9nTGV2ZWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfbG9nTGV2ZWwgPiBMb2dMZXZlbHNbbGV2ZWxdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gICAgfVxuICAgIGRlYnVnKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5fbG9nKExvZ2dlci5sZXZlbHMuREVCVUcsIGFyZ3MpO1xuICAgIH1cbiAgICBpbmZvKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5fbG9nKExvZ2dlci5sZXZlbHMuSU5GTywgYXJncyk7XG4gICAgfVxuICAgIHdhcm4oLi4uYXJncykge1xuICAgICAgICB0aGlzLl9sb2coTG9nZ2VyLmxldmVscy5XQVJOSU5HLCBhcmdzKTtcbiAgICB9XG4gICAgbWFrZUVycm9yKG1lc3NhZ2UsIGNvZGUsIHBhcmFtcykge1xuICAgICAgICAvLyBFcnJvcnMgYXJlIGJlaW5nIGNlbnNvcmVkXG4gICAgICAgIGlmIChfY2Vuc29yRXJyb3JzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlRXJyb3IoXCJjZW5zb3JlZCBlcnJvclwiLCBjb2RlLCB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb2RlKSB7XG4gICAgICAgICAgICBjb2RlID0gTG9nZ2VyLmVycm9ycy5VTktOT1dOX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyYW1zKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZXNzYWdlRGV0YWlscyA9IFtdO1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaGV4ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGV4ICs9IEhFWFt2YWx1ZVtpXSA+PiA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhleCArPSBIRVhbdmFsdWVbaV0gJiAweDBmXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlRGV0YWlscy5wdXNoKGtleSArIFwiPVVpbnQ4QXJyYXkoMHhcIiArIGhleCArIFwiKVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzLnB1c2goa2V5ICsgXCI9XCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzLnB1c2goa2V5ICsgXCI9XCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XS50b1N0cmluZygpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtZXNzYWdlRGV0YWlscy5wdXNoKGBjb2RlPSR7Y29kZX1gKTtcbiAgICAgICAgbWVzc2FnZURldGFpbHMucHVzaChgdmVyc2lvbj0ke3RoaXMudmVyc2lvbn1gKTtcbiAgICAgICAgY29uc3QgcmVhc29uID0gbWVzc2FnZTtcbiAgICAgICAgbGV0IHVybCA9IFwiXCI7XG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSBFcnJvckNvZGUuTlVNRVJJQ19GQVVMVDoge1xuICAgICAgICAgICAgICAgIHVybCA9IFwiTlVNRVJJQ19GQVVMVFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhdWx0ID0gbWVzc2FnZTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJvdmVyZmxvd1wiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidW5kZXJmbG93XCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkaXZpc2lvbi1ieS16ZXJvXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgKz0gXCItXCIgKyBmYXVsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibmVnYXRpdmUtcG93ZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm5lZ2F0aXZlLXdpZHRoXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgKz0gXCItdW5zdXBwb3J0ZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidW5ib3VuZC1iaXR3aXNlLXJlc3VsdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IFwiLXVuYm91bmQtcmVzdWx0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVycm9yQ29kZS5DQUxMX0VYQ0VQVElPTjpcbiAgICAgICAgICAgIGNhc2UgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9GVU5EUzpcbiAgICAgICAgICAgIGNhc2UgRXJyb3JDb2RlLk1JU1NJTkdfTkVXOlxuICAgICAgICAgICAgY2FzZSBFcnJvckNvZGUuTk9OQ0VfRVhQSVJFRDpcbiAgICAgICAgICAgIGNhc2UgRXJyb3JDb2RlLlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VEOlxuICAgICAgICAgICAgY2FzZSBFcnJvckNvZGUuVFJBTlNBQ1RJT05fUkVQTEFDRUQ6XG4gICAgICAgICAgICBjYXNlIEVycm9yQ29kZS5VTlBSRURJQ1RBQkxFX0dBU19MSU1JVDpcbiAgICAgICAgICAgICAgICB1cmwgPSBjb2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gXCIgWyBTZWU6IGh0dHBzOi9cXC9saW5rcy5ldGhlcnMub3JnL3Y1LWVycm9ycy1cIiArIHVybCArIFwiIF1cIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBtZXNzYWdlICs9IFwiIChcIiArIG1lc3NhZ2VEZXRhaWxzLmpvaW4oXCIsIFwiKSArIFwiKVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIEBUT0RPOiBBbnk/P1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgZXJyb3IucmVhc29uID0gcmVhc29uO1xuICAgICAgICBlcnJvci5jb2RlID0gY29kZTtcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGVycm9yW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3dFcnJvcihtZXNzYWdlLCBjb2RlLCBwYXJhbXMpIHtcbiAgICAgICAgdGhyb3cgdGhpcy5tYWtlRXJyb3IobWVzc2FnZSwgY29kZSwgcGFyYW1zKTtcbiAgICB9XG4gICAgdGhyb3dBcmd1bWVudEVycm9yKG1lc3NhZ2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRocm93RXJyb3IobWVzc2FnZSwgTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULCB7XG4gICAgICAgICAgICBhcmd1bWVudDogbmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSwgY29kZSwgcGFyYW1zKSB7XG4gICAgICAgIGlmICghIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlLCBjb2RlLCBwYXJhbXMpO1xuICAgIH1cbiAgICBhc3NlcnRBcmd1bWVudChjb25kaXRpb24sIG1lc3NhZ2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGlmICghIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhyb3dBcmd1bWVudEVycm9yKG1lc3NhZ2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgY2hlY2tOb3JtYWxpemUobWVzc2FnZSkge1xuICAgICAgICBpZiAobWVzc2FnZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gXCJwbGF0Zm9ybSBtaXNzaW5nIFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9ub3JtYWxpemVFcnJvcikge1xuICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKFwicGxhdGZvcm0gbWlzc2luZyBTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZVwiLCBMb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTiwge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogXCJTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZVwiLCBmb3JtOiBfbm9ybWFsaXplRXJyb3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNoZWNrU2FmZVVpbnQ1Myh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICBpZiAodHlwZW9mICh2YWx1ZSkgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVzc2FnZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gXCJ2YWx1ZSBub3Qgc2FmZVwiO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gMHgxZmZmZmZmZmZmZmZmZikge1xuICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKG1lc3NhZ2UsIExvZ2dlci5lcnJvcnMuTlVNRVJJQ19GQVVMVCwge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogXCJjaGVja1NhZmVJbnRlZ2VyXCIsXG4gICAgICAgICAgICAgICAgZmF1bHQ6IFwib3V0LW9mLXNhZmUtcmFuZ2VcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAlIDEpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlLCBMb2dnZXIuZXJyb3JzLk5VTUVSSUNfRkFVTFQsIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiY2hlY2tTYWZlSW50ZWdlclwiLFxuICAgICAgICAgICAgICAgIGZhdWx0OiBcIm5vbi1pbnRlZ2VyXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjaGVja0FyZ3VtZW50Q291bnQoY291bnQsIGV4cGVjdGVkQ291bnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIjogXCIgKyBtZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWVzc2FnZSA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvdW50IDwgZXhwZWN0ZWRDb3VudCkge1xuICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKFwibWlzc2luZyBhcmd1bWVudFwiICsgbWVzc2FnZSwgTG9nZ2VyLmVycm9ycy5NSVNTSU5HX0FSR1VNRU5ULCB7XG4gICAgICAgICAgICAgICAgY291bnQ6IGNvdW50LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkQ291bnQ6IGV4cGVjdGVkQ291bnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3VudCA+IGV4cGVjdGVkQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihcInRvbyBtYW55IGFyZ3VtZW50c1wiICsgbWVzc2FnZSwgTG9nZ2VyLmVycm9ycy5VTkVYUEVDVEVEX0FSR1VNRU5ULCB7XG4gICAgICAgICAgICAgICAgY291bnQ6IGNvdW50LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkQ291bnQ6IGV4cGVjdGVkQ291bnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNoZWNrTmV3KHRhcmdldCwga2luZCkge1xuICAgICAgICBpZiAodGFyZ2V0ID09PSBPYmplY3QgfHwgdGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihcIm1pc3NpbmcgbmV3XCIsIExvZ2dlci5lcnJvcnMuTUlTU0lOR19ORVcsIHsgbmFtZToga2luZC5uYW1lIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNoZWNrQWJzdHJhY3QodGFyZ2V0LCBraW5kKSB7XG4gICAgICAgIGlmICh0YXJnZXQgPT09IGtpbmQpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihcImNhbm5vdCBpbnN0YW50aWF0ZSBhYnN0cmFjdCBjbGFzcyBcIiArIEpTT04uc3RyaW5naWZ5KGtpbmQubmFtZSkgKyBcIiBkaXJlY3RseTsgdXNlIGEgc3ViLWNsYXNzXCIsIExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLCB7IG5hbWU6IHRhcmdldC5uYW1lLCBvcGVyYXRpb246IFwibmV3XCIgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGFyZ2V0ID09PSBPYmplY3QgfHwgdGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihcIm1pc3NpbmcgbmV3XCIsIExvZ2dlci5lcnJvcnMuTUlTU0lOR19ORVcsIHsgbmFtZToga2luZC5uYW1lIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBnbG9iYWxMb2dnZXIoKSB7XG4gICAgICAgIGlmICghX2dsb2JhbExvZ2dlcikge1xuICAgICAgICAgICAgX2dsb2JhbExvZ2dlciA9IG5ldyBMb2dnZXIodmVyc2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9nbG9iYWxMb2dnZXI7XG4gICAgfVxuICAgIHN0YXRpYyBzZXRDZW5zb3JzaGlwKGNlbnNvcnNoaXAsIHBlcm1hbmVudCkge1xuICAgICAgICBpZiAoIWNlbnNvcnNoaXAgJiYgcGVybWFuZW50KSB7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbExvZ2dlcigpLnRocm93RXJyb3IoXCJjYW5ub3QgcGVybWFuZW50bHkgZGlzYWJsZSBjZW5zb3JzaGlwXCIsIExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLCB7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBcInNldENlbnNvcnNoaXBcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9wZXJtYW5lbnRDZW5zb3JFcnJvcnMpIHtcbiAgICAgICAgICAgIGlmICghY2Vuc29yc2hpcCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsTG9nZ2VyKCkudGhyb3dFcnJvcihcImVycm9yIGNlbnNvcnNoaXAgcGVybWFuZW50XCIsIExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLCB7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBcInNldENlbnNvcnNoaXBcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgX2NlbnNvckVycm9ycyA9ICEhY2Vuc29yc2hpcDtcbiAgICAgICAgX3Blcm1hbmVudENlbnNvckVycm9ycyA9ICEhcGVybWFuZW50O1xuICAgIH1cbiAgICBzdGF0aWMgc2V0TG9nTGV2ZWwobG9nTGV2ZWwpIHtcbiAgICAgICAgY29uc3QgbGV2ZWwgPSBMb2dMZXZlbHNbbG9nTGV2ZWwudG9Mb3dlckNhc2UoKV07XG4gICAgICAgIGlmIChsZXZlbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBMb2dnZXIuZ2xvYmFsTG9nZ2VyKCkud2FybihcImludmFsaWQgbG9nIGxldmVsIC0gXCIgKyBsb2dMZXZlbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgX2xvZ0xldmVsID0gbGV2ZWw7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tKHZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2dnZXIodmVyc2lvbik7XG4gICAgfVxufVxuTG9nZ2VyLmVycm9ycyA9IEVycm9yQ29kZTtcbkxvZ2dlci5sZXZlbHMgPSBMb2dMZXZlbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJfcGVybWFuZW50Q2Vuc29yRXJyb3JzIiwiX2NlbnNvckVycm9ycyIsIkxvZ0xldmVscyIsImRlYnVnIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsIm9mZiIsIl9sb2dMZXZlbCIsInZlcnNpb24iLCJfZ2xvYmFsTG9nZ2VyIiwiX2NoZWNrTm9ybWFsaXplIiwibWlzc2luZyIsImZvckVhY2giLCJmb3JtIiwibm9ybWFsaXplIiwiRXJyb3IiLCJwdXNoIiwibGVuZ3RoIiwiam9pbiIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIm1lc3NhZ2UiLCJfbm9ybWFsaXplRXJyb3IiLCJMb2dMZXZlbCIsIkVycm9yQ29kZSIsIkhFWCIsIkxvZ2dlciIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwidmFsdWUiLCJ3cml0YWJsZSIsIl9sb2ciLCJsb2dMZXZlbCIsImFyZ3MiLCJsZXZlbCIsInRvTG93ZXJDYXNlIiwidGhyb3dBcmd1bWVudEVycm9yIiwiY29uc29sZSIsImxvZyIsImFwcGx5IiwibGV2ZWxzIiwiREVCVUciLCJJTkZPIiwid2FybiIsIldBUk5JTkciLCJtYWtlRXJyb3IiLCJjb2RlIiwicGFyYW1zIiwiZXJyb3JzIiwiVU5LTk9XTl9FUlJPUiIsIm1lc3NhZ2VEZXRhaWxzIiwia2V5cyIsImtleSIsIlVpbnQ4QXJyYXkiLCJoZXgiLCJpIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvU3RyaW5nIiwicmVhc29uIiwidXJsIiwiTlVNRVJJQ19GQVVMVCIsImZhdWx0IiwiQ0FMTF9FWENFUFRJT04iLCJJTlNVRkZJQ0lFTlRfRlVORFMiLCJNSVNTSU5HX05FVyIsIk5PTkNFX0VYUElSRUQiLCJSRVBMQUNFTUVOVF9VTkRFUlBSSUNFRCIsIlRSQU5TQUNUSU9OX1JFUExBQ0VEIiwiVU5QUkVESUNUQUJMRV9HQVNfTElNSVQiLCJ0aHJvd0Vycm9yIiwibmFtZSIsIklOVkFMSURfQVJHVU1FTlQiLCJhcmd1bWVudCIsImFzc2VydCIsImNvbmRpdGlvbiIsImFzc2VydEFyZ3VtZW50IiwiY2hlY2tOb3JtYWxpemUiLCJVTlNVUFBPUlRFRF9PUEVSQVRJT04iLCJvcGVyYXRpb24iLCJjaGVja1NhZmVVaW50NTMiLCJjaGVja0FyZ3VtZW50Q291bnQiLCJjb3VudCIsImV4cGVjdGVkQ291bnQiLCJNSVNTSU5HX0FSR1VNRU5UIiwiVU5FWFBFQ1RFRF9BUkdVTUVOVCIsImNoZWNrTmV3IiwidGFyZ2V0Iiwia2luZCIsImNoZWNrQWJzdHJhY3QiLCJnbG9iYWxMb2dnZXIiLCJzZXRDZW5zb3JzaGlwIiwiY2Vuc29yc2hpcCIsInBlcm1hbmVudCIsInNldExvZ0xldmVsIiwiZnJvbSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@ethersproject/logger/lib.esm/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@ethersproject/rlp/lib.esm/_version.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/@ethersproject/rlp/lib.esm/_version.js ***!
|
|
\*************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = \"rlp/5.7.0\"; //# sourceMappingURL=_version.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGV0aGVyc3Byb2plY3QvcmxwL2xpYi5lc20vX3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLE1BQU1BLFVBQVUsWUFBWSxDQUNuQyxvQ0FBb0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AZXRoZXJzcHJvamVjdC9ybHAvbGliLmVzbS9fdmVyc2lvbi5qcz9mNmM1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB2ZXJzaW9uID0gXCJybHAvNS43LjBcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV92ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6WyJ2ZXJzaW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@ethersproject/rlp/lib.esm/_version.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@ethersproject/rlp/lib.esm/index.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/@ethersproject/rlp/lib.esm/index.js ***!
|
|
\**********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ decode: () => (/* binding */ decode),\n/* harmony export */ encode: () => (/* binding */ encode)\n/* harmony export */ });\n/* harmony import */ var _ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ethersproject/bytes */ \"(ssr)/./node_modules/@ethersproject/bytes/lib.esm/index.js\");\n/* harmony import */ var _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ethersproject/logger */ \"(ssr)/./node_modules/@ethersproject/logger/lib.esm/index.js\");\n/* harmony import */ var _version__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_version */ \"(ssr)/./node_modules/@ethersproject/rlp/lib.esm/_version.js\");\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\n\n\nconst logger = new _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger(_version__WEBPACK_IMPORTED_MODULE_1__.version);\nfunction arrayifyInteger(value) {\n const result = [];\n while(value){\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for(let i = 0; i < length; i++){\n result = result * 256 + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!(0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.isBytesLike)(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call((0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.arrayify)(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nfunction encode(object) {\n return (0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.hexlify)(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while(childOffset < offset + 1 + length){\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return {\n consumed: 1 + length,\n result: result\n };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = (0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.hexlify)(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return {\n consumed: 1 + lengthLength + length,\n result: result\n };\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", _ethersproject_logger__WEBPACK_IMPORTED_MODULE_0__.Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = (0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.hexlify)(data.slice(offset + 1, offset + 1 + length));\n return {\n consumed: 1 + length,\n result: result\n };\n }\n return {\n consumed: 1,\n result: (0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.hexlify)(data[offset])\n };\n}\nfunction decode(data) {\n const bytes = (0,_ethersproject_bytes__WEBPACK_IMPORTED_MODULE_2__.arrayify)(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGV0aGVyc3Byb2plY3QvcmxwL2xpYi5lc20vaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBYTtBQUNiLGdEQUFnRDtBQUNzQjtBQUN2QjtBQUNWO0FBQ3JDLE1BQU1LLFNBQVMsSUFBSUYseURBQU1BLENBQUNDLDZDQUFPQTtBQUNqQyxTQUFTRSxnQkFBZ0JDLEtBQUs7SUFDMUIsTUFBTUMsU0FBUyxFQUFFO0lBQ2pCLE1BQU9ELE1BQU87UUFDVkMsT0FBT0MsT0FBTyxDQUFDRixRQUFRO1FBQ3ZCQSxVQUFVO0lBQ2Q7SUFDQSxPQUFPQztBQUNYO0FBQ0EsU0FBU0Usa0JBQWtCQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsTUFBTTtJQUMzQyxJQUFJTCxTQUFTO0lBQ2IsSUFBSyxJQUFJTSxJQUFJLEdBQUdBLElBQUlELFFBQVFDLElBQUs7UUFDN0JOLFNBQVMsU0FBVSxNQUFPRyxJQUFJLENBQUNDLFNBQVNFLEVBQUU7SUFDOUM7SUFDQSxPQUFPTjtBQUNYO0FBQ0EsU0FBU08sUUFBUUMsTUFBTTtJQUNuQixJQUFJQyxNQUFNQyxPQUFPLENBQUNGLFNBQVM7UUFDdkIsSUFBSUcsVUFBVSxFQUFFO1FBQ2hCSCxPQUFPSSxPQUFPLENBQUMsU0FBVUMsS0FBSztZQUMxQkYsVUFBVUEsUUFBUUcsTUFBTSxDQUFDUCxRQUFRTTtRQUNyQztRQUNBLElBQUlGLFFBQVFOLE1BQU0sSUFBSSxJQUFJO1lBQ3RCTSxRQUFRVixPQUFPLENBQUMsT0FBT1UsUUFBUU4sTUFBTTtZQUNyQyxPQUFPTTtRQUNYO1FBQ0EsTUFBTU4sU0FBU1AsZ0JBQWdCYSxRQUFRTixNQUFNO1FBQzdDQSxPQUFPSixPQUFPLENBQUMsT0FBT0ksT0FBT0EsTUFBTTtRQUNuQyxPQUFPQSxPQUFPUyxNQUFNLENBQUNIO0lBQ3pCO0lBQ0EsSUFBSSxDQUFDakIsaUVBQVdBLENBQUNjLFNBQVM7UUFDdEJYLE9BQU9rQixrQkFBa0IsQ0FBQyxnQ0FBZ0MsVUFB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LEtBQUtNLE1BQU0xQixNQUFNLEVBQUU7UUFDbkNSLE9BQU9rQixrQkFBa0IsQ0FBQyxvQkFBb0IsUUFBUVo7SUFDMUQ7SUFDQSxPQUFPbUIsUUFBUXRCLE1BQU07QUFDekIsRUFDQSxpQ0FBaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AZXRoZXJzcHJvamVjdC9ybHAvbGliLmVzbS9pbmRleC5qcz8xZDE0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLy9TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS93aWtpL3dpa2kvUkxQXG5pbXBvcnQgeyBhcnJheWlmeSwgaGV4bGlmeSwgaXNCeXRlc0xpa2UgfSBmcm9tIFwiQGV0aGVyc3Byb2plY3QvYnl0ZXNcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCJAZXRoZXJzcHJvamVjdC9sb2dnZXJcIjtcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tIFwiLi9fdmVyc2lvblwiO1xuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcih2ZXJzaW9uKTtcbmZ1bmN0aW9uIGFycmF5aWZ5SW50ZWdlcih2YWx1ZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIHdoaWxlICh2YWx1ZSkge1xuICAgICAgICByZXN1bHQudW5zaGlmdCh2YWx1ZSAmIDB4ZmYpO1xuICAgICAgICB2YWx1ZSA+Pj0gODtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIHVuYXJyYXlpZnlJbnRlZ2VyKGRhdGEsIG9mZnNldCwgbGVuZ3RoKSB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMjU2KSArIGRhdGFbb2Zmc2V0ICsgaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBfZW5jb2RlKG9iamVjdCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICAgICAgbGV0IHBheWxvYWQgPSBbXTtcbiAgICAgICAgb2JqZWN0LmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZC5jb25jYXQoX2VuY29kZShjaGlsZCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoIDw9IDU1KSB7XG4gICAgICAgICAgICBwYXlsb2FkLnVuc2hpZnQoMHhjMCArIHBheWxvYWQubGVuZ3RoKTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGFycmF5aWZ5SW50ZWdlcihwYXlsb2FkLmxlbmd0aCk7XG4gICAgICAgIGxlbmd0aC51bnNoaWZ0KDB4ZjcgKyBsZW5ndGgubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGxlbmd0aC5jb25jYXQocGF5bG9hZCk7XG4gICAgfVxuICAgIGlmICghaXNCeXRlc0xpa2Uob2JqZWN0KSkge1xuICAgICAgICBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKFwiUkxQIG9iamVjdCBtdXN0IGJlIEJ5dGVzTGlrZVwiLCBcIm9iamVjdFwiLCBvYmplY3QpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlpZnkob2JqZWN0KSk7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAxICYmIGRhdGFbMF0gPD0gMHg3Zikge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZGF0YS5sZW5ndGggPD0gNTUpIHtcbiAgICAgICAgZGF0YS51bnNoaWZ0KDB4ODAgKyBkYXRhLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBsZW5ndGggPSBhcnJheWlmeUludGVnZXIoZGF0YS5sZW5ndGgpO1xuICAgIGxlbmd0aC51bnNoaWZ0KDB4YjcgKyBsZW5ndGgubGVuZ3RoKTtcbiAgICByZXR1cm4gbGVuZ3RoLmNvbmNhdChkYXRhKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUob2JqZWN0KSB7XG4gICAgcmV0dXJuIGhleGxpZnkoX2VuY29kZShvYmplY3QpKTtcbn1cbmZ1bmN0aW9uIF9kZWNvZGVDaGlsZHJlbihkYXRhLCBvZmZzZXQsIGNoaWxkT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICB3aGlsZSAoY2hpbGRPZmZzZXQgPCBvZmZzZXQgKyAxICsgbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRlY29kZWQgPSBfZGVjb2RlKGRhdGEsIGNoaWxkT2Zmc2V0KTtcbiAgICAgICAgcmVzdWx0LnB1c2goZGVjb2RlZC5yZXN1bHQpO1xuICAgICAgICBjaGlsZE9mZnNldCArPSBkZWNvZGVkLmNvbnN1bWVkO1xuICAgICAgICBpZiAoY2hpbGRPZmZzZXQgPiBvZmZzZXQgKyAxICsgbGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dnZXIudGhyb3dFcnJvcihcImNoaWxkIGRhdGEgdG9vIHNob3J0XCIsIExvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4sIHt9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBjb25zdW1lZDogKDEgKyBsZW5ndGgpLCByZXN1bHQ6IHJlc3VsdCB9O1xufVxuLy8gcmV0dXJucyB7IGNvbnN1bWVkOiBudW1iZXIsIHJlc3VsdDogT2JqZWN0IH1cbmZ1bmN0aW9uIF9kZWNvZGUoZGF0YSwgb2Zmc2V0KSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGxvZ2dlci50aHJvd0Vycm9yKFwiZGF0YSB0b28gc2hvcnRcIiwgTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTiwge30pO1xuICAgIH1cbiAgICAvLyBBcnJheSB3aXRoIGV4dHJhIGxlbmd0aCBwcmVmaXhcbiAgICBpZiAoZGF0YVtvZmZzZXRdID49IDB4ZjgpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoTGVuZ3RoID0gZGF0YVtvZmZzZXRdIC0gMHhmNztcbiAgICAgICAgaWYgKG9mZnNldCArIDEgKyBsZW5ndGhMZW5ndGggPiBkYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgbG9nZ2VyLnRocm93RXJyb3IoXCJkYXRhIHNob3J0IHNlZ21lbnQgdG9vIHNob3J0XCIsIExvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGggPSB1bmFycmF5aWZ5SW50ZWdlcihkYXRhLCBvZmZzZXQgKyAxLCBsZW5ndGhMZW5ndGgpO1xuICAgICAgICBpZiAob2Zmc2V0ICsgMSArIGxlbmd0aExlbmd0aCArIGxlbmd0aCA+IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dnZXIudGhyb3dFcnJvcihcImRhdGEgbG9uZyBzZWdtZW50IHRvbyBzaG9ydFwiLCBMb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLCB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9kZWNvZGVDaGlsZHJlbihkYXRhLCBvZmZzZXQsIG9mZnNldCArIDEgKyBsZW5ndGhMZW5ndGgsIGxlbmd0aExlbmd0aCArIGxlbmd0aCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGRhdGFbb2Zmc2V0XSA+PSAweGMwKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGRhdGFbb2Zmc2V0XSAtIDB4YzA7XG4gICAgICAgIGlmIChvZmZzZXQgKyAxICsgbGVuZ3RoID4gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxvZ2dlci50aHJvd0Vycm9yKFwiZGF0YSBhcnJheSB0b28gc2hvcnRcIiwgTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTiwge30pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfZGVjb2RlQ2hpbGRyZW4oZGF0YSwgb2Zmc2V0LCBvZmZzZXQgKyAxLCBsZW5ndGgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChkYXRhW29mZnNldF0gPj0gMHhiOCkge1xuICAgICAgICBjb25zdCBsZW5ndGhMZW5ndGggPSBkYXRhW29mZnNldF0gLSAweGI3O1xuICAgICAgICBpZiAob2Zmc2V0ICsgMSArIGxlbmd0aExlbmd0aCA+IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dnZXIudGhyb3dFcnJvcihcImRhdGEgYXJyYXkgdG9vIHNob3J0XCIsIExvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGggPSB1bmFycmF5aWZ5SW50ZWdlcihkYXRhLCBvZmZzZXQgKyAxLCBsZW5ndGhMZW5ndGgpO1xuICAgICAgICBpZiAob2Zmc2V0ICsgMSArIGxlbmd0aExlbmd0aCArIGxlbmd0aCA+IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dnZXIudGhyb3dFcnJvcihcImRhdGEgYXJyYXkgdG9vIHNob3J0XCIsIExvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBoZXhsaWZ5KGRhdGEuc2xpY2Uob2Zmc2V0ICsgMSArIGxlbmd0aExlbmd0aCwgb2Zmc2V0ICsgMSArIGxlbmd0aExlbmd0aCArIGxlbmd0aCkpO1xuICAgICAgICByZXR1cm4geyBjb25zdW1lZDogKDEgKyBsZW5ndGhMZW5ndGggKyBsZW5ndGgpLCByZXN1bHQ6IHJlc3VsdCB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChkYXRhW29mZnNldF0gPj0gMHg4MCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBkYXRhW29mZnNldF0gLSAweDgwO1xuICAgICAgICBpZiAob2Zmc2V0ICsgMSArIGxlbmd0aCA+IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dnZXIudGhyb3dFcnJvcihcImRhdGEgdG9vIHNob3J0XCIsIExvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBoZXhsaWZ5KGRhdGEuc2xpY2Uob2Zmc2V0ICsgMSwgb2Zmc2V0ICsgMSArIGxlbmd0aCkpO1xuICAgICAgICByZXR1cm4geyBjb25zdW1lZDogKDEgKyBsZW5ndGgpLCByZXN1bHQ6IHJlc3VsdCB9O1xuICAgIH1cbiAgICByZXR1cm4geyBjb25zdW1lZDogMSwgcmVzdWx0OiBoZXhsaWZ5KGRhdGFbb2Zmc2V0XSkgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoZGF0YSkge1xuICAgIGNvbnN0IGJ5dGVzID0gYXJyYXlpZnkoZGF0YSk7XG4gICAgY29uc3QgZGVjb2RlZCA9IF9kZWNvZGUoYnl0ZXMsIDApO1xuICAgIGlmIChkZWNvZGVkLmNvbnN1bWVkICE9PSBieXRlcy5sZW5ndGgpIHtcbiAgICAgICAgbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihcImludmFsaWQgcmxwIGRhdGFcIiwgXCJkYXRhXCIsIGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGVjb2RlZC5yZXN1bHQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOlsiYXJyYXlpZnkiLCJoZXhsaWZ5IiwiaXNCeXRlc0xpa2UiLCJMb2dnZXIiLCJ2ZXJzaW9uIiwibG9nZ2VyIiwiYXJyYXlpZnlJbnRlZ2VyIiwidmFsdWUiLCJyZXN1bHQiLCJ1bnNoaWZ0IiwidW5hcnJheWlmeUludGVnZXIiLCJkYXRhIiwib2Zmc2V0IiwibGVuZ3RoIiwiaSIsIl9lbmNvZGUiLCJvYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJwYXlsb2FkIiwiZm9yRWFjaCIsImNoaWxkIiwiY29uY2F0IiwidGhyb3dBcmd1bWVudEVycm9yIiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiZW5jb2RlIiwiX2RlY29kZUNoaWxkcmVuIiwiY2hpbGRPZmZzZXQiLCJkZWNvZGVkIiwiX2RlY29kZSIsInB1c2giLCJjb25zdW1lZCIsInRocm93RXJyb3IiLCJlcnJvcnMiLCJCVUZGRVJfT1ZFUlJVTiIsImxlbmd0aExlbmd0aCIsImRlY29kZSIsImJ5dGVzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@ethersproject/rlp/lib.esm/index.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |